CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  1. #1
    Join Date
    Mar 2007
    Posts
    14

    Mapping handles to device to hardware ID for same device

    I have two instances of a given device on a given machine (actually they are different devices but they use the same driver). I need to know which of these two instances I am talking to.

    The problem seems to boil down to mapping an open device handle (or name, e.g. \\DosDevices\MyDevice-0) to the unique device ID(e.g. PCI\VEN_xxxx&DEV_yyyy&SUBSYS_nnnnnnn&REV_B5\3&11583659&0&E2). Notice that the uniqueness of the ID is in the tail, in this case, '3&11583659&0&E2'.

    The handle is obtained from a call to CreateFile(sName, .... ).

    The device ID is coming in through a call to CM_Get_Device_ID_Ex(), which in turn uses a descriptor returned by SetupDiEnumDeviceInfo(), which in turn uses a handle returned by SetupDiGetClassDevsEx(), none of which uses a device name or returns a handle of the type returned by CreateFile().

    So, I can:
    - Use the handle to get the unique ID for that device, then match on the ID from the SetupDi*() and CM_*() functions ... but how to get the ID using the handle?
    - Get the name of the device using the SetupDi*() or CM*(), so I can get a handle from CreateFile() ... but how to get the name?

    Any other way to do this?

    Thanks gobs

  2. #2
    Join Date
    Mar 2007
    Posts
    14

    Re: Mapping handles to device to hardware ID for same device

    I will answer my own question for benefit of the search engines ... I was working on development hardware in which the device ID and vendor ID were set to pre-release default values. The right way to do this is to program the boards with unique IDs, which the hardware engineers will soon be doing.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured