Bagikan melalui


EVT_WDF_REQUEST_IMPERSONATE fungsi panggilan balik (wdfrequest.h)

[Hanya berlaku untuk UMDF]

Fungsi panggilan balik peristiwa EvtRequestImpersonate driver melakukan tugas pada tingkat peniruan yang diminta, seperti membuka file yang dilindungi.

Sintaks

EVT_WDF_REQUEST_IMPERSONATE EvtWdfRequestImpersonate;

void EvtWdfRequestImpersonate(
  [in]           WDFREQUEST Request,
  [in, optional] PVOID Context
)
{...}

Parameter

[in] Request

Handel ke objek permintaan kerangka kerja yang mewakili permintaan I/O yang memerlukan peniruan identitas.

[in, optional] Context

Penunjuk ke konteks yang sebelumnya disediakan dalam metode WdfRequestImpersonate . Parameter ini bersifat opsional dan dapat berupa NULL jika konteks tidak diperlukan.

Nilai kembali

Tidak ada

Keterangan

User-Mode Driver Framework (UMDF) tidak mengizinkan fungsi panggilan balik EvtRequestImpersonate driver untuk memanggil salah satu metode objek kerangka kerja. Ini memastikan bahwa driver tidak mengekspos tingkat peniruan ke fungsi panggilan balik driver lain atau driver lainnya.

Jenis fungsi EVT_WDF_REQUEST_IMPERSONATE didefinisikan dalam file header Wdfrequest.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan _Use_decl_annotations_ anotasi ke definisi fungsi Anda. Anotasi _Use_decl_annotations_ memastikan bahwa anotasi yang diterapkan ke jenis fungsi EVT_WDF_REQUEST_IMPERSONATE dalam file header digunakan.

Pembatasan berikut juga berlaku:

  • Ketika driver memanggil WdfRequestImpersonate dengan ImpersonationLevel = SecurityIdentification, panggilan balik tidak dapat memanggil LoadLibrary atau melakukan tindakan apa pun yang memerlukan pemeriksaan akses.

  • Prinsip yang sama berlaku untuk beban penundaan DLL. Pertimbangkan contoh di mana driver meniru pada tingkat identifikasi, dan panggilan balik memanggil GetUserNameW. Karena PENUNDAAN API ini pada gilirannya memuat DLL lain dan memanggil GetUserNameExW, panggilan awal mungkin gagal dengan ERROR_PROC_NOT_FOUND atau ERROR_BAD_IMPERSONATION_LEVEL. Dalam kasus seperti itu, panggilan balik harus memanggil GetUserNameExW secara langsung.

Untuk informasi selengkapnya, lihat Menangani Peniruan Klien di Driver UMDF.

Contoh

Untuk menentukan fungsi panggilan balik EvtRequestImpersonate , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk driver. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan fungsi panggilan balik EvtRequestImpersonate yang bernama MyRequestImpersonate, gunakan jenis EVT_WDF_REQUEST_IMPERSONATE seperti yang ditunjukkan dalam contoh kode ini:

EVT_WDF_REQUEST_IMPERSONATE  MyRequestImpersonate;

Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyRequestImpersonate (
    WDFREQUEST  Request
    PVOID  Context
    )
  {...}

Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver KMDF.

Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8.1
Target Platform Universal
Versi UMDF minimum 2.0
Header wdfrequest.h (termasuk Wdf.h)

Lihat juga

WdfRequestImpersonate