문제

장치에 대한 장치 드라이버가 아직로드되지 않더라도 Windows 장치 관리자가 장치의 하드웨어 ID를 얻는 방법이 궁금합니다. Windows가 이것에 대해 어떻게 진행되는지에 대한 단서가있는 사람이 있습니까?

관련 메모에서, 나는 우리가 쓰고있는 소프트웨어의 언어 현지화를 지원하는 데 관심이 있습니다. 장치 및/또는 드라이버가 친근한 이름과 설명을 현지화 된 방식으로보고 할 수 있습니까? 이미 이것에 대한 일반적인 관행이 있습니까?

시간 내 줘서 고마워.

도움이 되었습니까?

해결책

먼저로드 된 드라이버의 순서를 이해하려면 장치 관리자를 다음으로 전환하는 것이 좋습니다. 보기 | 연결 별 장치 방법.

보시다시피, 장치는 버스 운전사 아래에 있습니다. PCI 장치의 경우 "PCI 버스"가됩니다. USB 장치의 경우 USB 허브입니다. 각 버스 운전자는 식별자 문자열이 어떻게 형식화되어야하는지에 대한 자체 아이디어가 있습니다.

  • 장치 인스턴스 ID
  • 하드웨어 ID
  • 호환 ID
  • 위치 등

응답으로 반환합니다 IRP_MN_QUERY_ID (BusQueryInstanceID, BusQueryHardwareIDs, BusQueryCompatibleIDs) 그리고 IRP_MN_QUERY_DEVICE_TEXT (DeviceTextDescription, DeviceTextLocationInformation 등.)

물론, 버스 드라이버는 버스에 적합한 표준 인터페이스 (예 : USB에서 '장치/문자열 디스크립터'를 통해) 장치를 열거했습니다 (즉,보고있는 어린이 장치를 만들었습니다). 공급 업체 ID, 제품 ID 등

현재 장치의 드라이버를로드 할 필요가 없습니다. 실제로로드 할 수 없습니다. 장치 ID는 정확히 PNP 시스템에 장치와 일치하는 드라이버에 대해 지시하는 내용입니다.

현지화에 관해서 :

같지 않은 IRP_MN_QUERY_ID, 장치 매칭을위한 불투명 문자열을 제공합니다. IRP_MN_QUERY_DEVICE_TEXT 정보는 실제로 현지화되기위한 것입니다. 이를 위해 입력 데이터에서 요청 된 로케일 ID (LCID)를받습니다 (Parameters.QueryDeviceText.LocaleId).

Alphaneo가 지적했듯이 USB 허브 드라이버는 USB 장치 자체에 현지화 된 문자열이 있기를 희망 하면서이 LCID를 USB 장치로 전달할 수 있습니다 (GET String Descriptor 요청 내에서).

다른 팁

최상위 프로세스를 열거라고합니다. 대부분의 최신 장치 버스는 OS가 버스를 쿼리하고 버스에 연결된 장치를 결정할 수있는 메커니즘을 지원합니다.

PCI 제품군은 모두 열거를 지원합니다. PCI 버스에는 특별한 것이 있습니다 열거 공간 이것을 위해. "플러그 -N- 플레이"ID가 오는 곳입니다.

장치 ID는 버스에서 장치를 고유하게 식별하고 OS가 해당 장치의 올바른 드라이버를 찾을 수 있도록합니다.

USB 및 Firewire를 포함한 다른 버스에는 열거 전략이 있습니다.

장치 ID는 장치에서 제공 한 정보의 조합입니다. 예를 들어 USB 장치의 경우 문자열은 VID 및 PID (공급 업체 ID 및 제품 ID)를 기반으로합니다. 이제 드라이버가로드되지 않으면 발생할 수 없습니다. 적어도 일부 드라이버, 버스 운전사는 장치 ID를 얻으려면 OS를로드해야합니다.

이제 언어 지원을 위해 WDM 드라이버의 경우 query_lang 또는 무언가가 있다고 생각합니다. 제대로 기억하지 못합니다. 또는 USB와 같은 일부 장치에는 언어 ID 지원이 있습니다. 이 언어 ID는 제품 디스크립터 문자열의 언어를 결정합니다.

하드웨어 식별자/일련 번호와 진정한 고유 하드웨어 ID 사이에는 차이가 있습니다. 어쩌면 이것은 더 잘 설명 할 것입니다 :http://www.soft.tahionic.com/download-hdd_id/hardware%20ID%20Programmer%27S%20dll.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top