WdfControlDeviceInitAllocate-Funktion (wdfcontrol.h)

[Gilt nur für KMDF]

Die WdfControlDeviceInitAllocate-Methode weist eine WDFDEVICE_INIT Struktur zu, die ein Treiber beim Erstellen eines neuen Steuerelementgeräteobjekts verwendet.

Syntax

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

Parameter

[in] Driver

Ein Handle für ein Frameworktreiberobjekt.

[in] SDDLString

Ein Zeiger auf eine UNICODE_STRING-Struktur , die eine Unicode-Zeichenfolge beschreibt. Diese Zeichenfolge ist eine SDDL-Darstellung (Security Descriptor Definition Language) eines Sicherheitsdeskriptors. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

WdfControlDeviceInitAllocate gibt einen Zeiger auf eine vom Framework zugewiesene WDFDEVICE_INIT-Struktur zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode NULL zurück.

Hinweise

Wenn Der Treiber ein Steuerelementgeräteobjekt erstellen soll, muss der Treiber WdfControlDeviceInitAllocate aufrufen, um eine WDFDEVICE_INIT-Struktur abzurufen, die er an WdfDeviceCreate übergeben kann.

Ihr Treiber kann eine Sicherheitseinstellung mithilfe einer Teilmenge von SDDL angeben. Die Datei Wdmsec.h definiert einen Satz von SDDL_DEVOBJ_Xxx-formatierten Konstanten, die Sie verwenden können. Weitere Informationen zu Sicherheitsbeschreibungen und SDDL finden Sie unter Schützen von Geräteobjekten.

Die WdfDeviceInitAssignSDDLString-Methode überschreibt ggf. die Sicherheitseinstellung, die WdfControlDeviceInitAllocate angibt.

Weitere Informationen zum Aufrufen von WdfControlDeviceInitAllocate finden Sie unter Verwenden von Steuerelementgeräteobjekten.

Beispiele

Im folgenden Codebeispiel wird eine DEVICE_INIT-Struktur zugeordnet, ein Geräteobjektname zugewiesen, eine Rückruffunktion zum Herunterfahren von Benachrichtigungen registriert und ein Steuerelementgerätobjekt erstellt. Ein komplexeres Beispiel, das WdfControlDeviceInitAllocate verwendet, finden Sie im NONPNP-Beispieltreiber oder im NDISProt-Beispieltreiber .

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

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
Kopfzeile wdfcontrol.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln ControlDeviceInitAPI(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(kmdf), InitFreeDeviceCreate(kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreate

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString