다음을 통해 공유


MRxLowIOSubmit[LOWIO_OP_UNLOCK] 루틴

MRxLowIOSubmit[LOWIO_OP_UNLOCK] 루틴은 RDBSS에서 호출되어 네트워크 미니 리트리버가 파일 개체에 대한 단일 잠금을 제거하도록 요청합니다.

구문

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK];

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

매개 변수

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

반환 값

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

반환 코드 설명
STATUS_CONNECTION_DISCONNECTED

연결이 끊어졌습니다.

STATUS_INSUFFICIENT_RESOURCES

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

STATUS_INVALID_NETWORK_RESPONSE

원격 서버에서 잘못된 응답을 받았습니다.

STATUS_INVALID_PARAMETER

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

STATUS_LINK_FAILED

원격 서버에 다시 연결하여 요청을 완료하지 못했습니다.

STATUS_NOT_IMPLEMENTED

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

STATUS_SHARING_VIOLATION

공유 위반이 발생했습니다.

STATUS_UNSUCCESSFUL

호출이 실패했습니다.

설명

RDBSS는 IRP_MN_UNLOCK_SINGLE 부 코드로 IRP_MJ_LOCK_CONTROL 요청을 수신하는 것에 대한 응답으로 MRxLowIOSubmit[LOWIO_OP_UNLOCK]를 호출합니다.

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

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

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

LowIoContext.ParamsFor.Locks.ByteOffset 멤버는 IrpSp-Parameters.LockControl.ByteOffset.QuadPart> 값으로 설정됩니다.

LowIoContext.ParamsFor.Locks.Key 멤버는 IrpSp-Parameters.LockControl.Key> 값으로 설정됩니다.

LowIoContext.ParamsFor.Locks.Length 멤버는 IrpSp-Parameters.LockControl.Length.QuadPart> 값으로 설정됩니다.

RX_CONTEXT 구조체의 LowIoContext.Operation 멤버는 수행할 낮은 I/O 작업을 지정합니다. 이 LowIoContext.Operation 멤버를 사용하여 요청된 낮은 I/O 작업을 구분할 수 있으므로 네트워크 미니 리다이렉터에서 여러 낮은 I/O 루틴이 동일한 루틴을 가리킬 수 있습니다. 예를 들어 파일 잠금과 관련된 모든 I/O 호출은 네트워크 미니 리 디렉터에서 동일한 낮은 I/O 루틴을 호출할 수 있으며 이 루틴은 LowIoContext.Operation 멤버를 사용하여 요청된 잠금 및 잠금 해제 작업을 구분할 수 있습니다.

MRxLowIOSubmit[LOWIO_OP_UNLOCK] 루틴을 완료하는 데 시간이 오래 걸릴 수 있는 경우 네트워크 미니 리트리버 드라이버는 네트워크 통신을 시작하기 전에 FCB 구조를 해제해야 합니다. FCB 구조는 RxReleaseFcbResourceForThreadInMRx를 호출하여 해제할 수 있습니다. MRxLowIOSubmit[LOWIO_OP_UNLOCK] 루틴이 처리되는 동안 RX_CONTEXT LowIoContext.ResourceThreadId 멤버는 RDBSS에서 작업을 시작한 프로세스의 스레드를 나타내도록 보장됩니다.

RX_CONTEXT LowIoContext.ResourceThreadId 멤버를 사용하여 다른 스레드를 대신하여 FCB 구조를 해제할 수 있습니다. 비동기 루틴이 완료되면 초기 스레드에서 가져온 FCB 구조를 해제할 수 있습니다.

요구 사항

대상 플랫폼

데스크톱

헤더

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_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx