WdfIoResourceListAppendDescriptor, fonction (wdfresource.h)
[S’applique uniquement à KMDF]
La méthode WdfIoResourceListAppendDescriptor ajoute un descripteur de ressources à la fin de la configuration logique d’une liste de ressources requises.
Syntaxe
NTSTATUS WdfIoResourceListAppendDescriptor(
[in] WDFIORESLIST ResourceList,
[in] PIO_RESOURCE_DESCRIPTOR Descriptor
);
Paramètres
[in] ResourceList
Handle d’un objet resource-range-list d’infrastructure qui représente une configuration logique des ressources matérielles pour un appareil.
[in] Descriptor
Pointeur vers une structure IO_RESOURCE_DESCRIPTOR qui décrit une ressource matérielle.
Valeur retournée
WdfIoResourceListAppendDescriptor retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
Un paramètre non valide a été spécifié. |
|
Le pilote n’était pas autorisé à ajouter des descripteurs à la configuration logique spécifiée par le paramètre ResourceList . |
|
L’infrastructure n’a pas pu allouer d’espace pour stocker le descripteur. |
Un bogue système case activée se produit si le pilote fournit un handle d’objet non valide.
Remarques
L’infrastructure copie le contenu de la structure IO_RESOURCE_DESCRIPTOR vers laquelle pointe le paramètre Descriptor dans le stockage interne, de sorte que la routine de pilote qui appelle WdfIoResourceListAppendDescriptor peut allouer la structure localement. Une fois que le pilote a appelé WdfIoResourceListAppendDescriptor, le pilote peut réutiliser la structure IO_RESOURCE_DESCRIPTOR .
Pour plus d’informations sur les listes de ressources requises et les configurations logiques, consultez Ressources matérielles pour les pilotes Framework-Based.
Exemples
L’exemple de code suivant crée une configuration logique vide et l’ajoute à une liste de ressources requises. Ensuite, l’exemple initialise un descripteur de ressource et ajoute le descripteur à la configuration logique.
IO_RESOURCE_DESCRIPTOR descriptor;
NTSTATUS status;
WDFIORESLIST logConfig;
status = WdfIoResourceListCreate(
RequirementsList,
WDF_NO_OBJECT_ATTRIBUTES,
&logConfig
);
if (!NT_SUCCESS(status)) {
return status;
}
status = WdfIoResourceRequirementsListAppendIoResList(
RequirementsList,
logConfig
);
if (!NT_SUCCESS(status)) {
return status;
}
RtlZeroMemory(
&descriptor,
sizeof(descriptor)
);
descriptor.Option = 0;
descriptor.Type = CmResourceTypePort;
descriptor.ShareDisposition = CmResourceShareDeviceExclusive;
descriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
descriptor.u.Port.Length = 1;
descriptor.u.Port.Alignment = 0x01;
descriptor.u.Port.MinimumAddress.QuadPart = 0;
descriptor.u.Port.MaximumAddress.QuadPart = 0xFFFF;
status = WdfIoResourceListAppendDescriptor(
logConfig,
&descriptor
);
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
En-tête | wdfresource.h (include Wdf.h) |
Bibliothèque | Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.) |
IRQL | <=DISPATCH_LEVEL |
Règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |