windows-nt/Source/XPSP1/NT/base/fs/rdr2/inc/lowio.h

87 lines
1.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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_