73 lines
2.3 KiB
C++
73 lines
2.3 KiB
C++
// Gemplus (C) 1999
|
|
// Version 1.0
|
|
// Author: Sergey Ivanov
|
|
// Date of creation - 18.05.1999
|
|
// Change log:
|
|
//
|
|
|
|
#ifndef WDM_IRP_INT
|
|
#define WDM_IRP_INT
|
|
#include "generic.h"
|
|
#include "irp.h"
|
|
|
|
#pragma PAGEDCODE
|
|
class CWDMIrp : public CIrp
|
|
{
|
|
public:
|
|
NTSTATUS m_Status;
|
|
SAFE_DESTRUCTORS();
|
|
virtual VOID dispose(VOID){self_delete();};
|
|
protected:
|
|
CWDMIrp(){m_Status = STATUS_SUCCESS;};
|
|
virtual ~CWDMIrp(){};
|
|
public:
|
|
static CIrp* create(VOID);
|
|
|
|
virtual PIRP allocate(CCHAR StackSize,BOOLEAN ChargeQuota);
|
|
virtual VOID initialize(PIRP Irp,USHORT PacketSize,CCHAR StackSize);
|
|
virtual USHORT sizeOfIrp(IN CCHAR StackSize);
|
|
|
|
virtual VOID free(PIRP Irp);
|
|
virtual PIRP buildDeviceIoControlRequest(
|
|
IN ULONG IoControlCode,
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PVOID InputBuffer OPTIONAL,
|
|
IN ULONG InputBufferLength,
|
|
IN OUT PVOID OutputBuffer OPTIONAL,
|
|
IN ULONG OutputBufferLength,
|
|
IN BOOLEAN InternalDeviceIoControl,
|
|
IN PKEVENT Event,
|
|
OUT PIO_STATUS_BLOCK IoStatusBlock
|
|
);
|
|
|
|
virtual PIRP buildSynchronousFsdRequest(
|
|
IN ULONG MajorFunction,
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PVOID Buffer OPTIONAL,
|
|
IN ULONG Length OPTIONAL,
|
|
IN PLARGE_INTEGER StartingOffset OPTIONAL,
|
|
IN PKEVENT Event,
|
|
OUT PIO_STATUS_BLOCK IoStatusBlock
|
|
);
|
|
|
|
virtual PIO_STACK_LOCATION getCurrentStackLocation(PIRP Irp);
|
|
virtual PIO_STACK_LOCATION getNextStackLocation(PIRP Irp);
|
|
virtual VOID skipCurrentStackLocation(PIRP Irp);
|
|
virtual VOID setNextStackLocation(IN PIRP Irp);
|
|
virtual VOID markPending(PIRP Irp);
|
|
virtual VOID copyCurrentStackLocationToNext(PIRP Irp);
|
|
virtual VOID setCompletionRoutine(PIRP Irp, PIO_COMPLETION_ROUTINE Routine,
|
|
PVOID Context, BOOLEAN Success, BOOLEAN Error, BOOLEAN Cancel );
|
|
virtual PDRIVER_CANCEL setCancelRoutine(PIRP Irp, PDRIVER_CANCEL NewCancelRoutine );
|
|
virtual VOID completeRequest(PIRP Irp,CCHAR PriorityBoost);
|
|
virtual VOID startPacket(PDEVICE_OBJECT DeviceObject,PIRP Irp,PULONG Key,PDRIVER_CANCEL CancelFunction);
|
|
virtual VOID startNextPacket(PDEVICE_OBJECT DeviceObject,BOOLEAN Cancelable);
|
|
|
|
// Should it go to interrupt??
|
|
virtual VOID requestDpc(PDEVICE_OBJECT DeviceObject,PIRP Irp,PVOID Context);
|
|
|
|
virtual VOID cancel(PIRP Irp);
|
|
};
|
|
|
|
#endif//WDMIRP
|