共用方式為


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

OplockFinalState

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

Version

這個結構的版本。 此成員已在 Windows 10 版本 1703 中新增,因此在嘗試存取它之前,您必須先檢查它是否存在。 如果結構大小是 >= RTL_SIZEOF_THROUGH_FIELD(SRV_OPEN_ECP_CONTEXT, Version),您可以存取此字段。 此成員目前可以設定為 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的相關信息。 如需此問題的詳細資訊,請參閱 System-Defined ECP

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

要求

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

另請參閱

SOCKADDR_STORAGE

SRV_INSTANCE_TYPE

UNICODE_STRING