MRxLowIOSubmit[LOWIO_OP_READ] 루틴
MRxLowIOSubmit[LOWIO_OP_READ] 루틴은 RDBSS에서 네트워크 미니 리디렉션자에 대한 읽기 요청을 발급하기 위해 호출됩니다.
구문
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_READ](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
매개 변수
RxContext [in, out]
RX_CONTEXT 구조체에 대한 포인터입니다. 이 매개 변수에는 작업을 요청하는 IRP가 포함되어 있습니다.
반환 값
MRxLowIOSubmit[LOWIO_OP_READ] 는 성공 시 STATUS_SUCCESS 반환하거나 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 설명 |
---|---|
STATUS_FILE_CLOSED | FCB 구조를 획득했지만 연결된 SRV_OPEN 구조가 닫혔습니다. |
STATUS_INSUFFICIENT_RESOURCES | 요청을 완료할 리소스가 부족했습니다. |
STATUS_INVALID_DEVICE_REQUEST | 잘못된 디바이스 요청이 지정되었습니다. |
STATUS_INVALID_PARAMETER | 잘못된 매개 변수가 RxContext에 지정되었습니다. |
STATUS_NOT_IMPLEMENTED | 이 루틴은 구현되지 않습니다. |
STATUS_NOT_SUPPORTED | 지정된 요청은 네트워크 미니 리다이렉터에서 지원되지 않습니다. |
설명
RDBSS는 IRP_MJ_READ 요청 수신에 대한 응답으로 MRxLowIOSubmit[LOWIO_OP_READ]를 호출합니다.
MRxLowIOSubmit[LOWIO_OP_READ]를 호출하기 전에 RDBSS는 RxContext 매개 변수가 가리키는 RX_CONTEXT 구조에서 다음 멤버를 수정합니다.
LowIoContext.Operation 멤버가 LOWIO_OP_READ 설정됩니다.
LowIoContext.ResourceThreadId 멤버는 RDBSS에서 작업을 시작한 프로세스의 스레드로 설정됩니다.
LowIoContext.ParamsFor.ReadWrite.Key 멤버는 IrpSp-Parameters.Read.Key> 값으로 설정됩니다.
ParamsFor.ReadWrite.Flags 멤버에는 Irp-Flags>에 IRP_PAGING_IO 비트가 있는 경우 LOWIO_READWRITEFLAG_PAGING_IO 비트가 설정됩니다.
ParamsFor.ReadWrite.Buffer 멤버는 IoReadAccess에 대해 잠긴 사용자 버퍼로 설정됩니다.
LowIoContext.ParamsFor.ReadWrite.ByteCount 멤버는 IrpSp-Parameters.Read.Length> 값으로 설정됩니다.
읽기 요청은 일반적으로 상당한 시간이 걸릴 수 있으므로 네트워크 미니 리디렉터에서 비동기 작업으로 구현됩니다. 작업은 일반적으로 원격 서버에 네트워크 요청을 보내는 것으로 구성됩니다. 응답은 서버에서 읽기 요청이 완료될 때 가져옵니다. 네트워크 미니 리디렉션자가 로컬에서 시작된 취소를 처리하기 위한 컨텍스트를 등록해야 할 수 있는 작업의 예입니다.
MRxLowIOSubmit[LOWIO_OP_READ] 루틴이 처리되는 동안 RX_CONTEXT LowIoContext.ResourceThreadId 멤버는 RDBSS에서 작업을 시작한 프로세스의 스레드를 나타내도록 보장됩니다. LowIoContext.ResourceThreadId 멤버를 사용하여 다른 스레드를 대신하여 FCB 구조를 해제할 수 있습니다. 비동기 루틴이 완료되면 초기 스레드에서 가져온 FCB 구조를 해제할 수 있습니다. FCB 구조는 RxReleaseFcbResourceForThreadInMRx를 호출하여 해제할 수 있습니다.
요구 사항
대상 플랫폼 |
데스크톱 |
헤더 |
Mrx.h(Mrx.h 포함) |
추가 정보
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]