MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 例程
RDBSS 會呼叫 MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 例程,要求網路重新導向器在檔案對象上開啟共用鎖定。
語法
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
參數
RxContext [in, out]
RX_CONTEXT 結構的指標。 此參數包含要求作業的 IRP。
傳回值
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 會在成功或適當的 NTSTATUS 值上傳回STATUS_SUCCESS,例如下列其中一項:
傳回碼 | Description |
---|---|
STATUS_CONNECTION_DISCONNECTED | 線上已中斷連線。 |
STATUS_INSUFFICIENT_RESOURCES | 資源不足,無法完成要求。 |
STATUS_INVALID_BUFFER_SIZE | 要求的緩衝區大小太大。 |
STATUS_INVALID_NETWORK_RESPONSE | 從遠端伺服器收到無效的回應。 |
STATUS_INVALID_PARAMETER | 在 RxContext 中指定了無效的參數。 |
STATUS_LINK_FAILED | 嘗試重新連線到遠端伺服器以完成要求失敗。 |
STATUS_NOT_IMPLEMENTED | 此例程未實作。 |
STATUS_SHARING_VIOLATION | 發生共享違規。 |
STATUS_UNSUCCESSFUL | 話叫失敗。 |
備註
如果 IrpSp-Flags> 沒有設定SL_EXCLUSIVE_LOCK位,RDBSS 會呼叫 MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 以接收IRP_MJ_LOCK_CONTROL要求,且IRP_MN_LOCK次要程式代碼。
呼叫 MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]之前,RDBSS 會修改 RxContext 參數所指向之RX_CONTEXT結構中的下列成員:
LowIoContext.Operation 成員會設定為 LOWIO_OP_SHAREDLOCK。
LowIoContext.ResourceThreadId 成員會設定為在 RDBSS 中起始作業的進程線程。
LowIoContext.ParamsFor.Locks.ByteOffset 成員會設定為 IrpSp-Parameters.LockControl.ByteOffset.QuadPart> 的值。
LowIoContext.ParamsFor.Locks.Key 成員會設定為 IrpSp-Parameters.LockControl.Key> 的值。
LowIoContext.ParamsFor.Locks.Flags 成員會設定為 IrpSp-Flags> 的值。
LowIoContext.ParamsFor.Locks.Length 成員會設定為 IrpSp-Parameters.LockControl.Length.QuadPart> 的值。
RX_CONTEXT 結構的 LowIoContext.Operation 成員會指定要執行的低 I/O 作業。 有數個低 I/O 例程可以指向網路迷你重新導向器中的相同例程,因為 LowIoContext.Operation 成員可用來區分所要求的低 I/O 作業。 例如,與檔案鎖定相關的所有 I/O 呼叫,都可以在網路迷你重新導向器中呼叫相同的低 I/O 例程,而且此例程可以使用 LowIoContext.Operation 成員來區分要求的鎖定和解除鎖定作業。
如果 MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 例程可能需要很長的時間才能完成,網路迷你重新導向器驅動程式應該先釋放 FCB 結構,再起始網路通訊。 您可以呼叫 RxReleaseFcbResourceForThreadInMRx 來釋放 FCB 結構。 雖然 MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] 例程正在處理,但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_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]