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.

140 lines
3.4 KiB

  1. //---------------------------------------------------------------------------
  2. //
  3. // Module: pins.h
  4. //
  5. // Description: KS Pin Instance
  6. //
  7. //
  8. //@@BEGIN_MSINTERNAL
  9. // Development Team:
  10. // Mike McLaughlin
  11. //
  12. // History: Date Author Comment
  13. //
  14. //@@END_MSINTERNAL
  15. //---------------------------------------------------------------------------
  16. //
  17. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  18. // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  19. // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  20. // PURPOSE.
  21. //
  22. // Copyright (c) 1996-1999 Microsoft Corporation. All Rights Reserved.
  23. //
  24. //---------------------------------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. // Constants and Macros
  27. //---------------------------------------------------------------------------
  28. //---------------------------------------------------------------------------
  29. // Classes
  30. //---------------------------------------------------------------------------
  31. typedef class CPinInstance : public CInstance
  32. {
  33. public:
  34. CPinInstance(
  35. IN PPARENT_INSTANCE pParentInstance
  36. );
  37. ~CPinInstance(
  38. );
  39. static NTSTATUS
  40. PinDispatchCreate(
  41. IN PDEVICE_OBJECT pdo,
  42. IN PIRP pIrp
  43. );
  44. static NTSTATUS
  45. PinDispatchCreateKP(
  46. IN OUT PPIN_INSTANCE pPinInstance,
  47. IN PKSPIN_CONNECT pPinConnect
  48. );
  49. static NTSTATUS
  50. PinDispatchClose(
  51. IN PDEVICE_OBJECT pdo,
  52. IN PIRP pIrp
  53. );
  54. static NTSTATUS
  55. PinDispatchIoControl(
  56. IN PDEVICE_OBJECT pdo,
  57. IN PIRP pIrp
  58. );
  59. static NTSTATUS
  60. PinStateHandler(
  61. IN PIRP pIrp,
  62. IN PKSPROPERTY pProperty,
  63. IN OUT PKSSTATE pState
  64. );
  65. NTSTATUS
  66. GetStartNodeInstance(
  67. OUT PSTART_NODE_INSTANCE *ppStartNodeInstance
  68. );
  69. PARENT_INSTANCE ParentInstance;
  70. PFILTER_INSTANCE pFilterInstance;
  71. PSTART_NODE_INSTANCE pStartNodeInstance;
  72. ULONG ulVolumeNodeNumber;
  73. ULONG PinId;
  74. DefineSignature(0x494E4950); // PINI
  75. } PIN_INSTANCE, *PPIN_INSTANCE;
  76. //---------------------------------------------------------------------------
  77. // Inlines
  78. //---------------------------------------------------------------------------
  79. inline PPIN_INSTANCE
  80. CInstance::GetParentInstance(
  81. )
  82. {
  83. return(CONTAINING_RECORD(
  84. pParentInstance,
  85. PIN_INSTANCE,
  86. ParentInstance));
  87. }
  88. //---------------------------------------------------------------------------
  89. // Local prototypes
  90. //---------------------------------------------------------------------------
  91. NTSTATUS
  92. ForwardIrpNode(
  93. IN PIRP pIrp,
  94. IN PKSIDENTIFIER pKsIdentifier,
  95. IN PFILTER_INSTANCE pFilterInstance,
  96. IN OPTIONAL PPIN_INSTANCE pPinInstance
  97. );
  98. NTSTATUS
  99. GetRelatedStartNodeInstance(
  100. IN PIRP pIrp,
  101. OUT PSTART_NODE_INSTANCE *ppStartNodeInstance
  102. );
  103. NTSTATUS
  104. GetStartNodeInstance(
  105. IN PIRP pIrp,
  106. OUT PSTART_NODE_INSTANCE *ppStartNodeInstance
  107. );
  108. NTSTATUS
  109. GetKsIdentifierFromIrp(
  110. PIRP pIrp,
  111. PKSIDENTIFIER *ppKsIdentifier,
  112. PBOOL pfIsAllocated
  113. );
  114. BOOL
  115. IsIoctlForTopologyNode(
  116. ULONG IoControlCode,
  117. ULONG Flags
  118. );
  119. //---------------------------------------------------------------------------