RX_CONTEXT構造体 (rxcontx.h)
RX_CONTEXT構造体は、RDBSS、ネットワーク ミニ リダイレクター、およびファイル システムで使用する IRP をカプセル化します。 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構造体に使用される一意のノード タイプ。 RDBSS で使用されるすべての主要な構造体の種類 (RX_CONTEXT、SRV_CALL、NET_ROOT、V_NET_ROOT、SRV_OPEN、FCB、FOBX など) には、デバッグに使用できる nodetype.h インクルード ファイルで定義された一意の 2 バイト のノード型コードがあります。 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 構造体メンバーに格納されます。
RealDevice メンバーは現在 RDBSS では使用されていませんが、ネットワーク ミニ リダイレクターで使用できます。
CurrentIrp
元の IRP へのポインター。 このメンバーは、ネットワーク ミニ リダイレクター ドライバーでは使用しないでください。
CurrentIrpSp
IRP スタックの場所へのポインター。
pFcb
この IRP に関連付けられているファイル制御ブロック (FCB) へのポインター。
pFobx
この IRP に関連付けられているファイル オブジェクト拡張子 (FOBX) へのポインター。
pRelevantSrvOpen
関連付けられているサーバーへのポインター open(SRV_OPEN) for this IRP。
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 の操作に関連付けられているロックメカニズムの 1 つです。
FcbPagingIoResourceAcquired
TRUE に設定すると、このメンバーは、この操作に対して FCB ページング I/O リソースが取得されたことを指定します。 FCB ページング I/O リソースは、FCB のページング I/O 操作に関連付けられているロックメカニズムの 1 つです。
MustSucceedDescriptorNumber
メンバーは、 RxCreateRxContext ルーチンで最初に 0 に設定されます。 このメンバーは 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
ネットワーク ミニ リダイレクター ドライバーがRX_CONTEXTの処理中に待機するために使用できるカーネル EVENT へのポインター。
BlockedOperations
完了時に解放されるブロックされた操作のリスト ヘッドへのポインター。 このメンバーは内部使用のために予約されています。
BlockedOpsMutex
ブロックされた操作のシリアル化を制御するミューテックスへのポインター。 このメンバーは内部使用のために予約されています。
RxContextSerializationQLinks
ファイル オブジェクトごとにパイプ操作をシリアル化するために使用されるリスト エントリへのポインター。 このメンバーは内部使用のために予約されています。
Info
MRxQueryDirectory、MRxQueryFileInfo、MRxQueryVolumeInfo、MRxSetFileInfo、MRxSetFileInfoAtCleanup、および MRxSetVolumeInfo ルーチンに使用される名前のない共用体の構造体メンバー。 RDBSS は Info 構造体メンバーの情報をネットワーク ミニ リダイレクターに渡し、ネットワーク ミニ リダイレクターは Info 構造体メンバーの RDBSS に情報を返します。
Info.FsInformationClass
ネットワーク ミニ リダイレクター ドライバーに要求されるFS_INFORMATION_CLASSの種類を渡すために RDBSS によって使用される名前のない共用体のメンバー。 RDBSS は、**MrxQueryVolumeInfo **および MrxSetVolumeInfo を呼び出すときに FsInformationClass メンバーの情報を渡します。
Info.FileInformationClass
ネットワーク ミニ リダイレクター ドライバーに送信されるFILE_INFORMATION_CLASS要求の種類を示すために RDBSS によって使用される名前のない共用体のメンバー。 RDBSS は、MrxQueryDirectory、MrxQueryFileInfo、および MrxSetFileInfo を呼び出すときに FileInformationClass メンバーの情報を渡します。
Info.Buffer
RDBSS からネットワーク ミニ リダイレクター ドライバーにデータを渡し、RDBSS によってネットワーク ミニ リダイレクター ドライバーから応答を受信するために使用されるバッファー。 Buffer メンバーは、MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup、および MrxSetVolumeInfo ルーチンで使用されます。
Info.Length
RDBSS からネットワーク ミニ リダイレクター ドライバーに Buffer メンバーの長さを渡すために使用される名前のない共用体のメンバー。 Length メンバーは、MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup、および MrxSetVolumeInfo ルーチンで使用されます。
Info.LengthRemaining
ネットワーク ミニ リダイレクター ドライバーから RDBSS に Buffer メンバーで返される情報の長さを渡すために使用される名前のない共用体のメンバー。 LengthRemaining メンバーは、MrxQueryDirectory、MrxQueryFileInfo、MrxQueryVolumeInfo、MrxSetFileInfo、MRxSetFileInfoAtCleanup、および MrxSetVolumeInfo ルーチンで使用されます。
Info.ReplaceIfExists
名前変更操作中に既存のファイルを置き換える必要があるかどうかを示すブール値。 ReplaceIfExists メンバーは、MrxSetFileInfo ルーチンで使用されます。
Info.AdvanceOnly
このメンバーは、内部使用のために予約されています。
PrefixClaim
マルチ UNC プロバイダー (MUP) から送信されたプレフィックス解決要求に使用される名前のない共用体の構造体メンバー。 プレフィックス要求の結果は、IOCTL_REDIR_QUERY_PATHまたはIOCTL_REDIR_QUERY_PATH_EXの MUP から RDBSS へのIRP_MJ_DEVICE_CONTROL要求です。 RDBSS は PrefixClaim 構造体の情報をネットワーク ミニ リダイレクターに渡し、ネットワーク ミニ リダイレクターは PrefixClaim 構造体の RDBSS に情報を返します。
PrefixClaim.SuppliedPathName
プレフィックス解決を実行する UNC パスを指定する NULL で終わらない Unicode 文字列。
PrefixClaim.NetRootType
要求されたNET_ROOTの型。 このメンバーは現在使用されていません。 RDBSS は 、SuppliedPathName メンバーからNET_ROOTの型を deduces します。
PrefixClaim.pSecurityContext
MUP からの要求から渡されたセキュリティ コンテキストへのポインター。
このメンバーは現在使用されていません。 セキュリティ コンテキストは、このメンバーではなく、RX_CONTEXTの Create.NtCreateParameters.SecurityContext メンバーで渡されます。
Create
IRP_MJ_CREATE要求の処理に使用される名前のない共用体の構造体メンバー。 このメンバーは、 MRxCreate ルーチンを呼び出すファイルを開く要求を処理するために使用されます。 このメンバーは、プレフィックス解決要求にも使用されます。 RDBSS は 、Create 構造体メンバーの情報をネットワーク ミニ リダイレクターに渡し、ネットワーク ミニ リダイレクターは Create 構造体メンバーの 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 メンバーが 0 以外の場合、セキュリティ記述子は 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
認証と承認に使用されるこの UserName のパスワードを含む Unicode 文字列。 このメンバーは、ツリー接続オープン パラメーターから設定されます。
Create.UserDomainName
この UserName のドメイン名を含む Unicode 文字列。
QueryDirectory
IRP_MJ_DIRECTORY_CONTROL要求の処理に使用される名前のない共用体の構造体メンバー。 このメンバーは、 MrxQueryDirectory ルーチンを呼び出すクエリ ディレクトリ要求を処理するために使用されます。 RDBSS は 、QueryDirectory 構造体メンバーの情報をネットワーク ミニ リダイレクターに渡します。
QueryDirectory.FileIndex
IndexSpecified メンバーが TRUE に設定されている場合にディレクトリのスキャンを開始するエントリのインデックス。 このパラメーターは IrpSp-Parameters.QueryDirectory.FileIndex> メンバーに 設定されます。
QueryDirectory.RestartScan
TRUE に設定した場合のブール値は、ディレクトリ内の最初のエントリからスキャンを開始することを示します。 この値が FALSE に設定されている場合、スキャンは以前の呼び出しから再開されます。 このパラメーターは、初めて を呼び出すときに TRUE に設定する必要があります。 IrpSp-Flags> にSL_RESTART_SCAN ビットがオンになっている場合、このパラメーターは TRUE に設定されます。
QueryDirectory.ReturnSingleEntry
TRUE に設定されたブール値は、1 つのエントリのみを返す必要があることを示します。 このパラメーターが 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 に設定した場合のブール値は、1 つのエントリのみを返す必要があることを示します。 このパラメーターが 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 メンバーの SID の一覧の長さ (バイト単位) (指定されている場合)。 このパラメーターは IrpSp-Parameters.QueryQuota.SidListLength> に設定されます。
QueryQuota.RestartScan
TRUE に設定した場合のブール値は、クエリが最初のエントリから開始されることを示します。 この値が FALSE に設定されている場合、スキャンは以前の呼び出しから再開されます。 このパラメーターは、初めて を呼び出すときに TRUE に設定する必要があります。 IrpSp-Flags> にSL_RESTART_SCAN ビットがオンになっている場合、このパラメーターは TRUE に設定されます。
QueryQuota.ReturnSingleEntry
TRUE に設定した場合のブール値は、1 つのエントリのみを返す必要があることを示します。 このパラメーターが 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 など) には、デバッグに使用できる nodetype.h インクルード ファイルで定義された一意の 2 バイトのノード型コードがあります。 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) を管理するために使用する基本的なデータ構造の 1 つです。 RX_CONTEXT データ構造は、RDBSS、ネットワーク ミニ リダイレクター、およびファイル システムで使用する IRP をカプセル化します。 RX_CONTEXT構造体には、1 つの IRP へのポインターと、IRP の処理に必要なすべてのコンテキストが含まれます。
RX_CONTEXT構造体は、Windows Driver Kit (WDK) または IFS Kit ヘッダー ファイル、およびネットワーク ミニ リダイレクター ドライバーの開発に使用されるその他のリソースで、IRP コンテキストまたは RxContext と呼ばれることがあります。
RX_CONTEXTは、さまざまなネットワーク ミニ リダイレクターによって提供される追加情報が接続されるデータ構造です。 RX_CONTEXTには、各RX_CONTEXT構造体のサイズを、各ネットワーク ミニ リダイレクターに対して事前に指定された量だけ割り当てるためのフィールドが含まれます。これは、ミニ リダイレクターで使用するために予約されています。 この方法は、各RX_CONTEXTの一部としてすべてのネットワーク ミニ リダイレクターに対して同じ、事前に指定された領域を割り当てることで構成されます。 これは、さまざまなネットワーク ミニ リダイレクターによって必要な構造を適用できる、書式設定されていない領域です。 ネットワーク ミニ リダイレクター ドライバーの開発者は、RX_CONTEXT データ構造で定義されているこの事前に指定された領域に収まるように、関連付けられているプライベート コンテキストを定義する必要があります。 この規則に違反するネットワーク ミニ リダイレクター ドライバーでは、パフォーマンスが大幅に低下します。
ネットワーク ミニ リダイレクターによってエクスポートされた多くの RDBSS ルーチンとルーチンは、開始スレッドまたはルーチンで使用される他のスレッドのRX_CONTEXT構造体を参照します。 したがって、割り当てられたRX_CONTEXT構造体は、非同期操作の使用を管理するために参照カウントされます。 参照カウントが 0 になると、割り当てられたRX_CONTEXT構造体を最終処理し、最後の逆参照操作で解放できます。
RDBSS には、RX_CONTEXTと関連付けられている IRP を操作するために使用されるルーチンが多数用意されています。 これらのルーチンは、RX_CONTEXTの割り当て、初期化、および削除に使用されます。 これらのルーチンは、RX_CONTEXTに関連付けられている IRP を完了し、RX_CONTEXTのキャンセル ルーチンを設定するためにも使用されます。
要件
要件 | 値 |
---|---|
Header | rxcontx.h (Rx.h、Rxcontx.h を含む) |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示