次の方法で共有


FsRtlCreateSectionForDataScan 関数 (ntifs.h)

FsRtlCreateSectionForDataScan ルーチンは、セクション オブジェクトを作成します。 このルーチンは細心の注意を払って使用してください。 (次の 解説 セクションを参照してください。

構文

NTSTATUS FsRtlCreateSectionForDataScan(
  [out]           PHANDLE            SectionHandle,
  [out]           PVOID              *SectionObject,
  [out, optional] PLARGE_INTEGER     SectionFileSize,
  [in]            PFILE_OBJECT       FileObject,
  [in]            ACCESS_MASK        DesiredAccess,
  [in, optional]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional]  PLARGE_INTEGER     MaximumSize,
  [in]            ULONG              SectionPageProtection,
  [in]            ULONG              AllocationAttributes,
  [in]            ULONG              Flags
);

パラメーター

[out] SectionHandle

セクション オブジェクトへの不透明なハンドルを受け取る呼び出し元によって割り当てられた変数へのポインター。

[out] SectionObject

セクション オブジェクトへの不透明なポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。

[out, optional] SectionFileSize

セクション オブジェクトの作成時にファイルのサイズ (バイト単位) を受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは省略可能であり、NULLできます。

[in] FileObject

開いているファイルの File オブジェクト。 セクション オブジェクトは、指定されたファイルによってサポートされます。 このパラメーターは必須であり、NULLすることはできません。

[in] DesiredAccess

セクション オブジェクトに必要なアクセス権を、次の ACCESS_MASK フラグの 1 つ以上として指定します。

DesiredAccess フラグを する 呼び出し元が
SECTION_MAP_READ セクションのビューを読み取る。
SECTION_MAP_WRITE セクションのビューを書き込みます。
SECTION_QUERY セクションに関する情報をセクション オブジェクトに照会します。 ドライバーは、このフラグを設定する必要があります。
SECTION_ALL_ACCESS 前のフラグによって定義されたすべてのアクションと、STANDARD_RIGHTS_REQUIREDによって定義されたアクション。 (STANDARD_RIGHTS_REQUIREDの詳細については、ACCESS_MASKを参照してください。

[in, optional] ObjectAttributes

オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 この構造体を初期化するには、InitializeObjectAttributes マクロを使用します。 FsRtlCreateSectionForDataScan はこのオブジェクトをプロセス ハンドル テーブルに挿入するため、呼び出し元は InitializeObjectAttributes呼び出すときにOBJ_KERNEL_HANDLE属性を指定する必要があります。

[in, optional] MaximumSize

このパラメーターは、将来使用するために予約されています。

[in] SectionPageProtection

セクションの各ページに配置する保護を指定します。 次のいずれかの値を指定します。 このパラメーターは必須であり、0 にすることはできません。

意味
PAGE_READONLY コミットされたページ領域への読み取り専用アクセスを有効にします。 コミットされたリージョンに書き込もうとすると、アクセス違反が発生します。 システムが読み取り専用アクセスと実行アクセスを区別する場合、コミットされたリージョンでコードを実行しようとすると、アクセス違反が発生します。
PAGE_READWRITE コミットされたページ領域への読み取りと書き込みの両方のアクセスを有効にします。

[in] AllocationAttributes

SEC_XXX フラグのビットマスクによって、セクションの割り当て属性が決まります。 次の値のうち 1 つ以上を指定します。 このパラメーターは必須であり、0 にすることはできません。

意味
SEC_COMMIT セクションのすべてのページに対して、メモリまたはディスク上のページング ファイルに物理ストレージを割り当てます。 これが既定の設定です。 このフラグは必須であり、省略できないことに注意してください。
SEC_FILE FileObject パラメーターで指定されたファイルは、マップされたファイルです。

[in] Flags

このパラメーターは、将来使用するために予約されています。

戻り値

FsRtlCreateSectionForDataScan は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 形容
STATUS_END_OF_FILE
FileObject パラメーターで指定されたファイルのサイズは 0 です。 これはエラー コードです。
STATUS_FILE_LOCK_CONFLICT
FileObject パラメーターで指定されたファイルはロックされています。 これはエラー コードです。
STATUS_INSUFFICIENT_RESOURCES
FsRtlCreateSectionForDataScan でプール割り当てエラーが発生しました。 これはエラー コードです。
STATUS_INVALID_FILE_FOR_SECTION
FileObject パラメーターで指定されたファイルは、セクションをサポートしていません。 これはエラー コードです。
STATUS_INVALID_PARAMETER_8
SectionPageProtection パラメーターに指定された値が無効です。 これはエラー コードです。
STATUS_INVALID_PARAMETER_9
呼び出し元が AllocationAttributes パラメーターに無効な値を指定しました。 これはエラー コードです。
STATUS_PRIVILEGE_NOT_HELD

呼び出し元には、DesiredAccess パラメーターで指定されたアクセス権を持つセクション オブジェクトを作成するために必要な特権がありませんでした。 これはエラー コードです。

備考

重要なFsRtlCreateSectionForDataScan ルーチンは、FileObject パラメーターで指定されたファイル オブジェクトへのハンドルがまだ作成されていない場合にのみ使用する必要があります (通常、作成後の操作の処理中)。 ドライバーにファイル オブジェクトへのハンドルがある場合、またはファイル オブジェクトのハンドルを取得できる場合、ドライバーは代わりに ZwCreateSection ルーチンを使用する必要があります。
 
このルーチンによって作成されたセクション オブジェクトが不要になったら、ZwClose ルーチンを呼び出してセクション オブジェクトのハンドル (SectionHandle) を閉じ、ObDereferenceObject ルーチンを呼び出してセクション オブジェクト自体 (SectionObject) を逆参照してください。

マップされたセクションとメモリのビューの作成の詳細については、「セクション オブジェクトとビューのを参照してください。 また、Microsoft Windows SDK の CreateFileMapping ルーチンのドキュメントも参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Service Pack 4 (SP4) の更新プログラムのロールアップ。Windows XP Service Pack 2 (SP2) のフィルター マネージャーロールアップ。
サポートされる最小サーバー Microsoft Windows Server 2003 SP1
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

ACCESS_MASK

CcPurgeCacheSection

mmFlushImageSection の

mmForceSectionClosed の

ZwCreateSection