Freigeben über


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.

Bemerkungen

Wenn Der Treiber ein Steuerelementgerätobjekt erstellen soll, muss der Treiber WdfControlDeviceInitAllocate aufrufen, um eine WDFDEVICE_INIT Struktur abzurufen, die an WdfDeviceCreateübergeben werden 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 Sicherheitsdeskriptoren und SDDL finden Sie unter Sichern von Geräteobjekten.

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

Weitere Informationen zum Aufrufen WdfControlDeviceInitAllocatefinden Sie unter Using Control Device Objects.

Beispiele

Im folgenden Codebeispiel wird eine DEVICE_INIT Struktur zugewiesen, ein Geräteobjektname zugewiesen, eine Rückruffunktion für das Herunterfahren registriert und ein Steuerelementgerätobjekt erstellt. Ein komplexeres Beispiel, das WdfControlDeviceInitAllocateverwendet, finden Sie unter dem NONPNP Beispieltreiber oder dem 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- Universal
Minimale KMDF-Version 1.0
Header- wdfcontrol.h (einschließen Wdf.h)
Library Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln ControlDeviceInitAPI(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(km), InitFreeDeviceCreate(kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Siehe auch

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreate

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString-