Source code of Windows XP (NT5)
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.

249 lines
5.3 KiB

  1. /*++
  2. Copyright (c) 1998-1999 Microsoft Corporation
  3. Module Name:
  4. fastio.h
  5. Abstract:
  6. contains prototypes for functions in fastio.c
  7. Author:
  8. Paul McDaniel (paulmcd) 01-March-2000
  9. Revision History:
  10. --*/
  11. #ifndef _FASTIO_H_
  12. #define _FASTIO_H_
  13. BOOLEAN
  14. SrFastIoCheckIfPossible (
  15. IN struct _FILE_OBJECT *FileObject,
  16. IN PLARGE_INTEGER FileOffset,
  17. IN ULONG Length,
  18. IN BOOLEAN Wait,
  19. IN ULONG LockKey,
  20. IN BOOLEAN CheckForReadOperation,
  21. OUT PIO_STATUS_BLOCK IoStatus,
  22. IN struct _DEVICE_OBJECT *DeviceObject
  23. );
  24. BOOLEAN
  25. SrFastIoRead (
  26. IN struct _FILE_OBJECT *FileObject,
  27. IN PLARGE_INTEGER FileOffset,
  28. IN ULONG Length,
  29. IN BOOLEAN Wait,
  30. IN ULONG LockKey,
  31. OUT PVOID Buffer,
  32. OUT PIO_STATUS_BLOCK IoStatus,
  33. IN struct _DEVICE_OBJECT *DeviceObject
  34. );
  35. BOOLEAN
  36. SrFastIoWrite (
  37. IN struct _FILE_OBJECT *FileObject,
  38. IN PLARGE_INTEGER FileOffset,
  39. IN ULONG Length,
  40. IN BOOLEAN Wait,
  41. IN ULONG LockKey,
  42. IN PVOID Buffer,
  43. OUT PIO_STATUS_BLOCK IoStatus,
  44. IN struct _DEVICE_OBJECT *DeviceObject
  45. );
  46. BOOLEAN
  47. SrFastIoQueryBasicInfo (
  48. IN struct _FILE_OBJECT *FileObject,
  49. IN BOOLEAN Wait,
  50. OUT PFILE_BASIC_INFORMATION Buffer,
  51. OUT PIO_STATUS_BLOCK IoStatus,
  52. IN struct _DEVICE_OBJECT *DeviceObject
  53. );
  54. BOOLEAN
  55. SrFastIoQueryStandardInfo (
  56. IN struct _FILE_OBJECT *FileObject,
  57. IN BOOLEAN Wait,
  58. OUT PFILE_STANDARD_INFORMATION Buffer,
  59. OUT PIO_STATUS_BLOCK IoStatus,
  60. IN struct _DEVICE_OBJECT *DeviceObject
  61. );
  62. BOOLEAN
  63. SrFastIoLock (
  64. IN struct _FILE_OBJECT *FileObject,
  65. IN PLARGE_INTEGER FileOffset,
  66. IN PLARGE_INTEGER Length,
  67. PEPROCESS ProcessId,
  68. ULONG Key,
  69. BOOLEAN FailImmediately,
  70. BOOLEAN ExclusiveLock,
  71. OUT PIO_STATUS_BLOCK IoStatus,
  72. IN struct _DEVICE_OBJECT *DeviceObject
  73. );
  74. BOOLEAN
  75. SrFastIoUnlockSingle (
  76. IN struct _FILE_OBJECT *FileObject,
  77. IN PLARGE_INTEGER FileOffset,
  78. IN PLARGE_INTEGER Length,
  79. PEPROCESS ProcessId,
  80. ULONG Key,
  81. OUT PIO_STATUS_BLOCK IoStatus,
  82. IN struct _DEVICE_OBJECT *DeviceObject
  83. );
  84. BOOLEAN
  85. SrFastIoUnlockAll (
  86. IN struct _FILE_OBJECT *FileObject,
  87. PEPROCESS ProcessId,
  88. OUT PIO_STATUS_BLOCK IoStatus,
  89. IN struct _DEVICE_OBJECT *DeviceObject
  90. );
  91. BOOLEAN
  92. SrFastIoUnlockAllByKey (
  93. IN struct _FILE_OBJECT *FileObject,
  94. PVOID ProcessId,
  95. ULONG Key,
  96. OUT PIO_STATUS_BLOCK IoStatus,
  97. IN struct _DEVICE_OBJECT *DeviceObject
  98. );
  99. BOOLEAN
  100. SrFastIoDeviceControl (
  101. IN struct _FILE_OBJECT *FileObject,
  102. IN BOOLEAN Wait,
  103. IN PVOID InputBuffer OPTIONAL,
  104. IN ULONG InputBufferLength,
  105. OUT PVOID OutputBuffer OPTIONAL,
  106. IN ULONG OutputBufferLength,
  107. IN ULONG IoControlCode,
  108. OUT PIO_STATUS_BLOCK IoStatus,
  109. IN struct _DEVICE_OBJECT *DeviceObject
  110. );
  111. VOID
  112. SrFastIoDetachDevice (
  113. IN struct _DEVICE_OBJECT *AttachedDevice,
  114. IN struct _DEVICE_OBJECT *DeviceDeleted
  115. );
  116. BOOLEAN
  117. SrFastIoQueryNetworkOpenInfo (
  118. IN struct _FILE_OBJECT *FileObject,
  119. IN BOOLEAN Wait,
  120. OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer,
  121. OUT struct _IO_STATUS_BLOCK *IoStatus,
  122. IN struct _DEVICE_OBJECT *DeviceObject
  123. );
  124. BOOLEAN
  125. SrFastIoMdlRead (
  126. IN struct _FILE_OBJECT *FileObject,
  127. IN PLARGE_INTEGER FileOffset,
  128. IN ULONG Length,
  129. IN ULONG LockKey,
  130. OUT PMDL *MdlChain,
  131. OUT PIO_STATUS_BLOCK IoStatus,
  132. IN struct _DEVICE_OBJECT *DeviceObject
  133. );
  134. BOOLEAN
  135. SrFastIoMdlReadComplete (
  136. IN struct _FILE_OBJECT *FileObject,
  137. IN PMDL MdlChain,
  138. IN struct _DEVICE_OBJECT *DeviceObject
  139. );
  140. BOOLEAN
  141. SrFastIoPrepareMdlWrite (
  142. IN struct _FILE_OBJECT *FileObject,
  143. IN PLARGE_INTEGER FileOffset,
  144. IN ULONG Length,
  145. IN ULONG LockKey,
  146. OUT PMDL *MdlChain,
  147. OUT PIO_STATUS_BLOCK IoStatus,
  148. IN struct _DEVICE_OBJECT *DeviceObject
  149. );
  150. BOOLEAN
  151. SrFastIoMdlWriteComplete (
  152. IN struct _FILE_OBJECT *FileObject,
  153. IN PLARGE_INTEGER FileOffset,
  154. IN PMDL MdlChain,
  155. IN struct _DEVICE_OBJECT *DeviceObject
  156. );
  157. BOOLEAN
  158. SrFastIoReadCompressed (
  159. IN struct _FILE_OBJECT *FileObject,
  160. IN PLARGE_INTEGER FileOffset,
  161. IN ULONG Length,
  162. IN ULONG LockKey,
  163. OUT PVOID Buffer,
  164. OUT PMDL *MdlChain,
  165. OUT PIO_STATUS_BLOCK IoStatus,
  166. OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
  167. IN ULONG CompressedDataInfoLength,
  168. IN struct _DEVICE_OBJECT *DeviceObject
  169. );
  170. BOOLEAN
  171. SrFastIoWriteCompressed (
  172. IN struct _FILE_OBJECT *FileObject,
  173. IN PLARGE_INTEGER FileOffset,
  174. IN ULONG Length,
  175. IN ULONG LockKey,
  176. IN PVOID Buffer,
  177. OUT PMDL *MdlChain,
  178. OUT PIO_STATUS_BLOCK IoStatus,
  179. IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
  180. IN ULONG CompressedDataInfoLength,
  181. IN struct _DEVICE_OBJECT *DeviceObject
  182. );
  183. BOOLEAN
  184. SrFastIoMdlReadCompleteCompressed (
  185. IN struct _FILE_OBJECT *FileObject,
  186. IN PMDL MdlChain,
  187. IN struct _DEVICE_OBJECT *DeviceObject
  188. );
  189. BOOLEAN
  190. SrFastIoMdlWriteCompleteCompressed (
  191. IN struct _FILE_OBJECT *FileObject,
  192. IN PLARGE_INTEGER FileOffset,
  193. IN PMDL MdlChain,
  194. IN struct _DEVICE_OBJECT *DeviceObject
  195. );
  196. BOOLEAN
  197. SrFastIoQueryOpen (
  198. IN struct _IRP *Irp,
  199. OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation,
  200. IN struct _DEVICE_OBJECT *DeviceObject
  201. );
  202. NTSTATUS
  203. SrPreAcquireForSectionSynchronization (
  204. IN PFS_FILTER_CALLBACK_DATA Data,
  205. OUT PVOID *CompletionContext
  206. );
  207. #endif // _FASTIO_H_