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 値を返します。
リターン コード | 説明 |
---|---|
|
FileObject パラメーターで指定されたファイルのサイズは 0 です。 これはエラー コードです。 |
|
FileObject パラメーターで指定されたファイルはロックされています。 これはエラー コードです。 |
|
FsRtlCreateSectionForDataScan でプール割り当てエラーが発生しました。 これはエラー コードです。 |
|
FileObject パラメーターで指定されたファイルは、セクションをサポートしていません。 これはエラー コードです。 |
|
SectionPageProtection パラメーターに指定された値が無効です。 これはエラー コードです。 |
|
呼び出し元が AllocationAttributes パラメーターに無効な値を指定しました。 これはエラー コードです。 |
|
呼び出し元には、DesiredAccess パラメーターで指定されたアクセス権を持つセクション オブジェクトを作成するために必要な特権がありませんでした。 これはエラー コードです。 |
注釈
マップされたセクションとメモリのビューの作成の詳細については、「 セクション オブジェクトとビュー」を参照してください。 Microsoft Windows SDKの CreateFileMapping ルーチンのドキュメントも参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Service Pack 4 (SP4) の更新プログラムのロールアップ。Windows XP Service Pack 2 (SP2) のフィルター マネージャー ロールアップ。 |
サポートされている最小のサーバー | Microsoft Windows Server 2003 SP1 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |