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 狀態值 (OplockBlockState、 OplockAppState 和 OplockFinalState) 會搭配 Oplock 中斷邏輯搭配 SMB 和 SMB2 的系統管理。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 7 開始,即可使用此結構。 |
標頭 | ntifs.h (包含 Ntifs.h) |