87 lines
1.7 KiB
C
87 lines
1.7 KiB
C
/*++
|
||
|
||
Copyright (c) 1989 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
lowio.h
|
||
|
||
Abstract:
|
||
|
||
This module defines all of the structures and prototypes for Low IO.
|
||
|
||
Author:
|
||
|
||
Joe Linn (JoeLinn) 8-17-94
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#ifndef _RXLOWIO_
|
||
#define _RXLOWIO_
|
||
|
||
#include "mrx.h" // mini redirector related definitions ....
|
||
|
||
#ifndef WIN9X
|
||
extern FAST_MUTEX RxLowIoPagingIoSyncMutex;
|
||
#endif
|
||
|
||
#define RxLowIoIsMdlLocked(MDL) ( \
|
||
RxMdlIsLocked((MDL)) || RxMdlSourceIsNonPaged((MDL)) \
|
||
)
|
||
|
||
#define RxLowIoIsBufferLocked(LOWIOCONTEXT) \
|
||
( ((LOWIOCONTEXT)->Operation > LOWIO_OP_WRITE ) || \
|
||
((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer == NULL) || \
|
||
( \
|
||
((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer != NULL) && \
|
||
RxLowIoIsMdlLocked(((LOWIOCONTEXT)->ParamsFor.ReadWrite.Buffer)) \
|
||
) \
|
||
)
|
||
|
||
typedef struct _LOWIO_PER_FCB_INFO {
|
||
LIST_ENTRY PagingIoReadsOutstanding;
|
||
LIST_ENTRY PagingIoWritesOutstanding;
|
||
} LOWIO_PER_FCB_INFO, *PLOWIO_PER_FCB_INFO;
|
||
|
||
PVOID
|
||
NTAPI
|
||
RxLowIoGetBufferAddress (
|
||
IN PRX_CONTEXT RxContext
|
||
);
|
||
|
||
NTSTATUS
|
||
NTAPI
|
||
RxLowIoPopulateFsctlInfo (
|
||
IN PRX_CONTEXT RxContext
|
||
);
|
||
|
||
NTSTATUS
|
||
NTAPI
|
||
RxLowIoSubmit(
|
||
PRX_CONTEXT RxContext,
|
||
PLOWIO_COMPLETION_ROUTINE CompletionRoutine
|
||
);
|
||
|
||
NTSTATUS
|
||
NTAPI
|
||
RxLowIoCompletion(
|
||
PRX_CONTEXT RxContext
|
||
);
|
||
|
||
VOID
|
||
NTAPI
|
||
RxInitializeLowIoContext(
|
||
PLOWIO_CONTEXT LowIoContext,
|
||
ULONG Operation
|
||
);
|
||
|
||
VOID
|
||
RxInitializeLowIoPerFcbInfo(
|
||
PLOWIO_PER_FCB_INFO LowIoPerFcbInfo
|
||
);
|
||
|
||
|
||
#endif // _RXLOWIO_
|
||
|