共用方式為


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

用於 MRxQueryDirectoryMRxQueryFileInfo、MRxQueryVolumeInfoMRxSetFileInfoMRxSetFileInfoAtCleanupMRxSetVolumeInfo 例程之未命名等位的結構成員。 RDBSS 會將 資訊 結構成員中的資訊傳遞至網路迷你重新導向器,而網路迷你重新導向器會將資訊傳回 至資訊 結構成員中的 RDBSS。

Info.FsInformationClass

RDBSS 用來傳遞要求給網路迷你重新導向器驅動程式之FS_INFORMATION_CLASS類型之未命名的等位成員。 當呼叫 **MrxQueryVolumeInfo ** 和 MrxSetVolumeInfo 時,RDBSS 會在 FsInformationClass 成員中傳遞資訊。

Info.FileInformationClass

RDBSS 用來指出傳送至網路迷你重新導向器驅動程式之FILE_INFORMATION_CLASS要求類型之未命名的等位成員。 當呼叫 MrxQueryDirectoryMrxQueryFileInfoMrxSetFileInfo 時,RDBSS 會在 FileInformationClass 成員中傳遞資訊。

Info.Buffer

緩衝區,用來將數據從 RDBSS 傳遞至網路迷你重新導向器驅動程式,並透過 RDBSS 接收來自網路迷你重新導向器驅動程式的回應。 Buffer 成員用於 MrxQueryDirectoryMrxQueryFileInfoMrxQueryVolumeInfoMrxSetFileInfoMRxSetFileInfoAtCleanupMrxSetVolumeInfo 例程中。

Info.Length

未命名等位的成員,用來將 緩衝區 成員的長度從 RDBSS 傳遞至網路迷你重新導向器驅動程式。 Length 成員用於 MrxQueryDirectoryMrxQueryFileInfoMrxQueryVolumeInfoMrxSetFileInfoMRxSetFileInfoAtCleanupMrxSetVolumeInfo 例程中。

Info.LengthRemaining

未命名等位的成員,用來將 緩衝區 成員中傳回的信息長度從網路迷你重新導向器驅動程序傳遞至 RDBSS。 LengthRemaining 成員用於 MrxQueryDirectoryMrxQueryFileInfoMrxQueryVolumeInfoMrxSetFileInfoMRxSetFileInfoAtCleanupMrxSetVolumeInfo 例程中。

Info.ReplaceIfExists

布爾值,指出是否應該在重新命名作業期間取代現有的檔案。 ReplaceIfExists 成員用於 MrxSetFileInfo 例程中。

Info.AdvanceOnly

此成員保留供內部使用。

PrefixClaim

未命名聯集的結構成員,用於從多個 UNC 提供者傳送的前置詞解析要求, (MUP) 。 前置詞宣告會產生從 MUP 到 RDBSS 的 IRP_MJ_DEVICE_CONTROL 要求,以進行 IOCTL_REDIR_QUERY_PATHIOCTL_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)

另請參閱

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr