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.
Każdy sterownik funkcji tworzy obiekt urządzenia w ramach dla każdego z obsługiwanych urządzeń istniejących w systemie. Ponieważ te obiekty urządzeń są tworzone przez sterowniki funkcji, są nazywane obiektami funkcjonalnymi urządzeń (FDOS). Każdy FDO jest reprezentacją urządzenia przez sterownik funkcji.
Sterownik funkcji musi utworzyć obiekt urządzenia frameworka za każdym razem, gdy framework wywołuje funkcję wywołania zwrotnego sterownika EvtDriverDeviceAdd. Struktura wywołuje tę funkcję wywołania zwrotnego, aby poinformować sterownik, że w systemie istnieje jeden z obsługiwanych urządzeń.
Funkcja zwrotna EvtDriverDeviceAdd sterownika otrzymuje wskaźnik do struktury WDFDEVICE_INIT. Sterownik może wywołać zestaw metod inicjowania obiektów urządzeń struktury, które przechowują informacje w strukturze WDFDEVICE_INIT. Ponadto sterowniki funkcji mogą wywoływać metody inicjowania FDO frameworku.
Tworzenie obiektu urządzenia struktury w sterowniku funkcji zwykle obejmuje następujące kroki:
Rejestrowanie funkcji wywołania zwrotnego PnP, zasilania oraz polityki zasilania.
Większość sterowników funkcji wywołuje funkcje WdfDeviceInitSetPnpPowerEventCallbacks w celu zarejestrowania funkcji PnP i wywołania zwrotnego zasilania. Aby uzyskać więcej informacji na temat tych funkcji wywołania zwrotnego, zobacz Obsługa pnP i zarządzania energią w sterownikach funkcji.
Jeśli urządzenie obsługuje niskie zużycie energii w trybie bezczynności lub ma możliwości wznawiania, sterownik funkcji zwykle wywołuje również funkcję WdfDeviceInitSetPowerPolicyEventCallbacks w celu zarejestrowania funkcji wywołania zwrotnego dotyczących zasad zasilania. Aby uzyskać więcej informacji na temat tych funkcji wywołania zwrotnego, zobacz Power Policy Ownership.
Rejestrowanie specyficznych dla sterownika funkcji zwrotnych.
Niektóre sterowniki funkcji nazywają element WdfFdoInitSetEventCallbacks, jeśli muszą uczestniczyć w określaniu zasobów sprzętowych systemu, których wymaga urządzenie. Aby uzyskać więcej informacji na temat zasobów sprzętowych, zobacz Zasoby sprzętowe dla sterowników Framework-Based.
Rejestrowanie funkcji wywołania zwrotnego zdarzeń pliku.
Jeśli sterownik musi odpowiedzieć, gdy aplikacja otworzy lub zamknie plik na urządzeniu, sterownik musi wywołać polecenie WdfDeviceInitSetFileObjectConfig , aby zarejestrować funkcje wywołania zwrotnego dla obiektu pliku struktury. Aby uzyskać więcej informacji, zobacz Using Framework File Objects (Używanie obiektów plików struktury).
Ustawianie atrybutów żądania I/O.
Jeśli sterownik otrzyma żądania we/wy z obiektów kolejki frameworku, sterownik może wywołać WdfDeviceInitSetRequestAttributes, aby skonfigurować pamięć kontekstową, którą framework przypisze do obiektów żądań urządzenia. Aby uzyskać więcej informacji, zobacz Using Request Object Context (Używanie kontekstu obiektu żądania).
Ustawianie właściwości urządzenia.
Zazwyczaj sterownik funkcji wywołuje niektóre z następujących metod, aby określić cechy urządzenia:
- WdfDeviceInitSetDeviceType, aby zidentyfikować typ sprzętu obsługiwanego przez sterownik.
- WdfDeviceInitSetIoType, aby określić metodę dostępu do buforów danych, jeśli sterownik obsługuje żądania I/O z aplikacji.
- WdfDeviceInitSetCharacteristics, aby ustawić właściwości urządzenia, takie jak to, czy urządzenie jest tylko do odczytu, czy obsługuje nośniki wymienne.
- WdfDeviceInitSetExclusive, jeśli urządzenie wymaga wyłącznego dostępu przez jedną aplikację naraz.
- WdfDeviceInitSetPowerInrush, jeśli urządzenie wymaga prądu rozruchowego, gdy przechodzi ze stanu niskiego zużycia energii do stanu roboczego (D0).
- WdfDeviceInitSetPowerPageable lub WdfDeviceInitSetPowerNotPageable, aby wskazać, czy sterownik musi uzyskać dostęp do danych stronicowalnych, gdy system przechodzi między stanem uśpienia a stanem roboczym (S0).
- WdfDeviceInitAssignName, aby przypisać nazwę do obiektu urządzenia.
- WdfDeviceInitAssignSDDLString w celu przypisania deskryptora zabezpieczeń do obiektu urządzenia.
- WdfDeviceInitSetDeviceClass, aby zidentyfikować klasę konfiguracji urządzenia.
Uzyskiwanie właściwości urządzenia.
Czasami sterowniki funkcji muszą uzyskać informacje o właściwościach urządzenia ustawionych przez sterownik magistrali urządzenia lub innych sterowników niższego poziomu. Sterownik może wywołać właściwość WdfFdoInitQueryProperty lub WdfFdoInitAllocAndQueryProperty , aby uzyskać te informacje. Nowe sterowniki przeznaczone dla systemu Windows 8.1 lub nowszego mogą wywoływać funkcje WdfFdoInitQueryPropertyEx i WdfFdoInitAllocAndQueryPropertyEx.
Uzyskiwanie dostępu do klucza rejestru urządzenia.
Niektóre sterowniki funkcji muszą uzyskać informacje o urządzeniu lub sterowniku, które inny sterownik, użytkownik lub pakiet instalacyjny umieścił w rejestrze. Sterownik może wywołać WdfFdoInitOpenRegistryKey , aby otworzyć klucz rejestru urządzenia lub sterownika. Aby uzyskać więcej informacji, zobacz Using the Registry in Framework-Based Drivers (Używanie rejestru w sterownikach Framework-Based).
Tworzenie domyślnej konfiguracji listy podrzędnej do użycia na potrzeby wyliczenia dynamicznego.
Jeśli piszesz sterownik funkcji dla magistrali i twój sterownik będzie wykonywał dynamiczne enumeracje urządzeń podrzędnych podłączonych do magistrali, sterownik musi wywołać WdfFdoInitSetDefaultChildListConfig. Aby uzyskać więcej informacji, zobacz Wyliczanie urządzeń w magistrali.
Tworzenie obiektu urządzenia.
Ostatnim krokiem tworzenia obiektu urządzenia jest wywołanie WdfDeviceCreate.