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.

72 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 WDM_IRP_INT
  8. #define WDM_IRP_INT
  9. #include "generic.h"
  10. #include "irp.h"
  11. #pragma PAGEDCODE
  12. class CWDMIrp : public CIrp
  13. {
  14. public:
  15. NTSTATUS m_Status;
  16. SAFE_DESTRUCTORS();
  17. virtual VOID dispose(VOID){self_delete();};
  18. protected:
  19. CWDMIrp(){m_Status = STATUS_SUCCESS;};
  20. virtual ~CWDMIrp(){};
  21. public:
  22. static CIrp* create(VOID);
  23. virtual PIRP allocate(CCHAR StackSize,BOOLEAN ChargeQuota);
  24. virtual VOID initialize(PIRP Irp,USHORT PacketSize,CCHAR StackSize);
  25. virtual USHORT sizeOfIrp(IN CCHAR StackSize);
  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. );
  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. );
  47. virtual PIO_STACK_LOCATION getCurrentStackLocation(PIRP Irp);
  48. virtual PIO_STACK_LOCATION getNextStackLocation(PIRP Irp);
  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 );
  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. // Should it go to interrupt??
  60. virtual VOID requestDpc(PDEVICE_OBJECT DeviceObject,PIRP Irp,PVOID Context);
  61. virtual VOID cancel(PIRP Irp);
  62. };
  63. #endif//WDMIRP