RX_CONTEXT 結構 (rxcontx.h)
RX_CONTEXT結構會封裝 IRP,以供 RDBSS、網路迷你重新導向器和文件系統使用。 RX_CONTEXT結構描述 IRP,同時由網路迷你重新導向器處理,並包含狀態資訊,可讓全域資源在 IRP 完成時釋出。
語法
typedef struct _RX_CONTEXT {
NODE_TYPE_CODE NodeTypeCode;
NODE_BYTE_SIZE NodeByteSize;
__volatile ULONG ReferenceCount;
LIST_ENTRY ContextListEntry;
UCHAR MajorFunction;
UCHAR MinorFunction;
BOOLEAN PendingReturned;
BOOLEAN PostRequest;
PDEVICE_OBJECT RealDevice;
PIRP CurrentIrp;
PIO_STACK_LOCATION CurrentIrpSp;
PMRX_FCB pFcb;
PMRX_FOBX pFobx;
PMRX_SRV_OPEN pRelevantSrvOpen;
PNON_PAGED_FCB NonPagedFcb;
PRDBSS_DEVICE_OBJECT RxDeviceObject;
PETHREAD OriginalThread;
PETHREAD LastExecutionThread;
__volatile PVOID LockManagerContext;
PVOID RdbssDbgExtension;
RX_SCAVENGER_ENTRY ScavengerEntry;
ULONG SerialNumber;
ULONG FobxSerialNumber;
ULONG Flags;
BOOLEAN FcbResourceAcquired;
BOOLEAN FcbPagingIoResourceAcquired;
UCHAR MustSucceedDescriptorNumber;
union {
struct {
union {
NTSTATUS StoredStatus;
PVOID StoredStatusAlignment;
};
ULONG_PTR InformationToReturn;
};
IO_STATUS_BLOCK IoStatusBlock;
};
union {
ULONGLONG ForceLonglongAligmentDummyField;
PVOID MRxContext[MRX_CONTEXT_FIELD_COUNT];
};
PVOID WriteOnlyOpenRetryContext;
PMRX_CALLDOWN MRxCancelRoutine;
PRX_DISPATCH ResumeRoutine;
RX_WORK_QUEUE_ITEM WorkQueueItem;
LIST_ENTRY OverflowListEntry;
KEVENT SyncEvent;
LIST_ENTRY BlockedOperations;
PFAST_MUTEX BlockedOpsMutex;
LIST_ENTRY RxContextSerializationQLinks;
union {
struct {
union {
FS_INFORMATION_CLASS FsInformationClass;
FILE_INFORMATION_CLASS FileInformationClass;
};
PVOID Buffer;
union {
LONG Length;
LONG LengthRemaining;
};
BOOLEAN ReplaceIfExists;
BOOLEAN AdvanceOnly;
} Info;
struct {
UNICODE_STRING SuppliedPathName;
NET_ROOT_TYPE NetRootType;
PIO_SECURITY_CONTEXT pSecurityContext;
} PrefixClaim;
};
union {
struct {
NT_CREATE_PARAMETERS NtCreateParameters;
ULONG ReturnedCreateInformation;
PWCH CanonicalNameBuffer;
PRX_PREFIX_ENTRY NetNamePrefixEntry;
PMRX_SRV_CALL pSrvCall;
PMRX_NET_ROOT pNetRoot;
PMRX_V_NET_ROOT pVNetRoot;
PVOID EaBuffer;
ULONG EaLength;
ULONG SdLength;
ULONG PipeType;
ULONG PipeReadMode;
ULONG PipeCompletionMode;
USHORT Flags;
NET_ROOT_TYPE Type;
UCHAR RdrFlags;
BOOLEAN FcbAcquired;
BOOLEAN TryForScavengingOnSharingViolation;
BOOLEAN ScavengingAlreadyTried;
BOOLEAN ThisIsATreeConnectOpen;
BOOLEAN TreeConnectOpenDeferred;
UNICODE_STRING TransportName;
UNICODE_STRING UserName;
UNICODE_STRING Password;
UNICODE_STRING UserDomainName;
} Create;
struct {
ULONG FileIndex;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
BOOLEAN InitialQuery;
} QueryDirectory;
struct {
PMRX_V_NET_ROOT pVNetRoot;
} NotifyChangeDirectory;
struct {
PUCHAR UserEaList;
ULONG UserEaListLength;
ULONG UserEaIndex;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
} QueryEa;
struct {
SECURITY_INFORMATION SecurityInformation;
ULONG Length;
} QuerySecurity;
struct {
SECURITY_INFORMATION SecurityInformation;
PSECURITY_DESCRIPTOR SecurityDescriptor;
} SetSecurity;
struct {
ULONG Length;
PSID StartSid;
PFILE_GET_QUOTA_INFORMATION SidList;
ULONG SidListLength;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
} QueryQuota;
struct {
ULONG Length;
} SetQuota;
struct {
PV_NET_ROOT VNetRoot;
PSRV_CALL SrvCall;
PNET_ROOT NetRoot;
} DosVolumeFunction;
struct {
ULONG FlagsForLowIo;
LOWIO_CONTEXT LowIoContext;
};
};
PWCH AlsoCanonicalNameBuffer;
PUNICODE_STRING LoudCompletionString;
__volatile LONG AcquireReleaseFcbTrackerX;
__volatile ULONG TrackerHistoryPointer;
RX_FCBTRACKER_CALLINFO TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE];
ULONG ShadowCritOwner;
} RX_CONTEXT, *PRX_CONTEXT;
成員
NodeTypeCode
用於RX_CONTEXT結構的唯一節點類型。 所有主要結構類型 (RX_CONTEXT、SRV_CALL、NET_ROOT、V_NET_ROOT、SRV_OPEN、FCB 和 FOBX,例如 RDBSS 所使用的) 都有 nodetype.h 中定義的唯一雙位元組節點類型程式代碼,其中包含可用於偵錯的檔案。 RDBSS 會在 RxInitializeContext 例程中初始化RX_CONTEXT時,將此成員設定為RDBSS_NTC_RX_CONTEXT。 如果網路迷你重新導向器驅動程式使用其他方法初始化RX_CONTEXT結構,則必須設定此成員。
RDBSS 會將這個成員定義為 RDBSS 所使用之所有結構的標準標頭的一部分。
NodeByteSize
這個 結構的大小,以位元組為單位。 RDBSS 會在 RxInitializeContext 例程中初始化RX_CONTEXT時,將此成員設定為 sizeof ( RX_CONTEXT) 。 如果網路迷你重新導向器驅動程式使用其他方法初始化RX_CONTEXT結構,則必須設定此成員。
RDBSS 會將這個成員定義為 RDBSS 所使用之所有結構的標準標頭的一部分。
ReferenceCount
配置此結構的參考計數。 RDBSS 會在 RxInitializeContext 例程中配置和初始化RX_CONTEXT時,將此成員設定為 1。 如果網路迷你重新導向器驅動程式使用其他方法初始化RX_CONTEXT結構,則必須設定此成員。
RDBSS 會將這個成員定義為 RDBSS 所使用之所有結構的標準標頭的一部分。
ContextListEntry
要將此RX_CONTEXT連線到使用中RX_CONTEXTS清單的清單專案。
MajorFunction
這個RX_CONTEXT所封裝之 IRP 的主要函式。
MinorFunction
這個RX_CONTEXT所封裝之 IRP 的次要函式。
PendingReturned
如果設定為 TRUE,這會指定 RDBSS 或驅動程式已標示 IRP 擱置中。 每個 IoCompletion 例程都應該檢查此旗標的值。 如果旗標為 TRUE,而且 IoCompletion 例程不會傳回STATUS_MORE_PROCESSING_REQUIRED,則例程應該呼叫 IoMarkIrpPending ,將擱置狀態傳播到裝置堆疊中的驅動程式上方。 此成員類似於 IRP 中的相同欄位。
在呼叫網路迷你重新導向器驅動程式之前,RDBSS 一律將此成員設定為 TRUE。
PostRequest
如果設定為 TRUE,這表示相關聯的要求是否要張貼至 RDBSS 背景工作線程。 網路迷你重新導向器可以將此成員設定為 TRUE,以指出它想要將此要求張貼到文件系統進程 (FSP) 。
RealDevice
目標網路迷你重新導向器驅動程式之裝置物件的指標。 RDBSS 會在 RxInitializeContext 例程中配置RX_CONTEXT時,將此成員設定為網路迷你重新導向器驅動程式的裝置物件。 此成員會從 IRP 堆疊的 FileObject-DeviceObject> 成員複製。 網路迷你重新導向器的裝置物件也會儲存在 RxDeviceObject 結構成員中。
RDBSS 目前未使用 RealDevice 成員,但可由網路迷你重新導向器使用。
CurrentIrp
原始 IRP 的指標。 網路迷你重新導向器驅動程式不應使用此成員。
CurrentIrpSp
IRP 堆疊位置的指標。
pFcb
這個 IRP 的關聯檔案控制區塊指標 (FCB) 。
pFobx
這個 IRP 之關聯檔案對象擴展名的指標 (FOBX) 。
pRelevantSrvOpen
針對這個 IRP 開啟 (SRV_OPEN) 關聯伺服器的指標。
NonPagedFcb
這個 IRP 之相關聯非分頁檔控制區塊的指標, (FCB) 。
RxDeviceObject
背景工作佇列演算法所需的目標網路迷你重新導向器驅動程式RDBSS_DEVICE_OBJECT指標。 RDBSS 會在 RxInitializeContext 例程中初始化RX_CONTEXT時,將此成員設定為網路迷你重新導向器的RDBSS_DEVICE_OBJECT。 RxDeviceObject 結構包含 DeviceObject 成員,其中包含網路迷你重新導向器驅動程式的裝置物件,與RX_CONTEXT的 RealDevice 成員相同。
OriginalThread
起始要求之原始線程的指標。
LastExecutionThread
最後一個線程的指標,如果線程已張貼至文件系統進程,就會執行與RX_CONTEXT相關聯的一些處理。
LockManagerContext
鎖定管理員內容的指標。 此成員保留供內部使用。
RdbssDbgExtension
提供給 RDBSS 的內容指標,用於偵錯資訊。 此成員保留供內部使用。
ScavengerEntry
要清除之專案清單的指標。 此成員保留供內部使用。
SerialNumber
這個RX_CONTEXT結構的序號。 第一次初始化結構時,RDBSS 所初始化的每個結構都會指派序號。 這個序號是設定值之前,遞增 1 的數位。 RDBSS 會在 RxInitializeContext 例程中初始化RX_CONTEXT時設定此成員。 RDBSS
FobxSerialNumber
相關聯 FOBX 結構的序號。 第一次初始化結構時,RDBSS 所初始化的每個結構都會指派序號。 網路迷你重新導向器可以使用這個成員來查看多個呼叫是否屬於相同的較大作業,因此更容易快取。
Flags
這個RX_CONTEXT結構的旗標位掩碼。
FcbResourceAcquired
如果設定為 TRUE,這個成員會指定已為此作業取得 FCB 資源。 FCB 資源是與FCB上作業相關聯的其中一個鎖定機制。
FcbPagingIoResourceAcquired
如果設定為 TRUE,這個成員會指定已為此作業取得 FCB 分頁 I/O 資源。 FCB 分頁 I/O 資源是與 FCB 上分頁 I/O 作業相關聯的其中一個鎖定機制。
MustSucceedDescriptorNumber
成員一開始會在 RxCreateRxContext 例程中設定為零。 RDBSS 不會使用這個成員,但網路迷你重新導向器可能會使用此成員。
StoredStatus
StoredStatusAlignment
InformationToReturn
IoStatusBlock
網路迷你重新導向器會使用 I/O 狀態區塊來傳回狀態資訊。 IoStatusBlock 成員是用來傳回狀態資訊之未命名聯集的成員。
ForceLonglongAligmentDummyField
未命名等位的成員,用來強制 在 MRxContext[MRX_CONTEXT_FIELD_COUNT] 成員上正確對齊。
MRxContext[MRX_CONTEXT_FIELD_COUNT]
WriteOnlyOpenRetryContext
指標,可用來儲存網路迷你重新導向器的某些狀態。 RDBSS 不會使用此成員,但可由網路迷你重新導向器驅動程式使用,以指出檔案是在僅寫入句柄上快取。
MRxCancelRoutine
可由網路迷你重新導向器驅動程式設定的取消例程指標。
ResumeRoutine
此成員保留供內部使用。
WorkQueueItem
處理RX_CONTEXT時,網路迷你重新導向器驅動程式可以使用的工作佇列專案的指標。
OverflowListEntry
要於完成時釋放之作業清單前端的指標。 此成員保留供內部使用。
SyncEvent
核心 EVENT 的指標,可由網路迷你重新導向器驅動程式用來等候處理RX_CONTEXT。
BlockedOperations
要於完成時釋放之封鎖作業清單前端的指標。 此成員保留供內部使用。
BlockedOpsMutex
控制已封鎖作業串行化之 Mutex 的指標。 此成員保留供內部使用。
RxContextSerializationQLinks
清單專案的指標,用來根據每個檔案物件串行化管道作業。 此成員保留供內部使用。
Info
用於 MRxQueryDirectory、MRxQueryFileInfo、MRxQueryVolumeInfo、MRxSetFileInfo、MRxSetFileInfoAtCleanup 和 MRxSetVolumeInfo 例程之未命名等位的結構成員。 RDBSS 會將 資訊 結構成員中的資訊傳遞至網路迷你重新導向器,而網路迷你重新導向器會將資訊傳回 至資訊 結構成員中的 RDBSS。
Info.FsInformationClass
RDBSS 用來傳遞要求給網路迷你重新導向器驅動程式之FS_INFORMATION_CLASS類型之未命名的等位成員。 當呼叫 **MrxQueryVolumeInfo ** 和 MrxSetVolumeInfo 時,RDBSS 會在 FsInformationClass 成員中傳遞資訊。
Info.FileInformationClass
RDBSS 用來指出傳送至網路迷你重新導向器驅動程式之FILE_INFORMATION_CLASS要求類型之未命名的等位成員。 當呼叫 MrxQueryDirectory、MrxQueryFileInfo 和 MrxSetFileInfo 時,RDBSS 會在 FileInformationClass 成員中傳遞資訊。
Info.Buffer
緩衝區,用來將數據從 RDBSS 傳遞至網路迷你重新導向器驅動程式,並透過 RDBSS 接收來自網路迷你重新導向器驅動程式的回應。 Buffer 成員用於 MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup 和 MrxSetVolumeInfo 例程中。
Info.Length
未命名等位的成員,用來將 緩衝區 成員的長度從 RDBSS 傳遞至網路迷你重新導向器驅動程式。 Length 成員用於 MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup 和 MrxSetVolumeInfo 例程中。
Info.LengthRemaining
未命名等位的成員,用來將 緩衝區 成員中傳回的信息長度從網路迷你重新導向器驅動程序傳遞至 RDBSS。 LengthRemaining 成員用於 MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup 和 MrxSetVolumeInfo 例程中。
Info.ReplaceIfExists
布爾值,指出是否應該在重新命名作業期間取代現有的檔案。 ReplaceIfExists 成員用於 MrxSetFileInfo 例程中。
Info.AdvanceOnly
此成員保留供內部使用。
PrefixClaim
未命名聯集的結構成員,用於從多個 UNC 提供者傳送的前置詞解析要求, (MUP) 。 前置詞宣告會產生從 MUP 到 RDBSS 的 IRP_MJ_DEVICE_CONTROL 要求,以進行 IOCTL_REDIR_QUERY_PATH 或 IOCTL_REDIR_QUERY_PATH_EX。 RDBSS 會將 PrefixClaim 結構中的資訊傳遞至網路迷你重新導向器,而網路迷你重新導向器會將資訊傳回 PrefixClaim 結構中的 RDBSS。
PrefixClaim.SuppliedPathName
非 NULL 終止的 Unicode 字串,指定要在其中執行前置詞解析的 UNC 路徑。
PrefixClaim.NetRootType
要求的NET_ROOT型別。 目前未使用此成員。 RDBSS 會從 SuppliedPathName 成員推斷NET_ROOT的類型。
PrefixClaim.pSecurityContext
從 MUP 要求傳入之安全性內容的指標。
目前未使用此成員。 安全性內容會傳入RX_CONTEXT的 Create.NtCreateParameters.SecurityContext 成員,而不是在此成員中。
Create
用於處理 IRP_MJ_CREATE 要求之未命名等位的結構成員。 這個成員用於處理導致 呼叫 MRxCreate 例程的檔案開啟要求。 此成員也用於前置詞解析要求。 RDBSS 會將 建立 結構成員中的資訊傳遞至網路迷你重新導向器,而網路迷你重新導向器會將資訊傳回至 建立 結構成員中的 RDBSS。
Create.NtCreateParameters
傳遞至使用者模式 NtCreatefile 例程的 create 參數。 RDBSS 會根據 IRP 的 Parameters.Create 成員,設定 NtCreateParameters 結構的成員。
Create.ReturnedCreateInformation
完成 MRxCreate 呼叫時由網路迷你重新導向器所設定的值。
Create.CanonicalNameBuffer
Unicode 字串的指標,表示標準名稱大於可用緩衝區時要開啟的實體檔名。
Create.NetNamePrefixEntry
NetName 數據表前置詞專案的指標。 此成員保留供內部使用。
Create.pSrvCall
相關聯SRV_CALL結構的指標。
Create.pNetRoot
相關聯NET_ROOT結構的指標。
Create.pVNetRoot
相關聯V_NET_ROOT結構的指標。
Create.EaBuffer
擴充屬性緩衝區的指標。 這個成員是選擇性的。
Create.EaLength
擴充屬性緩衝區的長度 EaBuffer。
Create.SdLength
安全性描述元的長度。 RDBSS 會根據 IRP 的 Parameters.Create.SecurityContext 成員值來設定此值。 如果 SdLength 成員為非零,安全性描述元會傳入 Info.Buffer 成員至網路迷你重新導向器。
Create.PipeType
管道的類型。 此成員保留供內部使用。
Create.PipeReadMode
管道的讀取模式。 此成員保留供內部使用。
Create.PipeCompletionMode
管道的完成模式。 此成員保留供內部使用。
Create.Flags
建立旗標
Create.Type
相關聯NET_ROOT結構的型別。
Create.RdrFlags
Create.FcbAcquired
此成員保留供內部使用。
Create.TryForScavengingOnSharingViolation
此成員保留供內部使用。
Create.ScavengingAlreadyTried
此成員保留供內部使用。
Create.ThisIsATreeConnectOpen
布爾值,指出此呼叫是否為樹狀結構連接開啟要求,以及 IrpSp-Parameters.Create.Options> 成員中設定的 FILE_CREATE_TREE_CONNECTION 選項。
Create.TreeConnectOpenDeferred
布爾值,指出網路迷你重新導向器可以選擇延遲樹狀結構連線開啟要求。
Create.TransportName
代表傳輸名稱的 Unicode 字串。 此成員是從樹狀結構連接開啟的參數設定。
Create.UserName
Unicode 字串,表示負責要求的用戶名稱。 此成員是從樹狀結構連接開啟的參數設定。
Create.Password
Unicode 字串,其中包含用於驗證和授權的這個 UserName 密碼。 此成員是從樹狀結構連接開啟的參數設定。
Create.UserDomainName
Unicode 字串,其中包含此 UserName 的功能變數名稱。
QueryDirectory
用於處理 IRP_MJ_DIRECTORY_CONTROL 要求之未命名等位的結構成員。 這個成員用於處理導致 呼叫 MrxQueryDirectory 例程的查詢目錄要求。 RDBSS 會將 QueryDirectory 結構成員中的資訊傳遞至網路迷你重新導向器。
QueryDirectory.FileIndex
如果 IndexSpecified 成員設定為 TRUE,則開始掃描目錄之專案的 Index。 此參數設定為 IrpSp-Parameters.QueryDirectory.FileIndex> 成員。
QueryDirectory.RestartScan
當設定為 TRUE 時,布爾值表示掃描是從目錄中的第一個項目開始。 當此值設定為 FALSE 時,掃描會從先前的呼叫繼續。 第一次呼叫時,此參數必須設定為 TRUE。 如果 IrpSp-Flags> 開啟SL_RESTART_SCAN位,此參數會設定為 TRUE。
QueryDirectory.ReturnSingleEntry
設定為 TRUE 的布爾值表示只應該傳回單一專案。 如果此參數為 TRUE,MrxQueryDirectory 應該只傳回找到的第一個專案。 如果 IrpSp-Flags> 具有SL_RETURN_SINGLE_ENTRY位,此參數會設定為 TRUE。
QueryDirectory.IndexSpecified
當設定為 TRUE 時,布爾值表示開始掃描目錄中的索引是由 FileIndex 成員所指定。 如果 IrpSp-Flags> 具有SL_INDEX_SPECIFIED位,此參數會設定為 TRUE。
QueryDirectory.InitialQuery
布爾值,當查詢不是通配符查詢 (“.”時,設定為 TRUE,例如) 。 如果相關聯 FOBX 的 UnicodeQueryTemplate.Buffer 成員是 NULL,而且 FOBX 的 Flags 成員沒有FOBX_FLAG_MATCH_ALL位,這個成員就會設定為 TRUE。 例如,對於通配符查詢 (“.”,例如) ,RDBSS 會將相關聯 FOBX 的 UnicodeQueryTemplate.Buffer 成員設定為傳遞的通配符查詢。
NotifyChangeDirectory
未命名等位的結構成員,用於處理具有IRP_MN_NOTIFY_CHANGE_DIRECTORY次要函式的IRP_MJ_DIRECTORY_CONTROL要求。 這個成員用於處理目錄變更要求,導致 呼叫 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 例程。 RDBSS 會將 NotifyChangeDirectory 結構成員和 pLowIoContext-ParamsFor.NotifyChangeDirectory> 結構中的資訊傳遞至網路迷你重新導向器。
NotifyChangeDirectory.pVNetRoot
與目錄相關聯之V_NET_ROOT結構的指標。 此參數會設定為 IrpSp-FileObject-FsContext>> 成員,或根據節點類型而定的 IrpSp-FileObject-FsContext2>> 成員。
QueryEa
用於處理 IRP_MJ_QUERY_EA 要求之未命名等位的結構成員。 這個成員用於處理導致 呼叫 MRxQueryEaInfo 例程的擴充屬性查詢要求。 RDBSS 會將 QueryEa 結構成員中的資訊傳遞至網路迷你重新導向器。
QueryEa.UserEaList
呼叫端提供的輸入緩衝區指標,其中包含 FILE_GET_EA_INFORMATION 結構,指定要查詢的擴充屬性。 此參數設定為 IrpSp-Parameters.QueryEa.EaList>。
QueryEa.UserEaListLength
UserEaList 成員所指向之緩衝區的長度,以位元組為單位。 此參數設定為 IrpSp-Parameters.QueryEa.EaListLength>。
QueryEa.UserEaIndex
開始掃描擴充屬性清單的專案索引。 如果 IndexSpecified 成員未設定為 TRUE 或 QueryEaList 成員指向無空清單,則應該忽略此參數。 此參數設定為 IrpSp-Parameters.QueryEa.EaIndex>。
QueryEa.RestartScan
當設定為 TRUE 時,布爾值表示查詢是從第一個擴充屬性項目開始。 當此值設定為 FALSE 時,掃描會從先前的呼叫繼續。 第一次呼叫時,此參數必須設定為 TRUE。 如果 IrpSp-Flags> 具有SL_RESTART_SCAN位,此參數會設定為 TRUE。
QueryEa.ReturnSingleEntry
當設定為 TRUE 時,布爾值表示應該只傳回單一專案。 如果此參數為 TRUE,MrxQueryEaInfo 應該只傳回找到的第一個專案。 如果 IrpSp-Flags> 具有SL_RETURN_SINGLE_ENTRY位,此參數會設定為 TRUE。
QueryEa.IndexSpecified
當設定為TRUE時,布爾值表示開始掃描擴充屬性中的專案,其索引是由 UserEaIndex 成員提供。 如果 IrpSp-Flags> 具有SL_INDEX_SPECIFIED位,此參數會設定為 TRUE。
QuerySecurity
用於處理 IRP_MJ_QUERY_SECURITY 要求之未命名等位的結構成員。 這個成員用於處理導致 呼叫 MRxQuerySdInfo 例程的查詢安全性要求。 RDBSS 會將 QuerySecurity 結構成員中的資訊傳遞至網路迷你重新導向器。
QuerySecurity.SecurityInformation
呼叫端提供的輸入緩衝區指標,其中包含指定要查詢之作業的SECURITY_INFORMATION結構。 此參數設定為 IrpSp-Parameters.QuerySecurity.SecurityInformation>。
QuerySecurity.Length
SecurityInformation 成員所指向之緩衝區的長度,以位元組為單位。 此參數設定為 IrpSp-Parameters.QuerySecurity.Length>。
SetSecurity
未命名等位的結構成員,用於處理 IRP_MJ_SET_SECURITY 要求。 此成員用於處理導致 呼叫 MRxSetSdInfo 例程的查詢安全性要求。 RDBSS 會將 SetSecurity 結構成員中的資訊傳遞至網路迷你重新導向器。
SetSecurity.SecurityInformation
呼叫端提供的輸入緩衝區指標,其中包含SECURITY_INFORMATION結構,指定要在安全性描述元中設定的安全性資訊。 此參數設定為 IrpSp-Parameters.SetSecurity.SecurityInformation>。
SetSecurity.SecurityDescriptor
SECURITY_DESCRIPTOR 結構的指標,其中包含要指派給 對象的安全性資訊值。 此參數設定為 IrpSp-Parameters.SetSecurity.SecurityDescriptor>。
QueryQuota
用於處理 IRP_MJ_QUERY_QUOTA 要求之未命名等位的結構成員。 此成員用於處理導致 呼叫 MRxQueryQuotaInfo 例程的查詢安全性要求。 RDBSS 會將 QueryQuota 結構成員中的資訊傳遞至網路迷你重新導向器。
QueryQuota.Length
StartSid 成員所指向之緩衝區的長度,以位元組為單位。 此參數設定為 IrpSp-Parameters.QueryQuota.Length>。
QueryQuota.StartSid
SID 的選擇性指標,指出傳回的資訊是從第一個專案以外的項目開始。 如果指定 SidList 成員,則會忽略此參數。 此參數設定為 IrpSp-Parameters.QueryQuota.StartSid>。
QueryQuota.SidList
要傳回其配額資訊之 SID 清單的選擇性指標。 清單中的每個專案都是FILE_GET_QUOTA_INFORMATION結構。 此參數設定為 IrpSp-Parameters.QueryQuota.SidList>。
QueryQuota.SidListLength
如果指定 SidList 成員中 SidList 成員的 SID 清單長度,以位元組為單位。 此參數設定為 IrpSp-Parameters.QueryQuota.SidListLength>。
QueryQuota.RestartScan
當設定為 TRUE 時,布爾值表示查詢是從第一個項目開始。 當此值設定為 FALSE 時,掃描會從先前的呼叫繼續。 第一次呼叫 時,此參數必須設定為 TRUE。 如果 IrpSp-Flags> 開啟SL_RESTART_SCAN位,此參數會設定為 TRUE。
QueryQuota.ReturnSingleEntry
當設定為 TRUE 時,布爾值表示只應該傳回單一專案。 如果此參數為 TRUE,MrxQueryQuotaInfo 應該只傳回找到的第一個專案。 如果 IrpSp-Flags> 具有SL_RETURN_SINGLE_ENTRY位,此參數會設定為 TRUE。
QueryQuota.IndexSpecified
當設定為 TRUE 時,布爾值表示開始掃描清單的索引是由 StartSid 成員指定。 如果 IrpSp-Flags> 已開啟SL_INDEX_SPECIFIED位,此參數會設定為 TRUE。
SetQuota
用於處理 IRP_MJ_SET_QUOTA 要求之未命名等位的結構成員。 RDBSS 目前未使用此結構。
SetQuota.Length
SetQuota 結構的未使用成員。
DosVolumeFunction
未命名等位的結構成員。 RDBSS 目前未使用此結構。
DosVolumeFunction.VNetRoot
DosVolumeFunction 結構的未使用成員。
DosVolumeFunction.SrvCall
DosVolumeFunction 結構的未使用成員。
DosVolumeFunction.NetRoot
DosVolumeFunction 結構的未使用成員。
FlagsForLowIo
LowIoContext
AlsoCanonicalNameBuffer
LoudCompletionString
RX_CONTEXT 結構的未使用成員。
AcquireReleaseFcbTrackerX
TrackerHistoryPointer
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
ShadowCritOwner
StoredStatus
未命名的等位成員,用來傳回網路迷你重新導向器驅動程序用於低 I/O 作業的狀態資訊。 RDBSS 也會根據 RDBSS 無法瞭解檔案查詢作業時 MRxQueryFileInfo 例程傳回的狀態來設定此值。
StoredStatusAlignment
未命名等位的成員,用來強制 在 StoredStatus 成員上正確對齊。
InformationToReturn
網路迷你重新導向器驅動程序針對某些低 I/O (讀取、寫入、FSCTL 等 ) 和 MrxQueryXXX 作業傳回狀態信息的成員。
用於RX_CONTEXT結構的唯一節點類型。 RDBSS 所使用的所有主要結構類型 (RX_CONTEXT、SRV_CALL、NET_ROOT、V_NET_ROOT、SRV_OPEN、FCB 和 FOBX,例如,RDBSS 所使用的) 都有唯一的雙位元組節點類型程式代碼,可在 nodetype.h 包含可用於偵錯的檔案中定義。 RDBSS 會在 RxInitializeContext 例程中初始化RX_CONTEXT時,將此成員設定為RDBSS_NTC_RX_CONTEXT。 如果網路迷你重新導向器驅動程式使用一些其他方法初始化RX_CONTEXT結構,則必須設定此成員。
RDBSS 會將此成員定義為 RDBSS 使用之所有結構的標準標頭的一部分。
FlagsForLowIo
RDBSS 所設定的一組選項,並傳遞至傳送至網路迷你重新導向器的低 I/O 作業。 FlagsForLowIo 是未命名結構的成員,用於對網路迷你重新導向器進行低 I/O 要求。
LowIoContext
傳遞至網路迷你重新導向器之LOWIO_CONTEXT結構的指標。 LowIoContext 是未命名結構的成員,用於傳送至網路迷你重新導向器的低 I/O 要求。
備註
RX_CONTEXT 結構是 RDBSS 和網路迷你重新導向器用來管理 I/O 要求封包的其中一個基本數據結構, (IRP) 。 RX_CONTEXT數據結構會封裝 IRP 以供 RDBSS、網路迷你重新導向器和文件系統使用。 RX_CONTEXT 結構包含單一 IRP 的指標,以及處理 IRP 所需的所有內容。
RX_CONTEXT結構有時稱為 Window Driver Kit 中的 IRP 內容或 RxContext (WDK) 或 IFS Kit 頭檔,以及其他用於開發網路迷你重新導向器驅動程式的資源。
RX_CONTEXT是一種數據結構,附加各種網路迷你重新導向器所提供的其他資訊。 RX_CONTEXT包含欄位,可透過每個網路迷你重新導向器預先指定的數量來配置每個RX_CONTEXT結構的大小,然後保留供迷你重新導向器使用。 此方法包含配置預先指定的區域,這適用於所有網路迷你重新導向器,作為每個RX_CONTEXT的一部分。 這是一個未格式化的區域,其中任何所需的結構都可以由各種網路迷你重新導向器加諸。 網路迷你重新導向器驅動程式的開發人員應該嘗試並定義相關聯的私人內容,以符合RX_CONTEXT數據結構中所定義的這個預先指定區域。 違反此規則的網路迷你重新導向器驅動程式將會產生顯著的效能負面影響。
網路迷你重新導向器所導出的許多 RDBSS 例程和例程都會參考起始線程或例程所使用的某些其他線程中的RX_CONTEXT結構。 因此,配置RX_CONTEXT結構會計算為管理其用於異步操作的參考。 當參考計數變成零時,可以在最後一個取值作業上完成並釋放配置的RX_CONTEXT結構。
RDBSS 提供一些例程,可用來操作RX_CONTEXT和相關聯的 IRP。 這些例程可用來配置、初始化和刪除RX_CONTEXT。 這些例程也可用來完成與RX_CONTEXT相關聯的 IRP,並設定RX_CONTEXT的取消例程。
規格需求
需求 | 值 |
---|---|
標頭 | rxcontx.h (包括 Rx.h、Rxcontx.h) |