共用方式為


MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 例程

RDBSS 會呼叫 MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 例程,要求網路迷你重新導向器移除檔案物件上保留的多個鎖定。

語法

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE];

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

參數

RxContext [in, out]
RX_CONTEXT 結構的指標。 此參數包含要求作業的 IRP。

傳回值

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 會在成功或適當的 NTSTATUS 值時傳回STATUS_SUCCESS,例如下列其中一項:

傳回碼 Description
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 會呼叫 MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] ,以使用IRP_MN_UNLOCK_ALL或IRP_MN_UNLOCK_ALL_BY_KEY的次要程式碼來接收 IRP_MJ_LOCK_CONTROL 要求。

在呼叫 MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]之前,RDBSS 會修改 RxContext 參數所指向之RX_CONTEXT結構中的下列成員:

LowIoContext.Operation 成員會設定為 LOWIO_OP_UNLOCK_MULTIPLE。

LowIoContext.ResourceThreadId 成員會設定為在 RDBSS 中起始作業的進程線程。

LowIoContext.ParamsFor.Locks.LockList 成員會設定為LOWIO_LOCK_LIST元素的清單。 每個元素會指定要解除鎖定的範圍。

要解除鎖定的位元組範圍是在 RX_CONTEXT 結構的 LowIoContext.ParamsFor.Locks.LockList 成員中指定。 LOWIO_LOCK_LIST 結構如下所示:

typedef struct _LOWIO_LOCK_LIST {
  struct  _LOWIO_LOCK_LIST  *Next;
  ULONG  LockNumber;
  RXVBO  ByteOffset;
  LONGLONG  Length;
  ULONG  Key;
  BOOLEAN  ExclusiveLock;
} LOWIO_LOCK_LIST, *PLOWIO_LOCK_LIST;

RX_CONTEXT的 LowIoContext.Operation 成員會指定要執行的低 I/O 作業。 有數個低 I/O 例程可以指向網路迷你重新導向器中的相同例程,因為 LowIoContext.Operation 成員可用來區分所要求的低 I/O 作業。 例如,與檔案鎖定相關的所有 I/O 呼叫都可以在網路迷你重新導向器中呼叫相同的低 I/O 例程,而此例程可以使用 LowIoContext.Operation 成員來區分要求的鎖定和解除鎖定作業。

如果 MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 例程可能需要很長的時間才能完成,網路迷你重新導向器驅動程式應該先釋放 FCB 結構,再起始網路通訊。 您可以藉由呼叫 RxReleaseFcbResourceForThreadInMRx 來釋放 FCB 結構。 當 MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 例程正在處理時,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]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx