Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[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) |