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 per 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 altre informazioni, vedere la sezione Osservazioni seguente.

Valore restituito

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

Osservazioni

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 SDDL_DEVOBJ_Xxxformattate che è possibile usare. Per altre informazioni sui descrittori di sicurezza e SDDL, vedere Protezione degli oggetti dispositivo.

Il metodo WdfDeviceInitAssignSDLString sovrascrive l'impostazione di sicurezza, se presente, che WdfControlDeviceInitAllocate.

Per altre informazioni sulla chiamata di WdfControlDeviceInitAllocate, vedere Using Control Device Objects.

Esempi

L'esempio di codice seguente alloca una struttura di DEVICE_INIT, assegna un nome di 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);

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.0
intestazione wdfcontrol.h (include Wdf.h)
libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
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)

Vedere anche

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreare

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString