다음을 통해 공유


MRxLowIOSubmit[LOWIO_OP_WRITE] 루틴

MRxLowIOSubmit[LOWIO_OP_WRITE] 루틴은 RDBSS에서 네트워크 미니 리트리버에 대한 쓰기 요청을 실행하기 위해 호출됩니다.

구문

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

매개 변수

RxContext [in, out]
RX_CONTEXT 구조체에 대한 포인터입니다. 이 매개 변수에는 작업을 요청하는 IRP가 포함되어 있습니다.

반환 값

MRxLowIOSubmit[LOWIO_OP_WRITE] 는 성공 시 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_WRITE 요청 수신에 대한 응답으로 MRxLowIOSubmit[LOWIO_OP_WRITE]를 호출합니다.

MRxLowIOSubmit[LOWIO_OP_WRITE]를 호출하기 전에 RDBSS는 RxContext 매개 변수가 가리키는 RX_CONTEXT 구조에서 다음 멤버를 수정합니다.

LowIoContext.Operation 멤버가 LOWIO_OP_WRITE 설정됩니다.

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 멤버는 IoWriteAccess에 대해 잠긴 사용자 버퍼로 설정됩니다.

LowIoContext.ParamsFor.ReadWrite.ByteCount 멤버는 IrpSp-Parameters.Write.Length> 값으로 설정됩니다.

쓰기 요청은 일반적으로 상당한 시간이 걸릴 수 있으므로 네트워크 미니 리디렉터에서 비동기 작업으로 구현됩니다. 작업은 일반적으로 원격 서버에 네트워크 요청을 보내는 것으로 구성됩니다. 응답은 서버에서 쓰기 요청이 완료되면 가져옵니다. 네트워크 미니 리다이렉터에서 로컬로 시작된 취소를 처리하기 위한 컨텍스트를 등록해야 하는 작업의 예입니다.

MRxLowIOSubmit[LOWIO_OP_WRITE] 루틴이 처리되는 동안 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_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

RxReleaseFcbResourceForThreadInMRx