Question

Nous avons une application Windows qui peut utiliser plusieurs cartes PCI. Ces adaptateurs ont toutes les connexions physiques vers un autre matériel ou les câbles. Notre logiciel est configuré pour savoir ce que la connexion physique sur chaque carte est connecté. Imaginez un logiciel audio qui prend en charge plusieurs entrées et sorties son. Le logiciel audio est configuré pour savoir que le microphone adaptateur 1 est le chanteur principal, tandis que le microphone adaptateur 2 est la guitare.

Comme il arrive, ce logiciel est souvent exécuté sur les ordinateurs portables avec ExpressCard et / ou adaptateurs PC Card. En tant que tel, l'utilisateur peut supprimer systématiquement les adaptateurs. De plus, nos clients peuvent avoir beaucoup plus que des adaptateurs dans un ordinateur portable en forme. Alors, vous pouvez imaginer que quelqu'un Installe adaptateur A (carte PC) et B (ExpressCard) dans l'ordinateur portable et configure notre logiciel. Ils attendent maintenant que le micro du chanteur est attaché à l'adaptateur de carte PC et le micro de guitare est attaché à l'adaptateur ExpressCard. Ils retournent ensuite au bureau, prendre les adaptateurs et les mettre dans la pile avec tous les autres adaptateurs. Le lendemain, quand ils vont utiliser le logiciel qu'ils attrapent des adaptateurs C (PC Card) et D (ExpressCard). Quand ils branchent ces cartes pour le système que nous aimerions être en mesure de savoir que la carte C est dans le même endroit que l'adaptateur A a été et est donc relié à micro de la chanteuse et que D est au même endroit que B était et est donc relié à la guitare.

Sans cette fonction l'utilisateur devra reconfigurer notre logiciel à chaque fois qu'ils changent cartes, ce qui est particulièrement facile à utiliser.

Est-il possible de déterminer l'emplacement de la chaîne PCI d'un adaptateur matériel dans Windows? Est-il un autre moyen d'atteindre cet objectif?

Je voudrais que cela fonctionne sous Windows XP et versions ultérieures. Notez que nous contrôlons les pilotes de matériel, afin que nous puissions procéder à des modifications si nécessaire.

Était-ce utile?

La solution

Il se trouve, des informations de localisation PCI est disponible sous

HKLM\SYSTEM\CurrentControlSet\Enum\<PnP ID>\LocationInformation

Si des périphériques PCI est quelque chose comme PCI \\

Sous Windows XP, il vous dira le numéro de bus, périphérique Numéro et numéro de fonction. Il est probable que les mêmes informations de http://support.microsoft.com/kb/253232 comme mentionné par Steve. L'avantage d'utiliser cet emplacement de Registre est que les modifications des pilotes (y compris les modifications de l'API) ne sont pas nécessaires.

Autres conseils

Je pense que cet article KB est ce dont vous avez besoin.

  

Cet article décrit comment vous pouvez obtenir   la configuration et l'emplacement   des informations (telles que BusNumber,   DeviceNumber, et le numéro de fonction) de   Interconnexion un composant périphérique   Dispositif (PCI) dans un pilote qui fait partie   de la pile de pilotes de l'appareil cible   soit en tant que pilote de fonction ou d'un filtre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top