IOCTL_PMI_GET_CAPABILITIES IOCTL (pmi.h)
La demande IOCTL_PMI_GET_CAPABILITIES obtient les informations relatives aux capacités et aux ressources d’un compteur de puissance.
Code principal
Mémoire tampon d'entrée
Le membre AssociatedIrp.SystemBuffer du paquet de demandes d’E/S (IRP) pointe vers une mémoire tampon allouée par l’initiateur qui est utilisée à la fois comme mémoire tampon d’entrée et mémoire tampon de sortie pour la requête. Lors de l’entrée, cette mémoire tampon contient une structure PMI_CAPABILITIES dans laquelle les membres Version et CapabilityType sont définis sur des valeurs valides. Le membre CapabilitiesType contient une valeur d’énumération de PMI_CAPABILITIES_TYPE qui spécifie le type d’informations de capacité PMI à récupérer à partir du compteur de puissance. Cette valeur détermine également la taille de la mémoire tampon de sortie requise pour contenir ces informations.
Longueur de la mémoire tampon d’entrée
Le membre Parameters.DeviceIoControl.InputBufferLength de l’emplacement actuel de la pile d’E/S (IO_STACK_LOCATION) de l’IRP est défini sur la taille en octets de la mémoire tampon pointée par le membre AssociatedIrp.SystemBuffer . Cette taille doit être supérieure ou égale à sizeof(PMI_CAPABILITIES) pour que la demande échoue avec une erreur status de STATUS_INVALID_PARAMETER.
Mémoire tampon de sortie
Si la demande se termine correctement, la mémoire tampon vers laquelle pointe le membre AssociatedIrp.SystemBuffer contient les informations de capacité DEMANDÉEs. Au début de cette mémoire tampon se trouve une structure PMI_CAPABILITIES qui indique le type et la taille des informations contenues dans la mémoire tampon.
Longueur de la mémoire tampon de sortie
Le membre Parameters.DeviceIoControl.OutputBufferLength de l’emplacement actuel de la pile d’E/S de l’IRP est défini sur la taille en octets de la mémoire tampon pointée par le membre AssociatedIrp.SystemBuffer . Pour que la demande aboutisse, cette taille doit être suffisamment grande pour contenir les informations de capacité DEMI spécifiées par la valeur de paramètre d’entrée PMI_CAPABILITIES_TYPE . Sinon, la demande échoue avec une erreur status STATUS_BUFFER_TOO_SMALL.
Bloc d’état
Le membre Information est défini sur la taille, en octets, d’une structure PMI_CAPABILITIES et de ses données de longueur variable.
Le membre Status est défini sur l’une des valeurs suivantes :
STATUS_BUFFER_TOO_SMALL
Le membre Parameters.DeviceIoControl.OutputBufferLength de l’IRP est inférieur à la taille, en octets, d’une structure de PMI_CAPABILITIES et de ses données de longueur variable.
STATUS_INVALID_PARAMETER
La mémoire tampon d’entrée allouée par l’initiateur contient une valeur de PMI_CAPABILITIES_TYPE non valide.
STATUS_SUCCESS
Le pilote WDM qui prend en charge l’interface PMI a effectué la requête IOCTL avec succès.
Remarques
La demande IOCTL_PMI_GET_CAPABILITIES interroge les fonctionnalités OU les informations relatives aux ressources du compteur de puissance. La valeur d’énumération d’entrée PMI_CAPABILITIES spécifie le type d’informations de capacité à retourner. Le type de données et le contenu de la mémoire tampon de sortie varient en fonction des données demandées.
Le tableau suivant décrit le type de données retourné pour la valeur d’énumération PMI_CAPABILITIES_TYPE spécifiée.
PMI_CAPABILITIES_TYPE valeur | Description |
---|---|
PmiMeteredHardware | Structure PMI_METERED_HARDWARE_INFORMATION qui spécifie les périphériques matériels que le compteur d’alimentation surveille. |
PmiReportedCapabilities |
Structure PMI_REPORTED_CAPABILITIES qui spécifie les types de fonctionnalités PMI prises en charge par le compteur de puissance.
Note La structure PMI_REPORTED_CAPABILITIES est de longueur variable. Le pilote doit échouer à cette requête IOCTL si la mémoire tampon de sortie (référencée par le membre MdlAddress de l’IRP) est trop petite.
|
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 7, Windows Server 2008 R2 et versions ultérieures des systèmes d’exploitation Windows. |
En-tête | pmi.h (inclure Pmi.h) |