하드웨어를 터치하지 않는 Windows 드라이버를 어떻게 개발할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1944146

  •  20-09-2019
  •  | 
  •  

문제

존재하지 않는 장치를 에뮬레이션하는 WDM 드라이버를 만들어야합니다. O/S 부츠가 열리고 닫을 때 운전자에게로드해야합니다. SetupDiXXX 그리고 CreateFile, 응답이 필요합니다 DeviceIoControl, 등.

드라이버 코딩이 있지만 XP는로드를 거부합니다. 시스템 이벤트 뷰어는 다음과 같이 말합니다.

다음 오류로 인해 MyDevice 서비스가 시작되지 않았습니다. 서비스는 비활성화되었거나 활성화 된 장치와 관련된 장치가 없기 때문에 서비스를 시작할 수 없습니다.

이를 감안할 때 문제는 INF 파일에 있다고 생각합니다 (아래 참조). 그게? 어떻게 고정해야합니까?

;; MyDevice.inf

[Version]
Signature="$Windows 95$"

Class=MyDeviceDeviceClass
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}
Provider=%ProviderName%
DriverVer= 12/21/2009,1.0.0.1

[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-18"

[DestinationDirs]
MyDevice_Files_Driver = 10,System32\Drivers


[Manufacturer]
%MfgName%=Mfg0

[Mfg0]
%DeviceDesc%=MyDevice_DDI, *MyDevice


[MyDevice_DDI]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_9X_AddReg


[MyDevice_DDI.NT]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_NT_AddReg

[MyDevice_DDI.NT.Services]
Addservice = MyDevice, 0x00000002, MyDevice_AddService

[MyDevice_AddService]
DisplayName    = %SvcDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %10%\System32\Drivers\MyDevice.sys

[MyDevice_NT_AddReg]
HKLM, "System\CurrentControlSet\Services\MyDevice\Parameters","BreakOnEntry", 0x00010001, 0

[MyDevice_Files_Driver]
MyDevice.sys


[Strings]
ProviderName="Acme"
MfgName="Acme"
DeviceDesc="Acme"
DeviceClassName="Device class for MyDevice"
SvcDesc="MyDevice NT service"
도움이 되었습니까?

해결책

자기 답변 :

INF를 다음을 포함하도록 변경했습니다.

mfg0] %devicedesc %= mydevice_ddi, *mydevice ipm1

" IPM1"은 새롭고 내 눈에는 약간의 부두가 있습니다. Chris Cant의 "Wording Windows WDM 장치 드리스"의 예에서 얻었습니다.

큰 변화는 제어판에서 "새 하드웨어 추가"마법사를 사용하여 드라이버를 설치하는 것입니다. INF를 마우스 오른쪽 버튼으로 클릭하면 충분하지 않습니다. 그 이유는 운전자가 제어 할 하드웨어를 올바르게 찾지 못하는 PNP 관리자를 호출하기 때문입니다.

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