次の方法で共有


MRxQueryVolumeInfo ルーチン

MRxQueryVolumeInfo ルーチンは、ネットワーク ミニ リダイレクターがボリューム情報をクエリするように要求するために RDBSS によって呼び出されます。

構文

PMRX_CALLDOWN MRxQueryVolumeInfo;

NTSTATUS MRxQueryVolumeInfo(
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

パラメーター

RxContext [in, out]
RX_CONTEXT 構造体へのポインター。 このパラメーターには、操作を要求している IRP が含まれています。

戻り値

MRxQueryVolumeInfo は、成功した場合に STATUS_SUCCESS を返すか、次のような適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_ACCESS_DENIED

呼び出し元には、この操作に対する適切なセキュリティが不足しています。

STATUS_BUFFER_OVERFLOW

ボリューム情報を受信するバッファーが小さすぎました。

この戻り値は成功と見なす必要があり、RxContext パラメーターが指す RX_CONTEXT 構造体の Info.Buffer メンバーにできるだけ有効なデータを返す必要があります。

STATUS_BUFFER_TOO_SMALL

バッファーが小さすぎて、要求されたデータを受信できません。

この値が返された場合、RxContext パラメーターによって指される RX_CONTEXT 構造体の InformationToReturn メンバーは、呼び出しが成功するために予想されるバッファーの最小サイズに設定する必要があります。

STATUS_CONNECTION_DISCONNECTED

接続が切断されました。

STATUS_INSUFFICIENT_RESOURCES

クエリを完了するためのリソースが不足していました。

STATUS_INVALID_PARAMETER

無効なパラメーターが指定されました。

STATUS_NETWORK_NAME_DELETED

ネットワーク名が削除されました。

STATUS_NOT_IMPLEMENTED

要求された機能は実装されていません。

解説

RDBSS は、次のいずれかの場合に MRxQueryVolumeInfo の呼び出しを発行します。

IRP_MJ_QUERY_VOLUME_INFORMATION 要求の場合に MRxQueryVolumeInfo を呼び出す前に、RDBSS は RxContext パラメーターが指す RX_CONTEXT 構造体の次のメンバーを変更します。

Info.FsInformationClass メンバーは IrpSp->Parameters.QueryVolume.FsInformationClass に設定されます。

Info.Buffer メンバーは Irp->AssociatedIrp.SystemBuffer に設定されます。

Info.LengthRemaining メンバーは IrpSp->Parameters.QueryVolume.Length に設定されます。

IRP_MJ_QUERY_VOLUME_INFORMATION 要求の場合、MRxQueryVolumeInfo からの戻り時に RX_CONTEXT 構造体の PostRequest メンバーが TRUE の場合、RDBSS は RxFsdPostRequest を呼び出して要求をポストします。 この場合、IRP_MJ_QUERY_VOLUME_INFORMATION 要求は、ファイル システム プロセス (FSP) によって処理するために、RX_CONTEXT 構造体をキュー RX_CONTEXT ワーカー キューに渡します。

MRxQueryVolumeInfo から返されたときに RX_CONTEXT 構造体の PostRequest メンバーが FALSE である場合、ネットワーク ミニ リダイレクターは RX_CONTEXT 構造体の Info.LengthRemaining メンバーを、返されるボリューム情報の長さに設定する必要があります。 RDBSS は、IRP の IoStatus.Information メンバーを IrpSp->Parameters.QueryVolume.Length から RX_CONTEXT 構造体の Info.LengthRemaining メンバーを引いた値に設定します。

MRxQueryVolumeInfo の呼び出しが成功した場合、ネットワーク ミニ リダイレクターは、RX_CONTEXT 構造体の Info.LengthRemaining メンバーを Info.Length メンバーから返されるボリューム情報の長さを引いた値に設定する必要があります。 MRxQueryVolumeInfo の呼び出しが成功した場合、RDBSS は IRP の IoStatus.Information メンバーを IrpSp->Parameters.QueryVolume.Length から RX_CONTEXT 構造体の Info.LengthRemaining メンバーを引いた値に設定します。

Info.FsInformationClass メンバーが FileFsDeviceInformation に設定された IRP_MJ_QUERY_VOLUME_INFORMATION 要求の場合、ネットワーク ミニ リダイレクターは、RxContext パラメーターが指す RX_CONTEXT 構造体で次の情報を返します。

Info.Buffer メンバーに FILE_FS_DEVICE_INFORMATION 構造体が含まれています

Info.Buffer.Characteristics メンバーはボリュームの特性に設定され、オプションの 1 つとして FILE_REMOTE_DEVICE を含める必要があります。

Info.Buffer.DeviceType メンバーは、関連付けられている NET_ROOT 構造体の DeviceType メンバーに設定されます。 関連付けられている NET_ROOT の Type メンバーが NET_ROOT_PIPE されている場合、Info.Buffer.DeviceType メンバーは FILE_DEVICE_NAMED_PIPE に設定されます。

Info.FsInformationClass メンバーが FileFsVolumeInformation に設定された IRP_MJ_QUERY_VOLUME_INFORMATION 要求の場合、ネットワーク ミニ リダイレクターは、RxContext パラメーターが指す RX_CONTEXT 構造体で次の情報を返します。

Info.Buffer メンバーに FILE_FS_VOLUME_INFORMATION 構造体が含まれています

Info.Buffer メンバーは、関連付けられている NET_ROOT 構造体の VolumeInfo メンバーに設定されます。

Info.LengthRemaining メンバーは、関連付けられている NET_ROOT 構造体の VolumeInfoLength メンバーに設定されます。

IRP_MJ_FILE_SYSTEM_CONTROL の RDBSS からの MRxQueryVolumeInfo 呼び出しは、リンク追跡情報の要求です。 IRP_MJ_FILE_SYSTEM_CONTROL に対して MRxQueryVolumeInfo を呼び出す前に、RDBSS は RxContext パラメーターが指す RX_CONTEXT 構造体の次のメンバーを変更します。

Info.FsInformationClass メンバーは FileFsObjectIdInformation に設定されます。

Info.Buffer メンバーは、FILE_FS_OBJECTID_INFORMATION 構造体に設定されます。

Info.LengthRemaining メンバーは sizeof(FILE_FS_OBJECTID_INFORMATION) に設定されます。

IRP_MJ_FILE_SYSTEM_CONTROL 要求のこの場合、IRP の AssociatedIrp.SystemBuffer メンバーは、LINK_TRACKING_INFORMATION 構造体を指します。

要求が MRxQueryVolumeInfo への IRP_MJ_FILE_SYSTEM_CONTROL として開始され、戻り値が STATUS_SUCCESS または STATUS_BUFFER_OVERFLOW の場合、RDBSS は、RX_CONTEXT 構造体の Info.Buffer メンバーで渡された FILE_FS_OBJECTID_INFORMATION 構造体の ObjectId メンバーを FCB 構造体の NetRoot->DiskParameters.VolumeId メンバーおよび IRP の AssociatedIrp.SystemBuffer.VolumeId メンバーにコピーします。 MRxQueryVolumeInfo の呼び出しが成功した場合、RDBSS は LINK_TRACKING_INFORMATION 構造体の Type メンバーを設定します。 FCB 構造体の NetRoot->Flags メンバーに NETROOT_FLAG_DFS_AWARE_NETROOT ビットが設定されている場合、Type メンバーは RDBSS によって DfsLinkTrackingInformation に設定されます。 FCB 構造体の NetRoot->Flags メンバーに NETROOT_FLAG_DFS_AWARE_NETROOT ビットが設定されていない場合、Type メンバーは RDBSS によって NtfsLinkTrackingInformation に設定されます。 成功した場合、RDBSS は IRP の IoStatus.Information メンバーを LINK_TRACKING_INFORMATION 構造体のサイズに設定します。

要件

対象プラットフォーム

デスクトップ

ヘッダー

Mrx.h (Mrx.h を含む)

関連項目

MRxIsValidDirectory

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxSetEaInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetQuotaInfo

MRxSetSdInfo

MRxSetVolumeInfo

RxFsdPostRequest