Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.4 KiB

  1. // Gemplus (C) 1999
  2. // Version 1.0
  3. // Author: Sergey Ivanov
  4. // Date of creation - 18.05.1999
  5. // Change log:
  6. //
  7. #ifndef IRP_INT
  8. #define IRP_INT
  9. #include "generic.h"
  10. #pragma PAGEDCODE
  11. class CIrp;
  12. // Interface to general system services...
  13. class CIrp
  14. {
  15. public:
  16. NTSTATUS m_Status;
  17. SAFE_DESTRUCTORS();
  18. virtual VOID dispose(){self_delete();};
  19. protected:
  20. CIrp(){};
  21. virtual ~CIrp(){};
  22. public:
  23. virtual PIRP allocate(CCHAR StackSize,BOOLEAN ChargeQuota) {return NULL;};
  24. virtual VOID initialize(PIRP Irp,USHORT PacketSize,CCHAR StackSize) {};
  25. virtual USHORT sizeOfIrp(IN CCHAR StackSize) =0;
  26. virtual VOID free(PIRP Irp) {};
  27. virtual PIRP buildDeviceIoControlRequest(
  28. IN ULONG IoControlCode,
  29. IN PDEVICE_OBJECT DeviceObject,
  30. IN PVOID InputBuffer OPTIONAL,
  31. IN ULONG InputBufferLength,
  32. IN OUT PVOID OutputBuffer OPTIONAL,
  33. IN ULONG OutputBufferLength,
  34. IN BOOLEAN InternalDeviceIoControl,
  35. IN PKEVENT Event,
  36. OUT PIO_STATUS_BLOCK IoStatusBlock
  37. ) {return NULL;};
  38. virtual PIRP buildSynchronousFsdRequest(
  39. IN ULONG MajorFunction,
  40. IN PDEVICE_OBJECT DeviceObject,
  41. IN OUT PVOID Buffer OPTIONAL,
  42. IN ULONG Length OPTIONAL,
  43. IN PLARGE_INTEGER StartingOffset OPTIONAL,
  44. IN PKEVENT Event,
  45. OUT PIO_STATUS_BLOCK IoStatusBlock
  46. ){return NULL;};
  47. virtual PIO_STACK_LOCATION getCurrentStackLocation(PIRP Irp) {return NULL;};
  48. virtual PIO_STACK_LOCATION getNextStackLocation(PIRP Irp) {return NULL;};
  49. virtual VOID skipCurrentStackLocation(PIRP Irp) {};
  50. virtual VOID setNextStackLocation(IN PIRP Irp) {};
  51. virtual VOID markPending(PIRP Irp) {};
  52. virtual VOID copyCurrentStackLocationToNext(PIRP Irp) {};
  53. virtual VOID setCompletionRoutine(PIRP Irp, PIO_COMPLETION_ROUTINE Routine,
  54. PVOID Context, BOOLEAN Success, BOOLEAN Error, BOOLEAN Cancel ) {};
  55. virtual PDRIVER_CANCEL setCancelRoutine(PIRP Irp, PDRIVER_CANCEL NewCancelRoutine ) {return NULL;};
  56. virtual VOID completeRequest(PIRP Irp,CCHAR PriorityBoost) {};
  57. virtual VOID startPacket(PDEVICE_OBJECT DeviceObject,PIRP Irp,PULONG Key,PDRIVER_CANCEL CancelFunction) {};
  58. virtual VOID startNextPacket(PDEVICE_OBJECT DeviceObject,BOOLEAN Cancelable) {};
  59. virtual VOID cancel(PIRP Irp) {};
  60. // Should it go to interrupt??
  61. virtual VOID requestDpc(PDEVICE_OBJECT DeviceObject,PIRP Irp,PVOID Context) {};
  62. };
  63. #endif//IRP