Как получить доступ к драйверу 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, и вам нужно будет использовать процедуры Setup DI Api, чтобы найти свое устройство, чтобы открыть его.

person roscoe_casita    schedule 27.09.2014