Condividi tramite


Funzione WdfControlDeviceInitAllocate (wdfcontrol.h)

[Si applica solo a KMDF]

Il metodo WdfControlDeviceInitAllocate alloca una struttura WDFDEVICE_INIT utilizzata da un driver durante la creazione di un nuovo oggetto dispositivo di controllo.

Sintassi

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

Parametri

[in] Driver

Handle a un oggetto driver framework.

[in] SDDLString

Puntatore a una struttura UNICODE_STRING che descrive una stringa Unicode. Questa stringa è una rappresentazione SDDL (Security Descriptor Definition Language) di un descrittore di sicurezza. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Valore restituito

WdfControlDeviceInitAllocate restituisce un puntatore a una struttura di WDFDEVICE_INIT allocata da framework, se l'operazione ha esito positivo. In caso contrario, il metodo restituisce NULL.

Commenti

Se si vuole che il driver crei un oggetto dispositivo di controllo, il driver deve chiamare WdfControlDeviceInitAllocate per ottenere una struttura WDFDEVICE_INIT che può passare a WdfDeviceCreate.

Il driver può specificare un'impostazione di sicurezza usando un subset di SDDL. Il file Wdmsec.h definisce un set di costanti formattate SDDL_DEVOBJ_Xxx che è possibile usare. Per altre informazioni sui descrittori di sicurezza e SDDL, vedere Protezione degli oggetti dispositivo.

Il metodo WdfDeviceInitAssignSDDLString sovrascrive l'impostazione di sicurezza, se presente, specificata da WdfControlDeviceInitAllocate .

Per altre informazioni sulla chiamata a WdfControlDeviceInitAllocate, vedere Uso di oggetti dispositivo di controllo.

Esempio

L'esempio di codice seguente alloca una struttura DEVICE_INIT, assegna un nome dell'oggetto dispositivo, registra una funzione di callback di notifica di arresto e crea un oggetto dispositivo di controllo. Per un esempio più complesso che usa WdfControlDeviceInitAllocate, vedere il driver di esempio NONPNP o il driver di esempio 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);

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1,0
Intestazione wdfcontrol.h (includere Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL PASSIVE_LEVEL
Regole di conformità 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)

Vedi anche

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreate

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString