Partager via


WdfDeviceMiniportCreate, fonction (wdfminiport.h)

[S’applique uniquement à KMDF]

La méthode WdfDeviceMiniportCreate crée un objet d’appareil framework qu’un pilote miniport peut utiliser.

Syntaxe

NTSTATUS WdfDeviceMiniportCreate(
  [in]           WDFDRIVER              Driver,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [in]           PDEVICE_OBJECT         DeviceObject,
  [in, optional] PDEVICE_OBJECT         AttachedDeviceObject,
  [in, optional] PDEVICE_OBJECT         Pdo,
  [out]          WDFDEVICE              *Device
);

Paramètres

[in] Driver

Handle de l’objet pilote de framework du pilote, obtenu par un appel précédent à WdfDriverCreate.

[in, optional] Attributes

Pointeur vers une structure WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui contient des attributs pour le nouvel objet. Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.

[in] DeviceObject

Pointeur vers une structure de DEVICE_OBJECT WDM qui représente l’objet de périphérique fonctionnel (FDO) pour le pilote miniport.

[in, optional] AttachedDeviceObject

Pointeur vers une structure de DEVICE_OBJECT WDM qui représente l’objet appareil inférieur suivant dans la pile d’appareils.

[in, optional] Pdo

Pointeur vers une structure DEVICE_OBJECT WDM qui représente l’objet d’appareil physique (PDO) de l’appareil.

[out] Device

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet d’appareil framework.

Valeur de retour

Si la méthode WdfDeviceMiniportCreate ne rencontre aucune erreur, elle retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :

Code de retour Description
STATUS_INSUFFICIENT_RESOURCES
Un objet d’appareil n’a pas pu être alloué.
 

Pour obtenir la liste d’autres valeurs de retour qui WdfDeviceMiniportCreate peuvent retourner, consultez Framework Object Creation Errors.

La méthode peut retourner d’autres valeurs NTSTATUS .

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Remarques

Si votre pilote miniport utilise l’infrastructure, le pilote miniport doit appeler WdfDeviceMiniportCreate lorsque son pilote de port l’informe qu’un appareil est disponible. Les pilotes miniport n’appellent pas WdfDeviceCreate.

Votre pilote miniport peut recevoir son DeviceObject, AttachedDeviceObjectet pointeurs PDO de son pilote de port. Par exemple, un pilote miniport NDIS peut obtenir ces pointeurs en appelant NdisMGetDeviceProperty.

Les restrictions suivantes s’appliquent aux objets d’appareil framework qu’un pilote miniport obtient en appelant WdfDeviceMiniportCreate:

  • L’appareil que l’objet de l’appareil représente doit prendre en charge Plug-and-Play.
  • L’objet appareil ne prend pas en charge les fonctions de rappel d’événement de l’objet appareil. Par conséquent, le pilote de port doit gérer toutes les opérations de gestion de l’alimentation et plug-and-Play (PnP).
  • Le handle d’objet d’appareil ne peut pas être transmis à WdfWmiProviderCreate. Le pilote de port doit donc fournir toute prise en charge requise pour Windows Management Instrumentation (WMI).
  • Le handle d’objet d’appareil ne peut pas être transmis à WdfIoQueueCreate. Par conséquent, l’infrastructure ne prend pas en charge les files d’attente d’E/S pour les pilotes miniport.
  • Le handle d’objet d’appareil ne peut pas être passé à WdfInterruptCreate, de sorte que l’infrastructure ne prend pas en charge les objets d’interruption pour les pilotes miniport.
  • Le handle d’objet d’appareil ne peut pas être transmis à des méthodes d’objet d’appareil d’infrastructure générale , à l’exception de WdfDeviceGetIoTarget, WdfDeviceWdmGetDevice, et WdfDeviceWdmGetDeviceWdmGetPhysicalDevice.
  • Le handle d’objet d’appareil ne peut pas être transmis à des méthodes FDO framework sauf WdfFdoQueryForInterface.
  • Le handle d’objet d’appareil ne peut pas être transmis à des méthodes PDO de framework ou à WdfChildListCreate, de sorte que le pilote miniport ne peut pas être un pilote de bus.
  • Le pilote doit appeler WdfObjectDelete pour supprimer l’objet d’appareil qui WdfDeviceMiniportCreate crée.
Les objets d’appareil framework qui WdfDeviceMiniportCreate créer peuvent être utilisés comme objet parent pour tout objet framework créé par la suite.

Pour envoyer des requêtes d’E/S à des cibles d’E/S, le pilote miniport peut transmettre le handle d’objet d’appareil à WdfDeviceGetIoTarget, WdfIoTargetCreate, ou WdfUsbTargetDeviceCreateWithParameters.

Le pilote miniport peut transmettre le handle d’objet d’appareil à WdfDmaEnablerCreate si l’appareil prend en charge les opérations DMA.

Pour plus d’informations sur les pilotes miniports, consultez Using Kernel-Mode Driver Framework with Miniport Drivers.

Exemples

L’exemple de code suivant appelle NdisMGetDeviceProperty pour obtenir deviceObject, AttachedDeviceObjectet pointeurs PDO ; initialise l’espace de contexte de l’objet d’appareil et crée un objet d’appareil miniport.

WDF_OBJECT_ATTRIBUTES  ObjectAttributes;

NdisMGetDeviceProperty(
                       MiniportAdapterHandle,
                       &Adapter->Pdo,
                       &Adapter->Fdo,
                       &Adapter->NextDeviceObject,
                       NULL,
                       NULL
                       );
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
                                        &ObjectAttributes,
                                        WDF_DEVICE_INFO
                                        );
ntStatus = WdfDeviceMiniportCreate(
                                   WdfGetDriver(),
                                   &ObjectAttributes,
                                   Adapter->Fdo,
                                   Adapter->NextDeviceObject,
                                   Adapter->Pdo,
                                   &Adapter->WdfDevice
                                   );
if (!NT_SUCCESS (ntStatus)) {
    Status = NDIS_STATUS_FAILURE;
    break;
}

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
En-tête wdfminiport.h (include Wdfminiport.h)
Bibliothèque Wdf01000.sys (voir Versioning de la bibliothèque Framework.)
IRQL PASSIVE_LEVEL
règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload