IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

usb detection : problème avec la macro DEFINE_GUID?


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut usb detection : problème avec la macro DEFINE_GUID?
    Bonjour,

    Je ne sais pas si je n'aurais pas du poster sur un forum windows mais je me lance...

    Je cherche à détecter la connection/deconnection d'un periphe USB mais j'ai un pb de linkage au niveau de la méthode d'enregistrement de la fenêtre qui recevra les évènements usb

    Je pense que le problème vient de l'entête initguid.h qui définie la macro DEFINE_GUID mais je sèche completement

    Autre chose, si dans l'entête de UsbMonitor, je ne spécifie pas #define WINVER 0x0500, j'obtiens l'erreur suivante:
    'DEV_BROADCAST_DEVICEINTERFACE' was not declared in this scope

    Et je suis obligé de spécifier 0x0500 qui corespond à win 2000 alors que je devrais mettre 501 pour xp. Mais dans ce dernier cas, j'obtiens:
    'InterlockedPopEntrySList' was not declared in this scope

    Mon environnement :
    Win Xp
    Gcc 4.4.1 (tdm)
    Qt 4.5.3

    Ci-dessous, le code et l'erreur de link

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    bool UsbMonitor::doRegisterForDevNotification(void)
        {
        DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
        ZeroMemory(&NotificationFilter, sizeof(NotificationFilter));
    
        NotificationFilter.dbcc_size = sizeof(NotificationFilter);
        NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;// = 5;
        NotificationFilter.dbcc_reserved = 0;
        NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;//GUID_DEVINTERFACE_USBSTOR;//GUID_DEVCLASS_USB;//GUID_DEVINTERFACE_USB_DEVICE;
    
        HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->winId(), &NotificationFilter, DEVICE_NOTIFY_SERVICE_HANDLE);
    
        if(hDevNotify == NULL)
            qDebug() << "Failed to register device notification";
    
        return(NULL != hDevNotify);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    g++ -c -include r:\usbCom\build\.o\debug\precompHeader.h -pg -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DDEBUG -DQT_THREAD_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -I"c:\usr\Qt\4.5.3\include\QtCore" -I"c:\usr\Qt\4.5.3\include\QtGui" -I"c:\usr\Qt\4.5.3\include" -I"." -I"c:\usr\Qt\4.5.3\include\ActiveQt" -I"r:\usbCom\build\.moc\debug" -I"r:\usbCom\build\.ui\debug" -I"c:\usr\Qt\4.5.3\mkspecs\win32-g++" -o r:\usbCom\build\.o\debug\moc_usbMonitor.o r:\usbCom\build\.moc\debug\moc_usbMonitor.cpp
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows -pg -Wl,-subsystem,console -mthreads -Wl -o bin\debug\dbgusbCom.exe object_script.dbgusbCom.Debug  -L"c:\usr\Qt\4.5.3\lib" r:\usbCom\build\.o\debug\debugIco_res.o -lhid -lsetupapi -lQtGuid4 -lQtCored4
    r:\usbCom\build\.o\debug\moc_usbMonitor.o:moc_usbMonitor.cpp:(.rdata+0x0): multiple definition of `GUID_DEVINTERFACE_USB_HUB'
    r:\usbCom\build\.o\debug\usbMonitor.o:usbMonitor.cpp:(.rdata+0x4): first defined here
    r:\usbCom\build\.o\debug\moc_usbMonitor.o:moc_usbMonitor.cpp:(.rdata+0x10): multiple definition of `GUID_DEVINTERFACE_USB_DEVICE'
    r:\usbCom\build\.o\debug\usbMonitor.o:usbMonitor.cpp:(.rdata+0x14): first defined here
    r:\usbCom\build\.o\debug\moc_usbMonitor.o:moc_usbMonitor.cpp:(.rdata+0x20): multiple definition of `GUID_DEVINTERFACE_USB_HOST_CONTROLLER'
    r:\usbCom\build\.o\debug\usbMonitor.o:usbMonitor.cpp:(.rdata+0x24): first defined here
    r:\usbCom\build\.o\debug\moc_usbMonitor.o:moc_usbMonitor.cpp:(.rdata+0x30): multiple definition of `GUID_USB_WMI_STD_DATA'
    r:\usbCom\build\.o\debug\usbMonitor.o:usbMonitor.cpp:(.rdata+0x34): first defined here
    r:\usbCom\build\.o\debug\moc_usbMonitor.o:moc_usbMonitor.cpp:(.rdata+0x40): multiple definition of `GUID_USB_WMI_STD_NOTIFICATION'
    r:\usbCom\build\.o\debug\usbMonitor.o:usbMonitor.cpp:(.rdata+0x44): first defined here
    collect2: ld returned 1 exit status
    mingw32-make.exe[1]: *** [bin\debug\dbgusbCom.exe] Error 1
    mingw32-make.exe[1]: Leaving directory `E:/code/usbCom'
    mingw32-make.exe: *** [Debug] Error 2
    Process terminated with status 2 (0 minutes, 5 seconds)
    0 errors, 0 warnings

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Normalement, il faut inclure <initguid.h> dans UN fichier source qui inclut les en-têtes définissant les GUIDs (AVANT d'inclure les fichiers, bien sûr), et ne pas l'inclure ailleurs. Cela permet d'avoir une définition des GUIDs, et tous les autres appels à la macro DEFIND_GUID ne sont que des déclarations.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Moc -> c'est un bouchon non?

    Si c'est le cas, il est fort étrange de trouver le monitor ET son bouchon dans le même projet ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Ca compile! merci Médinoc.

    ...ca compile mais ça ne marche pas (erreur de registration) mais ça c'est une autre histoire.

    Les moc sont des fichiers autogénérés par le framework graphique Qt pour gérer des connections de signaux (signal/slots)

Discussions similaires

  1. Problème avec les macros _RPT et _RPTF
    Par pikatshu dans le forum C++Builder
    Réponses: 0
    Dernier message: 12/11/2007, 12h31
  2. Problème avec ma macro
    Par michparmentier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/11/2007, 12h29
  3. Problème avec une macro impression
    Par Border_xls dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/11/2007, 15h18
  4. Problème avec une macro faisant apel à un tableau Excell
    Par valouche dans le forum Macros et VBA Excel
    Réponses: 52
    Dernier message: 19/06/2007, 12h38
  5. Réponses: 7
    Dernier message: 11/07/2006, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo