Как да получите достъп до KMDF драйвера от клиентското приложение

Написах примерен KMDF драйвер. Не знам дали направих всичко правилно, но видях KMDF драйвер да отпечатва съобщение за отстраняване на грешки в помощната програма DebugView - когато добавих този драйвер като нов хардуер. Показва се и като „Примерно устройство“ в диспечера на устройства.

Сега искам да напиша примерен клиент, който може да извика този драйвер - за да мога да установя връзка между драйвер и клиент. Четох, че трябва да използваме „CreateFile“ и „DEviceIOControl“ и т.н. Но не мога да започна с това.

Можете ли да ме напътствате за създаването на примерен клиент за достъп до примерния KMDF драйвер?

Моят INF файл за драйвера изглежда така:-

    ***My INF FILE****
; myshelldriver.INF
; Windows installation file for installing the myshelldriver driver
; Copyright (c) Microsoft Corporation All rights Reserved
;
; Installation Notes:
;
;     Using Devcon: Type "devcon install myshelldriver.inf myshelldriver" to install
;

[Version]
Signature="$WINDOWS NT$"
Class=Sample
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
Provider=%MSFT%
DriverVer=09/24/2012,1.0
CatalogFile=myshell.cat

[DestinationDirs]
DefaultDestDir = 12

[ClassInstall32]
Addreg=SampleClassReg

[SampleClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-5

[DiskCopyfiles]
wdfmyshelldriver.sys

[SourceDisksNames]
1=%InstDisk%,

[SourceDisksFiles]
Wdfmyshelldriver.sys=1

[Manufacturer]
%MSFT% = DiskDevice,NTAMD64

; For Win2K
[DiskDevice]
%DiskDevDesc% = DiskInstall, wdfmyshelldriver

; For XP and later
[DiskDevice.NTAMD64]
%DiskDevDesc% = DiskInstall, wdfmyshelldriver

[DiskInstall.NT]
CopyFiles = DiskCopyfiles


;;specify that this is the installation
;;for nt based systems.
[DriverInstall.ntx86]
DriverVer=09/24/2012,1.0
CopyFiles=DriverCopyFiles


[DiskInstall.NT.Services]
AddService = wdfmyshelldriver, %SPSVCINST_ASSOCSERVICE%, DiskServiceInst

[DiskServiceInst]
ServiceType   = %SERVICE_KERNEL_DRIVER%
StartType     = %SERVICE_DEMAND_START%
ErrorControl  = %SERVICE_ERROR_NORMAL%
DisplayName   = %DiskServiceDesc%
ServiceBinary = %12%\Wdfmyshelldriver.sys
AddReg        = DiskAddReg

[DiskAddReg]
HKR, "Parameters", "BreakOnEntry",      %REG_DWORD%, 0x00000000
HKR, "Parameters", "DiskSize",          %REG_DWORD%, 0x00100000
HKR, "Parameters", "DriveLetter",       %REG_SZ%,    "R:"
HKR, "Parameters", "RootDirEntries",    %REG_DWORD%, 0x00000200
HKR, "Parameters", "SectorsPerCluster", %REG_DWORD%, 0x00000002




[Strings]
MSFT            = "Microsoft"
ClassName       = "My Shell Device"
DiskDevDesc     = "WDF My Shell Driver"
DiskServiceDesc = "myshelldriver Driver"
InstDisk        = "myshelldriver Install Disk"
;*******************************************
;Handy macro substitutions (non-localizable)
SPSVCINST_ASSOCSERVICE = 0x00000002
SERVICE_KERNEL_DRIVER  = 1
SERVICE_DEMAND_START   = 3
SERVICE_ERROR_NORMAL   = 1
REG_DWORD              = 0x00010001
REG_SZ                 = 0x00000000


**** END OF INF FILE***

person user1993543    schedule 19.01.2013    source източник


Отговори (2)


Има много подходящи мостри в WDK. Например, разгледайте KMDF Echo пример.

person SomeWittyUsername    schedule 23.02.2013

Първо ще трябва да наименувате вашия обект. Второ, ще трябва да направите поне едно от следните:

  1. Създайте символна връзка в \GLOBAL??\
  2. Регистрирайте интерфейс на устройство.

Вариант 1 ще ви позволи да направите простото

CreateFile("\\\\.\\<device_name>, ...);

Вариант 2 и ще трябва да използвате процедурите за настройка на DI Api, за да намерите вашето устройство, за да го отворите.

person roscoe_casita    schedule 27.09.2014