2010-05-04 10 views
1

Nous avons écrit un pilote de périphérique Windows pour accéder à notre carte PCI personnalisée. Le pilote utilise CreateFile pour obtenir un handle de la carte.Le pilote a refusé l'accès à la carte PCI

Nous avons récemment rencontré des problèmes lors d'une installation, car la carte semblait s'arrêter de fonctionner. Nous avons essayé de remplacer la carte (le remplacement ne semblait pas fonctionner non plus). Le fournisseur d'ordinateurs a remplacé la carte mère et les deux cartes n'ont toujours pas fonctionné. Nous avons mis les cartes dans un autre ordinateur et les deux ont bien fonctionné.

Nous avons maintenant l'ordinateur à notre bureau pour examen. Le Gestionnaire de périphériques Windows répertorie notre carte dans Autres périphériques comme d'habitude et dit que cela fonctionne bien. Cependant, l'initialisation du pilote échoue lorsqu'il tente de se connecter à la carte.

Nous avons créé une version de test de notre pilote avec un débogage supplémentaire et déterminé que CreateFile échoue. Il renvoie INVALID_HANDLE_VALUE comme il est supposé en cas d'échec. GetLastError indique que l'erreur est Accès refusé.

Étant donné que nous sommes connectés au système en tant qu'administrateur local, qu'est-ce qui peut refuser l'accès à l'appareil?

Répondre

1

Vous pouvez essayer avec une version "vérifiée" du noyau Windows. Il s'agit d'une version de débogage disposant de beaucoup plus d'informations de diagnostic disponibles via un canal de débogage. La dernière fois que j'en ai utilisé un (il y a des années), la version était disponible sur MSDN, mais mes informations sont peut-être périmées.

1

Cela ne sonne pas comme un pilote de périphérique, CreateFile() est uniquement disponible dans une application Win32 régulière. Cela correspond également à l'erreur, les pilotes de périphériques ne sont pas soumis à des restrictions de sécurité comme les applications Win32. Oui, vous pouvez avoir des problèmes pour ouvrir les handles sur les périphériques avec CreateFile(). Je pense que le compte d'utilisateur doit au moins avoir SE_BACKUP_PRIVILEGE. Il y avait également des changements dans Vista, passez en revue la section CreateFile docs, "Disques physiques et volumes" pour les règles. Le meilleur endroit pour trouver des gourous de la sécurité qui peuvent vous montrer comment éditer les privilèges de compte est un serverfault.com

+0

D'accord, un peu de recherche de ce que SE_BACKUP_PRIVILEGE indique indique que plusieurs paramètres de stratégie sont liés. Pour tous ceux mentionnés, nous avons la permission. Aussi je viens de poster cette question sur serverfault. Nous verrons ce qu'ils proposent. – Corin