次の方法で共有


FsRtlPrepareMdlWriteDev 関数 (ntifs.h)

FsRtlPrepareMdlWriteDev ルーチンは、キャッシュされたファイル データの指定範囲を指すメモリ記述子リスト (MDL) のリンクされたリストを返して、キャッシュに直接データを書き込みます。

構文

BOOLEAN FsRtlPrepareMdlWriteDev(
  [in]             PFILE_OBJECT     FileObject,
  [in]             PLARGE_INTEGER   FileOffset,
  [in]             ULONG            Length,
  [in]             ULONG            LockKey,
  [out]            PMDL             *MdlChain,
  [out]            PIO_STATUS_BLOCK IoStatus,
  [ in, optional ] PDEVICE_OBJECT   DeviceObject
);

パラメーター

[in] FileObject

ファイル オブジェクトへのポインター。

[in] FileOffset

データを保持するキャッシュ内の開始バイト オフセットを指定する値へのポインター。

[in] Length

キャッシュから読み取るデータの長さ (バイト単位)。

[in] LockKey

ロックするバイト範囲に関連付けられている値。 ロックする範囲が、既に非決定的ロックでロックされている別の範囲と重複している場合、または読み取る範囲が、既に排他的にロックされている別の範囲のサブ範囲である場合、このパラメーターの値は、その非決定的ロックのキーである必要があります。 ロックは、呼び出し元スレッドの親プロセスによって保持されている必要があります。 それ以外の場合、このパラメーターは無効です。

[out] MdlChain

出力時に、キャッシュされたデータ内のバイト範囲を指すメモリ記述子リスト (MDL) のリンクされたリストへのポインター。

[out] IoStatus

出力時に転送の状態を格納する IO_STATUS_BLOCK 構造体へのポインター。 操作が成功した場合、IoStatus.Status は STATUS_SUCCESS に設定されます。 それ以外の場合は、適切な NTSTATUS エラー コードに設定されます。 IoStatus.Information は、ルーチンが正常にロックされた実際のバイト数に設定されます。

[ in, optional ] DeviceObject

ファイルが開かれているデバイス オブジェクトへのポインター。

戻り値

FsRtlPrepareMdlWriteDev ルーチンは、操作が成功した場合 TRUE を返し、操作が失敗した場合は FALSE を します。

備考

FsRtlPrepareMdlWriteDev は、fsRtlCopyWriteに似ていますが、fsRtlPrepareMdlWriteDev がキャッシュにデータをコピーしない点が異なります。 代わりに、呼び出し元が上書きする物理ページはメモリ内でロックされ、FsRtlPrepareMdlWriteDev は、指定したバイト範囲を指す 1 つ以上のメモリ記述子リスト (MDL) を返します。 ロックされたページは、呼び出し元が FsRtlMdlWriteCompleteDev呼び出すまでロックされたままになります。

MDL が指すページはメモリ内でロックされますが、システム空間にはマップされません。 呼び出し元は、mmGetSystemAddressForMdlSafe呼び出すことによって、このマッピングを実行できます。

FsRtlPrepareMdlWriteDev の呼び出しが失敗した場合でも、1 つ以上の MDL が割り当てられている可能性があります。 呼び出し元は、IoStatus.Information の値を調べて、これが発生したかどうかを判断できます。 存在する場合は、呼び出し元 FsRtlMdlWriteCompleteDev を呼び出して、割り当てられた MDL を解放する必要があります。

必要条件

要件 価値
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

FsRtlMdlWriteCompleteDev

FsRtlCopyWrite の

mmGetSystemAddressForMdlSafe の