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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]