다음을 통해 공유


MRxLowIOSubmit[LOWIO_OP_IOCTL] 루틴

MRxLowIOSubmit[LOWIO_OP_IOCTL] 루틴은 RDBSS에서 네트워크 미니 리트리버에 대한 I/O 시스템 제어 요청을 발급하기 위해 호출됩니다.

구문

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_IOCTL];

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

매개 변수

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

반환 값

MRxLowIOSubmit[LOWIO_OP_IOCTL] 는 성공 시 STATUS_SUCCESS 반환하거나 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_INSUFFICIENT_RESOURCES

요청을 완료할 리소스가 부족했습니다.

STATUS_INVALID_DEVICE_REQUEST

잘못된 디바이스 요청이 지정되었습니다.

STATUS_INVALID_PARAMETER

잘못된 매개 변수가 RxContext에 지정되었습니다.

STATUS_NOT_IMPLEMENTED

이 루틴은 구현되지 않습니다.

STATUS_NOT_SUPPORTED

지정한 IOCTL은 네트워크 미니 리다이렉터에서 지원되지 않습니다.

설명

RDBSS는 IRP_MJ_DEVICE_CONTROL 또는 IRP_MJ_INTERNAL_DEVICE_CONTROL 요청을 수신하는 응답으로 MRxLowIOSubmit[LOWIO_OP_IOCTL]를 호출 합니다.

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

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

LowIoContext.ResourceThreadId 멤버는 RDBSS에서 작업을 시작한 프로세스의 스레드로 설정됩니다.

LowIoContext.ParamsFor.IoCtl.IoControlCode 멤버가 IOCTL 제어 코드로 설정됩니다.

LowIoContext.ParamsFor.IoCtl.pInputBuffer 멤버가 입력 버퍼로 설정됩니다.

LowIoContext.ParamsFor.IoCtl.InputBufferLength 멤버가 입력 버퍼 길이로 설정됩니다.

LowIoContext.ParamsFor.IoCtl.pOutputBuffer 멤버가 출력 버퍼로 설정됩니다.

LowIoContext.ParamsFor.IoCtl.OutputBufferLength 멤버가 출력 버퍼 길이로 설정됩니다.

MRxLowIOSubmit[LOWIO_OP_IOCTL] 루틴이 처리되는 동안 RX_CONTEXT LowIoContext.ResourceThreadId 멤버는 RDBSS에서 작업을 시작한 프로세스의 스레드를 나타내도록 보장됩니다. RX_CONTEXT LowIoContext.ResourceThreadId 멤버를 사용하여 다른 스레드를 대신하여 입력 리소스를 해제할 수 있습니다. 비동기 루틴이 완료되면 초기 스레드에서 가져온 입력 리소스를 해제할 수 있습니다.

요구 사항

대상 플랫폼

데스크톱

헤더

Mrx.h(Mrx.h 포함)

추가 정보

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_FSCTL]

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]