74 lines
2.4 KiB
C++
74 lines
2.4 KiB
C++
// Gemplus (C) 1999
|
|
// Version 1.0
|
|
// Author: Sergey Ivanov
|
|
// Date of creation - 18.05.1999
|
|
// Change log:
|
|
//
|
|
|
|
#ifndef IRP_INT
|
|
#define IRP_INT
|
|
#include "generic.h"
|
|
|
|
#pragma PAGEDCODE
|
|
class CIrp;
|
|
// Interface to general system services...
|
|
class CIrp
|
|
{
|
|
public:
|
|
NTSTATUS m_Status;
|
|
SAFE_DESTRUCTORS();
|
|
virtual VOID dispose(){self_delete();};
|
|
protected:
|
|
CIrp(){};
|
|
virtual ~CIrp(){};
|
|
public:
|
|
|
|
virtual PIRP allocate(CCHAR StackSize,BOOLEAN ChargeQuota) {return NULL;};
|
|
virtual VOID initialize(PIRP Irp,USHORT PacketSize,CCHAR StackSize) {};
|
|
virtual USHORT sizeOfIrp(IN CCHAR StackSize) =0;
|
|
|
|
|
|
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
|
|
) {return NULL;};
|
|
|
|
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
|
|
){return NULL;};
|
|
|
|
|
|
virtual PIO_STACK_LOCATION getCurrentStackLocation(PIRP Irp) {return NULL;};
|
|
virtual PIO_STACK_LOCATION getNextStackLocation(PIRP Irp) {return NULL;};
|
|
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 ) {return NULL;};
|
|
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) {};
|
|
|
|
virtual VOID cancel(PIRP Irp) {};
|
|
// Should it go to interrupt??
|
|
virtual VOID requestDpc(PDEVICE_OBJECT DeviceObject,PIRP Irp,PVOID Context) {};
|
|
};
|
|
|
|
#endif//IRP
|