structure SW_DEVICE_CREATE_INFO (swdevicedef.h)
Décrit les informations que PnP utilise pour créer l’appareil logiciel.
Syntaxe
typedef struct _SW_DEVICE_CREATE_INFO {
ULONG cbSize;
PCWSTR pszInstanceId;
PCZZWSTR pszzHardwareIds;
PCZZWSTR pszzCompatibleIds;
const GUID *pContainerId;
ULONG CapabilityFlags;
PCWSTR pszDeviceDescription;
PCWSTR pszDeviceLocation;
const SECURITY_DESCRIPTOR *pSecurityDescriptor;
} SW_DEVICE_CREATE_INFO, *PSW_DEVICE_CREATE_INFO;
Membres
cbSize
Taille en octets de cette structure. Utilisez-le comme champ de version. Initialisez-le en sizeof(SW_DEVICE_CREATE_INFO).
pszInstanceId
Chaîne qui représente l’ID d’instance partie de l’ID d’instance d’appareil . Cette valeur est utilisée pour IRP_MN_QUERY_IDBusQueryInstanceID. Étant donné que tous les appareils logiciels sont considérés comme des appareils « UniqueId », cette chaîne doit être un nom unique pour tous les appareils sur cet énumérateur d’appareil logiciel.
pszzHardwareIds
Liste de chaînes pour les ID matériels pour l’appareil logiciel. Cette valeur est utilisée pour IRP_MN_QUERY_IDBusQueryHardwareIDs. Si un client s’attend à ce qu’un package de pilotes soit installé sur l’appareil, le client doit spécifier des ID matériels.
pszzCompatibleIds
Liste des chaînes pour les ID compatibles pour l’appareil logiciel. Cette valeur est utilisée pour IRP_MN_QUERY_IDBusQueryCompatibleIDs. Si un client s’attend à ce qu’un package de pilotes de classe soit installé sur l’appareil, le client spécifie les ID compatibles qui correspondent au package de pilotes de classe. Si un package de pilotes n’est pas nécessaire, nous vous recommandons de spécifier un ID compatible pour classifier le type d’appareil logiciel. Outre les ID compatibles spécifiés dans ce membre, SWD\Generic
et éventuellement SWD\GenericRaw
seront toujours ajoutés en tant qu’ID compatibles les moins spécifiques.
pContainerId
Valeur utilisée pour contrôler l’ID de conteneur de base de l’appareil logiciel. Cette valeur sera utilisée pour IRP_MN_QUERY_IDBusQueryContainerIDs. Pour les situations courantes, nous vous recommandons de définir ce membre sur NULL et d’utiliser l’indicateur SWDeviceCapabilitiesRemovable pour contrôler si l’appareil hérite de l’ID de conteneur du parent ou si PnP affecte un nouvel ID de conteneur aléatoire. Consultez Vue d’ensemble de la fonctionnalité d’appareil amovible pour plus d’informations sur la façon dont cela affecte l’affectation de l’ID de conteneur pour l’appareil. Si le client doit contrôler explicitement l’ID de conteneur, spécifiez un GUID dans la variable à laquelle pointe ce membre. En général, vous ne devez pas spécifier NULL_GUID pour l’ID de conteneur. Consultez Vue d’ensemble des ID de conteneur pour plus d’informations sur les ID de conteneur et la signification spéciale de NULL_GUID.
CapabilityFlags
Combinaison de valeurs SW_DEVICE_CAPABILITIES combinées à l’aide d’une opération OR au niveau du bit. La valeur résultante spécifie les fonctionnalités de l’appareil logiciel. Les fonctionnalités que vous pouvez spécifier lorsque vous créez un périphérique logiciel sont un sous-ensemble des fonctionnalités qu’un pilote de bus peut spécifier à l’aide de la structure DEVICE_CAPABILTIES. Seules les fonctionnalités qui sont logiques pour autoriser la modification d’un appareil logiciel uniquement sont prises en charge. Le reste reçoit les valeurs par défaut appropriées. Voici les valeurs possibles :
Valeur | Signification |
---|---|
|
Aucune capacité n’a été spécifiée. |
|
Ce bit spécifie que l’appareil est amovible de son parent. La définition de cet indicateur équivaut à un pilote de bus définissant l'membre amovible de la structure DEVICE_CAPABILTIES pour une PDO. |
|
Ce bit supprime l’interface utilisateur qui serait normalement affichée pendant l’installation. La définition de cet indicateur équivaut à un pilote de bus définissant le membre SilentInstall de la structure DEVICE_CAPABILTIES pour une PDO. |
|
Ce bit empêche l’appareil d’être affiché dans une interface utilisateur. La définition de cet indicateur équivaut à un pilote de bus définissant la NoDisplayInUI membre de la structure DEVICE_CAPABILTIES pour une PDO. |
|
Spécifiez ce bit lorsque le client souhaite qu’un pilote soit chargé sur l’appareil et quand ce pilote est requis pour une fonction correcte de la fonctionnalité du client.
Lorsque ce bit est spécifié, au moins l’un des pszzHardwareIds ou pszzCompatibleIds doivent être renseignés. Si ce bit est spécifié et si un pilote est introuvable, l’appareil affiche un bang jaune dans Gestionnaire d’appareils pour indiquer que l’appareil a un problème, et les utilitaires de résolution des problèmes signalent cela en tant qu’appareil avec un problème. La définition de ce bit équivaut à un pilote de bus qui ne définit pas le membre RawDeviceOK de la structure DEVICE_CAPABILTIES pour une PDO. Lorsque ce bit est spécifié, le pilote possède des interfaces de création pour l’appareil et vous ne pouvez pas appeler SwDeviceInterfaceRegister pour l’appareil. |
pszDeviceDescription
Chaîne qui contient le texte affiché pour le nom de l’appareil dans l’interface utilisateur. Cette valeur est utilisée pour IRP_MN_QUERY_DEVICE_TEXTDeviceTextDescription.
Lorsqu’un INF est mis en correspondance avec l’appareil, le nom de l’INF remplace ce nom, sauf si des étapes sont effectuées pour conserver ce nom.
Nous vous recommandons de faire référence à une ressource localisable. Pour connaître la syntaxe de référencement des ressources, consultez DEVPROP_TYPE_STRING_INDIRECT.
pszDeviceLocation
Chaîne qui contient le texte affiché pour l’emplacement de l’appareil dans l’interface utilisateur. Cette valeur est utilisée pour IRP_MN_QUERY_DEVICE_TEXTDeviceTextLocationInformation.
pSecurityDescriptor
Pointeur vers une structure SECURITY_DESCRIPTOR qui contient les informations de sécurité associées à l’appareil logiciel. Si ce membre est NULL, le gestionnaire d’E/S affecte le descripteur de sécurité par défaut à l’appareil. Si un descripteur de sécurité personnalisé est nécessaire, spécifiez un descripteur de sécurité auto-relatif.
Remarques
Vous ne pouvez spécifier ces informations qu’au moment de la création, et vous ne pouvez pas appeler ultérieurement l’API d’appareil logiciel pour modifier ces informations, en définissant des propriétés, par exemple.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | swdevicedef.h (include Swdevice.h) |