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.

86 lines
1.7 KiB

  1. /*++
  2. Copyright (c) 1989 Microsoft Corporation
  3. Module Name:
  4. lowio.h
  5. Abstract:
  6. This module defines all of the structures and prototypes for Low IO.
  7. Author:
  8. Joe Linn (JoeLinn) 8-17-94
  9. Revision History:
  10. --*/
  11. #ifndef _RXLOWIO_
  12. #define _RXLOWIO_
  13. #include "mrx.h" // mini redirector related definitions ....
  14. #ifndef WIN9X
  15. extern FAST_MUTEX RxLowIoPagingIoSyncMutex;
  16. #endif
  17. #define RxLowIoIsMdlLocked(MDL) ( \
  18. RxMdlIsLocked((MDL)) || RxMdlSourceIsNonPaged((MDL)) \
  19. )
  20. #define RxLowIoIsBufferLocked(LOWIOCONTEXT) \
  21. ( ((LOWIOCONTEXT)->Operation > LOWIO_OP_WRITE ) || \
  22. ((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer == NULL) || \
  23. ( \
  24. ((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer != NULL) && \
  25. RxLowIoIsMdlLocked(((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer)) \
  26. ) \
  27. )
  28. typedef struct _LOWIO_PER_FCB_INFO {
  29. LIST_ENTRY PagingIoReadsOutstanding;
  30. LIST_ENTRY PagingIoWritesOutstanding;
  31. } LOWIO_PER_FCB_INFO, *PLOWIO_PER_FCB_INFO;
  32. PVOID
  33. NTAPI
  34. RxLowIoGetBufferAddress (
  35. IN PRX_CONTEXT RxContext
  36. );
  37. NTSTATUS
  38. NTAPI
  39. RxLowIoPopulateFsctlInfo (
  40. IN PRX_CONTEXT RxContext
  41. );
  42. NTSTATUS
  43. NTAPI
  44. RxLowIoSubmit(
  45. PRX_CONTEXT RxContext,
  46. PLOWIO_COMPLETION_ROUTINE CompletionRoutine
  47. );
  48. NTSTATUS
  49. NTAPI
  50. RxLowIoCompletion(
  51. PRX_CONTEXT RxContext
  52. );
  53. VOID
  54. NTAPI
  55. RxInitializeLowIoContext(
  56. PLOWIO_CONTEXT LowIoContext,
  57. ULONG Operation
  58. );
  59. VOID
  60. RxInitializeLowIoPerFcbInfo(
  61. PLOWIO_PER_FCB_INFO LowIoPerFcbInfo
  62. );
  63. #endif // _RXLOWIO_
  64.