windows-nt/Source/XPSP1/NT/drivers/smartcrd/gempc430/wdmirp.h
2020-09-26 16:20:57 +08:00

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