devcon.exe로 드라이버 설치 { 0x05, 0x01,

가상 마우스 드라이버와 프록시라는 두 가지 장치로 구성된 다중 장치 HID 드라이버를 개발했습니다.

마우스는 Windows 커널에 의해 독점적으로 열리므로 클라이언트에서 출력 보고서를 승인하려면 프록시가 필요합니다.

이것은 내 보고서 설명자입니다.

HID_REPORT_DESCRIPTOR g_reportDescriptor[] = {
    0x05, 0x01,     // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,     // USAGE (Mouse)
    0xA1, 0x01,     // COLLECTION (Application)
    0x85,               REPORT_ID_MOUSE_INPUT,
    0x09, 0x01,         // USAGE_PAGE (Pointer)
    0xA1, 0x00,         // COLLECTION (Physical)
    0x05, 0x09,             // USAGE_PAGE (Buttons)
    0x19, 0x01,             // USAGE_MINIMUM (1)
    0x29, 0x03,             // USAGE_MAXIMUM (3)
    0x15, 0x00,             // LOGICAL_MINIMUM (0)
    0x25, 0x01,             // LOGICAL_MAXIMUM (1)
    0x95, 0x03,             // REPORT_COUNT (3)
    0x75, 0x01,             // REPORT_SIZE (1)
    0x81, 0x02,             // INPUT (Data, Variable, Absolute)
    0x95, 0x01,             // REPORT_COUNT (1)
    0x75, 0x05,             // REPORT_SIZE (5)
    0x81, 0x01,             // INPUT (Constant)
    0x05, 0x01,             // USAGE_PAGE (Generic Desktop)
    0x09, 0x30,             // USAGE (X)
    0x09, 0x31,             // USAGE (Y)
    0x15, 0x81,             // LOGICAL_MINIMUM (-127)
    0x25, 0x7F,             // LOGICAL_MAXIMUM (127)
    0x75, 0x08,             // REPORT_SIZE (8)
    0x95, 0x02,             // REPORT_COUNT (2)
    0x81, 0x06,             // Input (Data, Variable, Relative)
    0xC0,               // END_COLLECTION
    0xC0,           // END_COLLECTION(8)

    0x05, 0x01,     // USAGE_PAGE (Generic Desktop)
    0x09, 0x00,     // USAGE (Undefined)
    0xa1, 0x01,     // COLLECTION (Application)
    0x85,               REPORT_ID_MOUSE_OUTPUT,
    0x15, 0x00,         // LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x00,   // LOGICAL_MAXIMUM (255)
    0x95, 0x0b,         // REPORT_COUNT (11)
    0x75, 0x08,         // REPORT_SIZE (8)
    0x09, 0x00,         // USAGE (Undefined)
    0x91, 0x02,         // OUTPUT (Data, Variable, Absolute)
    0xc0            // END_COLLECTION
};

로 드라이버를 설치하는 데 문제가 devcon.exe있습니다.

내가 무엇을하든 항상 실패합니다. 나는 *.inf영원 토록 내 파일을 가지고 놀았으며 다음에 무엇을해야할지 모르겠다. 그것이 내가 달리는 방법입니다 devcon.exe.

.\devcon.exe install .\hidriver.inf "ROOT\UNKNOWN\0000"

산출:

Device node created. Install is complete when drivers are installed...
Updating drivers for ROOT\UNKNOWN\0000 from D:\share\opt\KMDFDriver\hidriver.inf.
devcon.exe failed.

작업 결과 Unknown device자식없이 이름이 지정된 새 장치가 만들어집니다 .

에서 드라이버를 설치하면 Device Manager -> Add Legacy Hardware모든 것이 정상이며 두 개의 자식 (일반 마우스 및 HID 호환 장치)이있는 새로운 SampleClass 장치가 만들어 지므로 *.inf파일에 무언가 가 없기 때문에 생각하지 않습니다 .

*.inf파일 은 다음과 같습니다 .

[Version]
Signature="$WINDOWS NT$"
Class=%ClassName%
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
Provider=%ProviderName%
CatalogFile=hidriver.cat
DriverVer=01/07/2018

[ClassInstall32]
Addreg=ClassReg
[ClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-24

[SourceDisksNames]
1=%DiskName%,,,
[SourceDisksFiles]
hidriver.sys=1
[DestinationDirs]
DefaultDestDir=12

[Manufacturer]
%ManufacturerName%=Microsoft,NT$ARCH$.6.1
[Microsoft.NT$ARCH$.6.1]
%DeviceName%=DefaultInstall,root\hidriver

[DefaultInstall.NT]
CopyFiles=Files
[Files]
hidriver.sys

[DefaultInstall.NT.HW]
AddReg=HWAddReg
[HWAddReg]
HKR,,"LowerFilters",0x00010008,"hidriver"

[DefaultInstall.NT.Services]
AddService=hidriver,0x00000000,hidriverService
AddService=mshidkmdf,0x00000002,mshidkmdfService
[hidriverService]
DisplayName=%ServiceName%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\hidriver.sys
[mshidkmdfService]
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\mshidkmdf.sys

[DefaultInstall.NT.Wdf]
KmdfService=hidriver,KmdfLibrary
[KmdfLibrary]
KmdfLibraryVersion=$KMDFVERSION$

[Strings]
DeviceName="VARIABLE_1"
DiskName="VARIABLE_2"
ProviderName="VARIABLE_3"
ManufacturerName="VARIABLE_4"
ServiceName="VARIABLE_5"
ClassName="VARIABLE_6"

또한 Device manager의 활동 을 캡처하려고 시도했지만 수십 개의 임시 파일을 사용하여 Process Monitor마술을 DrvInst.exe수행하므로 올바른 방법이라고 생각하지 않습니다.

내가 어떻게해야합니까?

[다음날 업데이트]

나는 또한 시도했다 pnputil.exe:

pnputil.exe /add-driver D:\share\opt\KMDFDriver\hidriver.inf /install

Microsoft PnP Utility

Adding driver package:  hidriver.inf
Driver package added successfully.
Published Name:         oem40.inf
Driver package installed on matching devices.

Total driver packages:  1
Added driver packages:  1

달콤한 출력에도 불구하고 효과가 없습니다.

[첫 번째 답변 후 업데이트]

devcon.exe install hidriver.inf root\hidriverwin10 및 win8.1에서 작동하지만 win7에서 작은 문제가 있습니다. win7 어린이 장치 클래스는 자동으로 감지되지 않으므로 두 개의 자식 알 수없는 장치가 생깁니다.

내 HID 프록시가 알 수없는 장치 인 보고서를 수락 할 수 있지만 마우스가 작동하지 않습니다. 이 문제를 해결하려면 마우스를 통해 수동으로 드라이버를 설정해야합니다.

Update driver
-> Browse for driver software on this computer
-> Let me pick from a list of device drivers on this computer
-> Mice and pointing devices
-> Microsoft
-> HID-compliant mouse

그러한 지침을 INF 파일에 자동으로 추가하는 강력한 방법이 있습니까?

[시간이 지나면 업데이트]에 Device manager의해 님의 활동을 캡처 procmon하여 DrvInst.exe다음 을 얻었습니다 .

DrvInst.exe "2" "211" "HID\VARIABLE_6&COL01\1&1302B6B5&12&0000" "C:\Windows\INF\msmouse.inf" "msmouse.inf:MSMfg.NTamd64:HID_Mouse_Inst:6.1.7600.16385::hid_device_system_mouse" "6fe2f36b3" "0000000000000060" "00000000000005F8" "00000000000005F0"

잠시 후 실험 결과를보고하겠습니다.

[장치 스크린 샷]

여기에는 HWID가 없으며 장치 인스턴스 경로 만

[setupapi.dev.log로 업데이트]

드라이버를 완전히 제거한 다음 로그를 제거한 다음 드라이버를 설치하고 모든 로그 내용을 복사했습니다.

setupapi.dev.log



답변

*.inf에 대한 대상이없는 ROOT\UNKNOWN\0000, 사용,devcon install hidriver.inf root\hidriver


버추얼 박스에 5.2.8 + Win7에 프로 SP1 x64의, 내가 설치 EcoTUIODriver을 (를 기반으로 vmulti ) 및 설정은 알 수없는 장치하여 w / o 성공했다. WDK 7.1.0 (Visual Studio 없음)을 사용 하여 vmulti 를 추가로 빌드 했으며 설정도 성공했습니다. 빌드 및 테스트 환경을 확인하는 것이 좋습니다.

연결별로 장치보기 :


답변

inf 파일의 여러 부분이 다소 의심스러워 보이지만 해결 방법을 제안 할만 큼 충분하지 않습니다. 그러나 프로젝트에서 실행 가능한 inf 파일을 생성하는 다른 방법이있을 수 있습니다.

Visual Studio 2017, 시험판 버전 (
필요한 경우)을 사용하고 Microsoft 문서 드라이버 패키지 만들기에 설명 된대로 솔루션에서 inf 파일을 만드는
것이 좋습니다
.
Windows 드라이버 키트
(WDK)는 Visual Studio를 설치 한 후 설치해야합니다.

하나의 패키지로 설치해야 할 패키지가 두 개인 경우 확장 INF 파일 사용에 설명 된대로 패키지를 결합 할 수 있습니다
.