Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano sposób tworzenia minidrivera urządzenia interfejsu człowieka (HID) przy użyciu struktur sterowników systemu Windows (WDF).
Możesz napisać minidriver HID za pomocą KMDF lub UMDF. Zalecamy rozpoczęcie od przykładu vhidmini2 minidriver. Ten przykładowy sterownik można skompilować przy użyciu usługi KMDF lub UMDF 2.x.
Co należy podać
Napiszesz niższy sterownik filtru w obszarze MsHidUmdf.sys (dla usługi UMDF) lub MsHidKmdf.sys (dla usługi KMDF), z których oba są uwzględnione w ramach systemu operacyjnego.
Pobierz i przejrzyj przykład vhidmini2.
Wywołaj WdfFdoInitSetFilter z funkcji zwrotnej EvtDriverDeviceAdd sterownika.
Utwórz kolejki we/wy, aby odbierać żądania we/wy, które MsHidUmdf.sys lub MsHidKmdf.sys przekazują ze sterownika klasy do twojego sterownika.
Podaj funkcję wywołania zwrotnego EvtIoDeviceControl, która przekierowuje do metod obsługi specyficznych dla IOCTL. Zapoznaj się z IOCTL opisanymi w WDF HID Minidriver IOCTLs i upewnij się, że sterownik obsługuje odpowiednie dla urządzenia.
W przypadku UMDF, jeśli sterownik jest wyliczany przez ACPI, opcjonalnie włącz selektywne wstrzymanie. W kluczu sprzętu urządzenia dodaj podklucz EnableDefaultIdleNotificationHandler i ustaw go na 1.
W przypadku UMDF ustaw następujące dyrektywy INF w specyficznej dla WDF sekcji DDInstall pliku INF:
- UmdfKernelModeClientPolicy to AllowKernelModeClients , aby można było załadować sterownik przekazywania trybu jądra w stosie.
- UmdfMethodNeitherAction na Copy, aby umożliwić UMDF przetwarzanie IOCTLs typu METHOD_NEITHER.
- UmdfFileObjectPolicy do AllowNullAndUnknownFileObjects
- UmdfFsContextUsePolicy to CanUseFsContext2
Na przykład:
[hidumdf.NT.Wdf] UmdfKernelModeClientPolicy = AllowKernelModeClients UmdfMethodNeitherAction=Copy UmdfFileObjectPolicy=AllowNullAndUnknownFileObjects UmdfFsContextUsePolicy = CanUseFsContext2
Jeśli piszesz minidriver UMDF HID dla systemu Windows 7, pobierz zestaw Windows Driver Kit (WDK) 8.1 , aby uzyskać kod źródłowy dla HidUmdf.sys. Następnie zapisz sterownik UMDF 1.11 i dołącz HidUmdf.sys i UMDF 1.11 w pakiecie sterowników.
Architektura
Sterownik klasy HID (HidClass.sys) i platforma dostarczają sprzeczne procedury obsługi WDM do obsługi niektórych żądań we/wy, takich jak żądania Plug and Play oraz zarządzanie energią, dla minidriverów. W związku z tym minidriver HID nie może połączyć się zarówno ze sterownikiem klasy, jak i platformą. W związku z tym firma Microsoft udostępnia MsHidUmdf.sys i MsHidKmdf.sys, które są sterownikami WDM, które znajdują się między sterownikiem klasy a minidriverem.
Zarówno MsHidUmdf.sys, jak i MsHidKmdf.sys wywołują procedurę HidRegisterMinidriver sterownika klasy HID, aby zarejestrować się jako rzeczywisty minidriver HID. Mimo że te sterowniki działają jako sterownik funkcji urządzenia, po prostu przekazują żądania we/wy z poziomu sterownika klasy do Twojego sterownika (a tym samym są czasami nazywane sterownikami przekazywania). W przypadku zarówno KMDF, jak i UMDF, jedynym składnikiem, który dostarczasz, jest ministerownik HID, który działa jako niższy sterownik filtru, znajdujący się pod sterownikiem przelotowym.
Architektura UMDF:
Architektura KMDF: