MRxCreate ルーチン
MRxCreate ルーチンは、ネットワーク ミニ リダイレクターがファイル システム オブジェクトを作成するように要求するために、RDBSS によって呼び出されます。
構文
PMRX_CALLDOWN MRxCreate;
NTSTATUS MRxCreate(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
パラメーター
RxContext [in, out]
RX_CONTEXT 構造体へのポインター。 このパラメータには、操作を要求している IRP が含まれます。
戻り値
MRxCreate は、成功した場合は STATUS_SUCCESS を返すか、次のいずれかのような適切な NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | 操作を完了するにはリソースが不足していました。 |
STATUS_NETWORK_ACCESS_DENIED | ネットワークアクセスが拒否されました。 このエラーは、ネットワーク ミニリダイレクターが読み取り専用共有上で新しいファイルを開くように要求された場合に返されることがあります。 |
STATUS_NOT_IMPLEMENTED | リモート ブートやリモート ページ ファイルなど、要求された機能が実装されていません。 |
STATUS_NOT_SUPPORTED | 拡張属性など、要求された機能はサポートされていません。 |
STATUS_OBJECT_NAME_COLLISION | ネットワーク ミニリダイレクターは、既に存在するファイルを作成するように要求されました。 |
STATUS_OBJECT_NAME_NOT_FOUND | オブジェクト名が見つかりませんでした。 ネットワーク ミニ リダイレクターが存在しないファイルを開くように求められた場合に、このエラーが返される可能性があります。 |
STATUS_OBJECT_PATH_NOT_FOUND | オブジェクトのパスが見つかりませんでした。 このエラーは、NTFS ストリーム オブジェクトが要求され、リモート ファイル システムがストリームをサポートしていない場合に返される可能性があります。 |
STATUS_REPARSE | シンボリック リンクを処理するには再解析が必要です。 |
STATUS_RETRY | 操作を再試行する必要があります。 このエラーは、ネットワーク ミニリダイレクターで共有違反またはアクセス拒否エラーが発生した場合に返されることがあります。 |
解説
MRxCreate は RDBSS によって呼び出され、ネットワーク ミニリダイレクターがネットワーク全体でファイル システム オブジェクトを開くように要求します。 この呼び出しは、IRP_MJ_CREATE リクエスト。
MRxCreate を呼び出す前に、RDBSS は RxContext パラメーターが指す RX_CONTEXT 構造体内の次のメンバーを変更します。
pRelevantSrvOpenSRV_OPEN 構造体に設定されます。
Create.pSrvCallSRV_CALL 構造体に設定されます。
Create.NtCreateParameters 要求された NT_CREATE_PARAMETERS に設定されます。
ネットワーク ミニリダイレクターのコンテキストでは、ファイル オブジェクトは、関連するファイル制御ブロック (FCB) およびファイル オブジェクト拡張子 (FOBX) 構造を指します。 ファイルオブジェクトと FOBX の間には 1 対 1 の対応関係があります。 多くのファイル オブジェクトは、リモート サーバー上の単一のファイルを表す同じ FCB を参照します。 クライアントは同じ FCB 上で複数の異なるオープン リクエスト (NtCreateFile リクエスト) を持つことができ、それぞれが新しいファイル オブジェクトを作成します。 RDBSS とネットワーク ミニ リダイレクターは、受信した NtCreateFile 要求よりも少ない MRxCreate 要求を送信することを選択し、複数の FOBX 間でSRV_OPEN構造を共有します。
もしMRxCreate リクエストはファイルの上書きであり、MRxCreate STATUS_SUCCESS が返された場合、RDBSS はページング I/O リソースを取得し、ファイルを切り詰めます。 ファイルがキャッシュ マネージャーによってキャッシュされている場合、RDBSS はキャッシュ マネージャーのサイズをサーバーから受信したばかりのサイズで更新します。
戻る前に、MRxCreate は RxContext パラメーターが指す RX_CONTEXT 構造体の CurrentIrp->IoStatus.Information メンバーを設定する必要があります。
要件
対象プラットフォーム |
デスクトップ |
ヘッダー |
Mrx.h (Mrx.h を含む) |