2010-12-15 7 views
0

J'ai connecté une imprimante USB, et j'essaie d'ouvrir ce port en utilisant Open méthode de CFile classe. Le code suivant fonctionne correctement sous Windows XP, mais il ne fonctionne pas dans Windows 7:Pourquoi le code suivant fonctionne-t-il sous Windows XP mais pas 7?

#include<stdio.h> 
#include<afx.h> 
void main() 
{ 
    CFile m_Port; 
    CString PortName = "\\\\?\\usb#vid_0b0b&pid_106e#sx0000000-tc0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}"; 
    int i; 
    i = m_Port.Open (PortName ,2,0);//PortName is DevicePath 
    if (i > 0) 
     printf("Done"); 
    else 
     printf("Its not working"); 

    i=GetLastError(); 
    printf("\n\nError=%d",i); 
} 

Sous Windows XP, il fonctionne correctement, mais dans le cas de Windows 7, GetLastError retourne une valeur de 3. Comment Je corrige ce code pour travailler sur Windows XP et Windows 7? Faites-moi savoir s'il existe des GUID différents dans Windows 7. Est-ce que leur autre option est d'ouvrir le port en utilisant le chemin de périphérique dans Windows 7?

+0

3 -> "Le système ne trouve pas le chemin spécifié." Je suppose que vous rencontrez des problèmes de sécurité sur Windows 7. Ou plutôt, l'exécution de la brillante idée que vous êtes en sécurité lorsque vous ne pouvez pas faire ce que vous voulez avec votre PC, mais n'importe quel hacker intéressé peut. Une autre possibilité est l'UUID que vous utilisez. Ou l'identifiant en général: êtes-vous sûr qu'il en est de même dans Windows 7? –

+0

Mon conseil: Vérifiez avec ProcessExplorer ce qui se passe exactement sous le capot. – Bahbar

Répondre

0

Cela devrait fonctionner avec Windows 7, mais peut-être vous devez exécuter l'application élevée. Je suppose que le chemin est faux (et c'est ce que dit l'erreur 3). Ouvrez le gestionnaire de périphériques, sélectionnez le périphérique et "Propriétés" dans le menu contextuel. Alors "Details" et là "Hardware IDs". Trouvez-vous le chemin de votre exemple de code ici? Sinon, changez votre code en conséquence.

Egalement: Pour ce type de programmation proche du système, j'utiliser :: CreateFile de WIN-API et non la classe CFile.

Questions connexes