WdfControlDeviceInitAllocate, fonction (wdfcontrol.h)

[S’applique à KMDF uniquement]

La méthode WdfControlDeviceInitAllocate alloue une structure WDFDEVICE_INIT qu’un pilote utilise lors de la création d’un objet de périphérique de contrôle.

Syntaxe

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

Paramètres

[in] Driver

Handle pour un objet de pilote d’infrastructure.

[in] SDDLString

Pointeur vers une structure UNICODE_STRING qui décrit une chaîne Unicode. Cette chaîne est une représentation SDDL (Security Descriptor Definition Language) d’un descripteur de sécurité. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

WdfControlDeviceInitAllocate retourne un pointeur vers une structure de WDFDEVICE_INIT allouée par l’infrastructure, si l’opération réussit. Sinon, la méthode retourne NULL.

Remarques

Si vous souhaitez que votre pilote crée un objet de périphérique de contrôle, il doit appeler WdfControlDeviceInitAllocate pour obtenir une structure WDFDEVICE_INIT qu’il peut passer à WdfDeviceCreate.

Votre pilote peut spécifier un paramètre de sécurité à l’aide d’un sous-ensemble de SDDL. Le fichier Wdmsec.h définit un ensemble de constantes au format SDDL_DEVOBJ_Xxx que vous pouvez utiliser. Pour plus d’informations sur les descripteurs de sécurité et SDDL, consultez Sécurisation des objets d’appareil.

La méthode WdfDeviceInitAssignSDLString remplace le paramètre de sécurité, le cas échéant, spécifié par WdfControlDeviceInitAllocate .

Pour plus d’informations sur l’appel de WdfControlDeviceInitAllocate, consultez Utilisation d’objets d’appareil de contrôle.

Exemples

L’exemple de code suivant alloue une structure de DEVICE_INIT, attribue un nom d’objet d’appareil, inscrit une fonction de rappel de notification d’arrêt et crée un objet d’appareil de contrôle. Pour obtenir un exemple plus complexe qui utilise WdfControlDeviceInitAllocate, consultez l’exemple de pilote NONPNP ou l’exemple de pilote 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);

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfcontrol.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).)
IRQL PASSIVE_LEVEL
Règles de 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)

Voir aussi

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreate

WdfDeviceInitAssignName

WdfDeviceInitAssignSDLString