SRV_OPEN_ECP_CONTEXT結構 (ntifs.h)

伺服器會使用SRV_OPEN_ECP_CONTEXT結構來有條件地開啟檔案,以回應用戶端要求。

語法

typedef struct _SRV_OPEN_ECP_CONTEXT {
  PUNICODE_STRING       ShareName;
  PSOCKADDR_STORAGE_NFS SocketAddress;
  BOOLEAN               OplockBlockState;
  BOOLEAN               OplockAppState;
  BOOLEAN               OplockFinalState;
  USHORT                Version;
  SRV_INSTANCE_TYPE     InstanceType;
} SRV_OPEN_ECP_CONTEXT, *PSRV_OPEN_ECP_CONTEXT;

成員

ShareName

指向UNICODE_STRING結構的指標,該結構會提供包含要開啟之檔案的伺服器共用名。 此欄位是選擇性的,而且可以是 NULL。

SocketAddress

指定用戶端電腦傳輸位址 之SOCKADDR_STORAGE 結構的指標。 此用戶端源自開啟的檔案要求。 此欄位是選擇性的,而且可以是 NULL。

OplockBlockState

布爾值,指出伺服器消息塊 (SMB) 伺服器是否封鎖等候 oplock 中斷的開啟線程。 TRUE 表示開啟的線程處於封鎖狀態,否則為 FALSE

OplockAppState

布爾值,指出SMB伺服器是否要求具有目前開啟線程的oplock。 設定為 TRUE 以要求 oplock 和 FALSE 否則為 FALSE

OplockFinalState

布爾值,指出檔案開啟作業是否為要求 oplock 的最終檔案開啟作業。 TRUE 表示取得 oplock 的最終檔案開啟作業,否則為 FALSE

Version

這個結構的版本。 此成員已在 Windows 10 1703 版中新增,因此在嘗試存取之前,您必須先檢查該成員是否存在。 如果結構大小為 >= RTL_SIZEOF_THROUGH_FIELD (SRV_OPEN_ECP_CONTEXT 版本) ,您可以存取此欄位。 此成員目前可設定為 SRV_OPEN_ECP_CONTEXT_VERSION_2。

InstanceType

開啟的來源SRV_INSTANCE_TYPE。 附加至 CSVFS 所使用 NTFS 或 ReFS 的文件系統迷你篩選,可以使用此字段來偵測此開啟是否略過 CSVFS。 如果開啟通過 CSVFS,則此 ECP 不存在,或實例類型為 SrvInstanceTypeCsv。 如果開啟會略過 CSVFS 並直接移至隱藏的磁碟區, 則 InstanceType 為 SrvInstanceTypePrimary。 只有在 Version 為 >= SRV_OPEN_ECP_CONTEXT_VERSION_2時,才會顯示 InstanceType 字段。

備註

文件系統堆疊可以判斷SRV_OPEN_ECP_CONTEXT是否附加至建立檔案要求。 然後,文件系統堆疊可以使用 SRV_OPEN_ECP_CONTEXT 中的資訊來判斷要求開啟檔案的用戶端,以及要求檔案的原因。 如需如何擷取附加至建立檔案要求之SRV_OPEN_ECP_CONTEXT額外資訊的相關信息,請參閱 擷取 ECP

SRV_OPEN_ECP_CONTEXT 結構是唯讀的。 您應該使用它來擷取伺服器僅開啟 ECP 的相關信息。 如需此問題的詳細資訊,請參閱 系統定義的 ECP

oplock 狀態值 (OplockBlockStateOplockAppStateOplockFinalState) 會搭配 Oplock 中斷邏輯搭配 SMB 和 SMB2 的系統管理。

規格需求

需求
最低支援的用戶端 從 Windows 7 開始,即可使用此結構。
標頭 ntifs.h (包含 Ntifs.h)

另請參閱

SOCKADDR_STORAGE

SRV_INSTANCE_TYPE

UNICODE_STRING