Fungsi WdfControlDeviceInitAllocate (wdfcontrol.h)

[Hanya berlaku untuk KMDF]

Metode WdfControlDeviceInitAllocate mengalokasikan struktur WDFDEVICE_INIT yang digunakan driver saat membuat objek perangkat kontrol baru.

Sintaks

PWDFDEVICE_INIT WdfControlDeviceInitAllocate(
  [in] WDFDRIVER            Driver,
  [in] const UNICODE_STRING *SDDLString
);

Parameter

[in] Driver

Handel ke objek driver kerangka kerja.

[in] SDDLString

Penunjuk ke struktur UNICODE_STRING yang menjelaskan string Unicode. String ini adalah representasi Security Descriptor Definition Language (SDDL) dari deskriptor keamanan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Nilai kembali

WdfControlDeviceInitAllocate mengembalikan pointer ke struktur WDFDEVICE_INIT yang dialokasikan kerangka kerja, jika operasi berhasil. Jika tidak, metode mengembalikan NULL.

Keterangan

Jika Anda ingin driver Anda membuat objek perangkat kontrol, driver harus memanggil WdfControlDeviceInitAllocate untuk mendapatkan struktur WDFDEVICE_INIT yang dapat diteruskan ke WdfDeviceCreate.

Driver Anda dapat menentukan pengaturan keamanan dengan menggunakan subset SDDL. File Wdmsec.h menentukan sekumpulan konstanta berformat SDDL_DEVOBJ_Xxx yang dapat Anda gunakan. Untuk informasi selengkapnya tentang deskriptor keamanan dan SDDL, lihat Mengamankan Objek Perangkat.

Metode WdfDeviceInitAssignSDDLString menimpa pengaturan keamanan, jika ada, yang ditentukan WdfControlDeviceInitAllocate .

Untuk informasi selengkapnya tentang memanggil WdfControlDeviceInitAllocate, lihat Menggunakan Objek Perangkat Kontrol.

Contoh

Contoh kode berikut mengalokasikan struktur DEVICE_INIT, menetapkan nama objek perangkat, mendaftarkan fungsi panggilan balik pemberitahuan matikan, dan membuat objek perangkat kontrol. Untuk contoh yang lebih kompleks yang menggunakan WdfControlDeviceInitAllocate, lihat driver sampel NONPNP atau driver sampel NDISProt .

PWDFDEVICE_INIT  deviceInit = NULL;
NTSTATUS  status;
WDF_OBJECT_ATTRIBUTES  objectAttribs;

deviceInit = WdfControlDeviceInitAllocate(
                                          hDriver,
                                          &SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RW_RES_R
                                          );
if (deviceInit == NULL) {
    status = STATUS_INSUFFICIENT_RESOURCES;
    goto Error;
}
status = WdfDeviceInitAssignName(
                                 deviceInit,
                                 &ntDeviceName
                                 );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(deviceInit);
    deviceInit = NULL;
    goto Error;
}
WdfControlDeviceInitSetShutdownNotification(
                                            deviceInit,
                                            EvtShutdownNotification,
                                            WdfDeviceShutdown
                                            );
WDF_OBJECT_ATTRIBUTES_INIT(&objectAttribs);

status = WdfDeviceCreate(
                         &deviceInit,
                         &objectAttribs,
                         &controlDevice
                         );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(deviceInit);
    deviceInit = NULL;
    goto Error;
}
WdfControlFinishInitializing(controlDevice);

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfcontrol.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI ControlDeviceInitAPI(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(kmdf), InitFreeDeviceCreate(kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Lihat juga

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceBuat

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString