Bagikan melalui


struktur IO_DRIVER_CREATE_CONTEXT (ntddk.h)

Struktur IO_DRIVER_CREATE_CONTEXT digunakan untuk meneruskan parameter tambahan ke rutinitas IoCreateFileEx dan FltCreateFileEx2 . Struktur ini bersifat opsional.

Rutinitas IoCreateFileEx digunakan oleh driver filter lama dan rutinitas FltCreateFileEx2 digunakan oleh driver minifilter.

Sintaks

typedef struct _IO_DRIVER_CREATE_CONTEXT {
  CSHORT               Size;
  struct _ECP_LIST     *ExtraCreateParameter;
  PVOID                DeviceObjectHint;
  PTXN_PARAMETER_BLOCK TxnParameters;
  PESILO               SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;

Anggota

Size

Anggota baca-saja yang diinisialisasi oleh rutinitas IoInitializeDriverCreateContext .

ExtraCreateParameter

Penunjuk ke struktur ECP_LIST , yang berisi daftar entri parameter buat ekstra (ECP). Lihat bagian Keterangan berikut untuk informasi penting.

DeviceObjectHint

Jika IO_DRIVER_CREATE_CONTEXT digunakan untuk meneruskan parameter pembuatan tambahan ke rutinitas FltCreateFileEx2 , anggota ini harus NULL.

Jika IO_DRIVER_CREATE_CONTEXT digunakan untuk meneruskan parameter pembuatan tambahan ke rutinitas IoCreateFileEx , anggota ini adalah penunjuk ke objek perangkat tempat permintaan pembuatan akan dikirim. Objek perangkat harus berupa filter warisan atau objek perangkat sistem file dalam tumpukan driver sistem file untuk volume tempat file atau direktori berada. Dalam kasus IoCreateFileEx , parameter ini bersifat opsional dan dapat berupa NULL. Jika parameter ini NULL, permintaan akan dikirim ke objek perangkat di bagian atas tumpukan driver.

TxnParameters

Penunjuk ke transaksi yang ingin Anda kaitkan dengan operasi buat. Operasi buat akan menjadi bagian dari transaksi jika nilai anggota ini adalah penunjuk yang valid ke transaksi. Jika nilai anggota ini adalah NULL, operasi buat tidak akan menjadi bagian dari transaksi.

SiloContext

Kontainer tempat file berada. Anggota ini diperkenalkan di Windows 10, versi 1607.

Keterangan

Struktur IO_DRIVER_CREATE_CONTEXT dapat dialokasikan dari kumpulan halaman atau tidak bertumpuk. Rutinitas IoInitializeDriverCreateContext harus menginisialisasi struktur IO_DRIVER_CREATE_CONTEXT sebelum struktur dapat digunakan.

Anggota struktur IO_DRIVER_CREATE_CONTEXT (tidak termasuk anggota Ukuran ) berfungsi sebagai parameter tambahan untuk rutinitas IoCreateFileEx dan FltCreateFileEx2 . Relatif terhadap antarmuka rutin IoCreateFileEx dan FltCreateFileEx2 , informasi berikut mungkin berguna:

  • Struktur ECP_LIST berisi daftar entri parameter buat ekstra (ECP). Setiap entri ECP (struktur konteks ECP) dalam fungsi daftar ECP (ECP_LIST struktur) sebagai parameter buat tambahan untuk IoCreateFileEx dan FltCreateFileEx2.

    Untuk menentukan ECP sebagai bagian dari operasi pembuatan, inisialisasi anggota ExtraCreateParameter dari struktur IO_DRIVER_CREATE_CONTEXT dengan rutinitas yang benar:

    • Untuk driver filter warisan, rutinitas FsRtlAllocateExtraCreateParameterList harus digunakan untuk mengalokasikan kumpulan memori untuk struktur ECP_LIST. Sistem operasi tidak secara otomatis membebaskan struktur ECP_LIST. Sebaliknya, setelah struktur ECP_LIST dialokasikan, struktur tersebut akhirnya harus dibebaskan dengan menggunakan rutinitas FsRtlFreeExtraCreateParameterList .

    • Untuk driver minifilter, rutinitas FltAllocateExtraCreateParameterList harus digunakan untuk mengalokasikan kumpulan memori untuk struktur ECP_LIST. Sistem operasi tidak secara otomatis membebaskan struktur ECP_LIST. Sebaliknya, setelah struktur ECP_LIST dialokasikan, pada akhirnya harus dibebaskan dengan menggunakan rutinitas FltFreeExtraCreateParameterList .

    Jika ECP digunakan, EKP harus dibuat, dimanipulasi, dan dibebaskan dengan menggunakan rutinitas yang sesuai. Misalnya, driver minifilter menggunakan rutinitas FltInsertExtraCreateParameter untuk menyisipkan entri ECP ke dalam daftar ECP. Bagian Lihat Juga berikut mencantumkan banyak rutinitas yang diperlukan ini.

    Setelah kembali dari panggilan ke IoCreateFileEx atau FltCreateFileEx2, daftar ECP tidak berubah dan dapat diteruskan ke panggilan IoCreateFileEx atau FltCreateFileEx2 tambahan untuk operasi pembuatan baru.

  • Untuk membuat atau membuka file dalam konteks transaksi, atur anggota TxnParameters dari struktur IO_DRIVER_CREATE_CONTEXT ke nilai yang dikembalikan oleh rutinitas IoGetTransactionParameterBlock .

Persyaratan

Persyaratan Nilai
Header ntddk.h (termasuk Ntddk.h, Ntifs.h, Fltkernel.h)

Lihat juga

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext