WdfDeviceMiniportCreate, fonction (wdfminiport.h)
[S’applique à KMDF uniquement]
La méthode WdfDeviceMiniportCreate crée un objet de périphérique d’infrastructure 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 d’infrastructure du pilote, obtenu par un appel précédent à WdfDriverCreate.
[in, optional] Attributes
Pointeur vers une structure de 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 d’appareil inférieur suivant dans la pile d’appareils.
[in, optional] Pdo
Pointeur vers une structure de DEVICE_OBJECT WDM qui représente l’objet de périphérique physique (PDO) de l’appareil.
[out] Device
Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet d’appareil d’infrastructure.
Valeur retournée
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 |
---|---|
|
Impossible d’allouer un objet d’appareil. |
Pour obtenir la liste des autres valeurs de retour que WdfDeviceMiniportCreate peut retourner, consultez Erreurs de création d’objet framework.
La méthode peut retourner d’autres valeurs NTSTATUS.
Un bogue case activée 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 ses pointeurs DeviceObject, AttachedDeviceObject et 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 d’infrastructure qu’un pilote miniport obtient en appelant WdfDeviceMiniportCreate :
- L’appareil que l’objet d’appareil représente doit prendre en charge Plug-and-Play.
- L’objet d’appareil ne prend pas en charge les fonctions de rappel d’événement de l’objet d’appareil. Par conséquent, le pilote de port doit gérer toutes les opérations de Plug-and-Play (PnP) et de gestion de l’alimentation.
- Le handle d’objet de périphérique 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, de sorte que l’infrastructure ne prend pas en charge les files d’attente d’E/S pour les pilotes miniport.
- Le handle d’objet de périphérique 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, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDevice et WdfDeviceWdmGetPhysicalDevice.
- Le handle d’objet d’appareil ne peut pas être passé à aucune méthode FDO d’infrastructure à l’exception de WdfFdoQueryForInterface.
- Le handle d’objet de périphérique ne peut pas être transmis à des méthodes PDO d’infrastructure ou à WdfChildListCreate, de sorte que le pilote miniport ne peut pas être un pilote de bus.
- Le pilote doit finalement appeler WdfObjectDelete pour supprimer l’objet d’appareil créé par WdfDeviceMiniportCreate .
Pour envoyer des demandes d’E/S aux cibles d’E/S, le pilote miniport peut transmettre le handle d’objet de périphérique à WdfDeviceGetIoTarget, WdfIoTargetCreate ou WdfUsbTargetDeviceCreateWithParameters.
Le pilote miniport peut passer le handle d’objet de périphérique à WdfDmaEnablerCreate si l’appareil prend en charge les opérations DMA.
Pour plus d’informations sur les pilotes miniport, consultez Utilisation de Kernel-Mode framework de pilotes avec des pilotes Miniport.
Exemples
L’exemple de code suivant appelle NdisMGetDeviceProperty pour obtenir des pointeurs DeviceObject, AttachedDeviceObject et 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
En-tête | wdfminiport.h (include Wdfminiport.h) |
Bibliothèque | Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).) |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |