Fungsi FsRtlCreateSectionForDataScan (ntifs.h)

Rutinitas FsRtlCreateSectionForDataScan membuat objek bagian. Gunakan rutinitas ini dengan sangat hati-hati. (Lihat bagian Keterangan berikut.)

Sintaks

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
);

Parameter

[out] SectionHandle

Penunjuk ke variabel yang dialokasikan penelepon yang menerima handel buram ke objek bagian.

[out] SectionObject

Penunjuk ke variabel yang dialokasikan penelepon yang menerima penunjuk buram ke objek bagian.

[out, optional] SectionFileSize

Penunjuk ke variabel yang dialokasikan penelepon yang menerima ukuran, dalam byte, file pada saat objek bagian dibuat. Parameter ini bersifat opsional dan dapat berupa NULL.

[in] FileObject

Objek file untuk file yang terbuka. Objek bagian akan didukung oleh file yang ditentukan. Parameter ini diperlukan dan tidak boleh NULL.

[in] DesiredAccess

Menentukan akses yang diinginkan untuk objek bagian sebagai satu atau beberapa bendera ACCESS_MASK berikut.

Bendera DesiredAccess Memperbolehkan penelepon untuk
SECTION_MAP_READ Baca tampilan bagian.
SECTION_MAP_WRITE Tulis tampilan bagian .
SECTION_QUERY Kueri objek bagian untuk informasi tentang bagian tersebut. Driver harus mengatur bendera ini.
SECTION_ALL_ACCESS Semua tindakan yang ditentukan oleh bendera sebelumnya serta yang ditentukan oleh STANDARD_RIGHTS_REQUIRED. (Untuk informasi selengkapnya tentang STANDARD_RIGHTS_REQUIRED, lihat ACCESS_MASK.)

[in, optional] ObjectAttributes

Penunjuk ke struktur OBJECT_ATTRIBUTES yang menentukan nama objek dan atribut lainnya. Gunakan makro InitializeObjectAttributes untuk menginisialisasi struktur ini. Karena FsRtlCreateSectionForDataScan menyisipkan objek ini ke dalam tabel handel proses, pemanggil harus menentukan atribut OBJ_KERNEL_HANDLE saat memanggil InitializeObjectAttributes.

[in, optional] MaximumSize

Parameter ini dicadangkan untuk digunakan di masa mendatang.

[in] SectionPageProtection

Menentukan perlindungan yang akan ditempatkan pada setiap halaman di bagian . Tentukan salah satu nilai berikut ini. Parameter ini diperlukan dan tidak boleh nol.

Bendera Makna
PAGE_READONLY Mengaktifkan akses baca-saja ke wilayah halaman yang diterapkan. Upaya untuk menulis ke wilayah yang berkomitmen menghasilkan pelanggaran akses. Jika sistem membedakan antara akses baca-saja dan menjalankan akses, upaya untuk menjalankan kode di wilayah yang dilakukan menghasilkan pelanggaran akses.
PAGE_READWRITE Memungkinkan akses baca dan tulis ke wilayah halaman yang berkomitmen.

[in] AllocationAttributes

Bitmasks dari bendera SEC_XXX menentukan atribut alokasi bagian. Tentukan satu atau beberapa nilai berikut ini. Parameter ini diperlukan dan tidak boleh nol.

Bendera Makna
SEC_COMMIT Mengalokasikan penyimpanan fisik dalam memori atau dalam file halaman pada disk untuk semua halaman bagian. Ini adalah pengaturan default. Perhatikan bahwa bendera ini diperlukan dan tidak dapat dihilangkan.
SEC_FILE File yang ditentukan oleh parameter FileObject adalah file yang dipetakan.

[in] Flags

Parameter ini dicadangkan untuk digunakan di masa mendatang.

Mengembalikan nilai

FsRtlCreateSectionForDataScan mengembalikan nilai STATUS_SUCCESS atau NTSTATUS yang sesuai, seperti salah satu hal berikut ini:

Menampilkan kode Deskripsi
STATUS_END_OF_FILE
Ukuran file yang ditentukan oleh parameter FileObject adalah nol. Ini adalah kode kesalahan.
STATUS_FILE_LOCK_CONFLICT
File yang ditentukan oleh parameter FileObject dikunci. Ini adalah kode kesalahan.
STATUS_INSUFFICIENT_RESOURCES
FsRtlCreateSectionForDataScan mengalami kegagalan alokasi kumpulan. Ini adalah kode kesalahan.
STATUS_INVALID_FILE_FOR_SECTION
File yang ditentukan oleh parameter FileObject tidak mendukung bagian. Ini adalah kode kesalahan.
STATUS_INVALID_PARAMETER_8
Nilai yang ditentukan untuk parameter SectionPageProtection tidak valid. Ini adalah kode kesalahan.
STATUS_INVALID_PARAMETER_9
Pemanggil menentukan nilai yang tidak valid untuk parameter AllocationAttributes. Ini adalah kode kesalahan.
STATUS_PRIVILEGE_NOT_HELD

Pemanggil tidak memiliki hak istimewa yang diperlukan untuk membuat objek bagian dengan akses yang ditentukan dalam parameter DesiredAccess. Ini adalah kode kesalahan.

Keterangan

Penting Rutinitas FsRtlCreateSectionForDataScan hanya boleh digunakan dalam kasus di mana handel ke objek file yang ditentukan dalam parameter FileObject belum dibuat (biasanya saat memproses operasi pasca-buat). Jika driver memiliki handel ke objek file atau dapat memperoleh handel ke objek file, driver harus menggunakan rutinitas ZwCreateSection sebagai gantinya.
 
Setelah objek bagian yang dibuat oleh rutinitas ini tidak lagi diperlukan, pastikan untuk menutup handel objek bagian (SectionHandle) dengan memanggil rutinitas ZwClose dan dereferensi objek bagian itu sendiri (SectionObject) dengan memanggil rutinitas ObDereferenceObject .

Untuk informasi selengkapnya tentang membuat bagian dan tampilan memori yang dipetakan, lihat Objek dan Tampilan Bagian. Lihat juga dokumentasi untuk rutinitas CreateFileMapping di Microsoft Windows SDK.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Pembaruan Rollup untuk Windows 2000 Paket Layanan 4 (SP4); Rollup Manajer Filter untuk Windows XP Service Pack 2 (SP2).
Server minimum yang didukung Microsoft Windows Server 2003 SP1
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

ACCESS_MASK

CcPurgeCacheSection

MmFlushImageSection

MmForceSectionClosed

ZwCreateSection