WdfIoResourceListAppendDescriptor, fonction (wdfresource.h)
[S’applique uniquement à KMDF]
La méthode WdfIoResourceListAppendDescriptor ajoute un descripteur de ressource à la fin de la configuration logique d’une liste des exigences de ressources.
Syntaxe
NTSTATUS WdfIoResourceListAppendDescriptor(
[in] WDFIORESLIST ResourceList,
[in] PIO_RESOURCE_DESCRIPTOR Descriptor
);
Paramètres
[in] ResourceList
Handle vers un objet de liste de plages de ressources framework 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 de retour
WdfIoResourceListAppendDescriptor retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Retourner le code | Description |
---|---|
|
Un paramètre non valide a été spécifié. |
|
Le pilote n’a pas été 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. |
Une vérification des bogues système se produit si le pilote fournit un handle d’objet non valide.
Remarques
L’infrastructure copie le contenu de la structure IO_RESOURCE_DESCRIPTOR que le descripteur paramètre pointe vers le stockage interne, de sorte que la routine de pilote qui appelle WdfIoResourceListAppendDescriptor peut allouer la structure localement. Une fois que le pilote appelle 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 Framework-Based Pilotes.
Exemples
L’exemple de code suivant crée une configuration logique vide et l’ajoute à une liste des besoins en ressources. 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
);
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
version minimale de KMDF | 1.0 |
d’en-tête | wdfresource.h (include Wdf.h) |
bibliothèque | Wdf01000.sys (voir Versioning de la bibliothèque Framework.) |
IRQL | <=DISPATCH_LEVEL |
règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |