Udostępnij przez


Model programowania DDI UMDF

Ostrzeżenie

UMDF 2 jest najnowszą wersją UMDF i zastępuje UMDF 1. Wszystkie nowe sterowniki UMDF powinny być zapisywane przy użyciu funkcji UMDF 2. Do usługi UMDF 1 nie są dodawane żadne nowe funkcje, a obsługa UMDF 1 na nowszych wersjach systemu Windows 10 jest ograniczona. Sterowniki uniwersalne systemu Windows muszą używać funkcji UMDF 2.

Zarchiwizowane przykłady UMDF 1 można znaleźć w Windows 11, wersja 22H2 - May 2022 Driver Samples Update.

Aby uzyskać więcej informacji, zobacz Wprowadzenie do usługi UMDF.

Struktura i sterownik UMDF komunikują się za pośrednictwem DDI UMDF. DDI UMDF jest podobny do DDI KMDF, z wyjątkiem, że DDI UMDF jest oparty na COM. W związku z tym autorzy sterowników zaznajomieni z frameworkiem KMDF będą rozumieć framework UMDF.

Dla każdego typu obiektu struktury UMDF definiuje interfejs, za pomocą którego można manipulować wystąpieniami obiektu. Każdy interfejs obsługuje metody i właściwości. Metody definiują akcje, które można wykonać w imieniu obiektu i zestawu właściwości oraz pobierają cechy obiektu. Niektóre interfejsy są implementowane przez strukturę, a inne są implementowane przez sterownik. Interfejsy ujawniane przez obiekt struktury mają formę IWDF<obiekt>, podczas gdy interfejsy wywołań zwrotnych zdarzeń ujawniane przez sterownik mają formę I<obiekt><akcja>, gdzie <obiekt> reprezentuje kolejkę, żądanie itd., a <akcja> wskazuje, co interfejs robi. Metody interfejsów callbackowych rozpoczynają się od "On".

Sterownik UMDF komunikuje się z obiektami platformy za pośrednictwem ich metod i właściwości. Struktura komunikuje się ze sterownikiem za pośrednictwem powiadomień o zdarzeniach, które są funkcjami wywołania zwrotnego, które mogą wywołać w celu powiadomienia sterownika o określonych zdarzeniach. Aby zarejestrować funkcje wywołania zwrotnego, sterownik może wywołać na przykład następujące metody obiektów struktury i przekazać wskaźnik do interfejsu IUnknown skojarzonego ze wszystkimi interfejsami funkcji wywołania zwrotnego obsługiwanych przez sterownik.

Jako przykład komunikacji sterownika do frameworku, należy rozważyć domyślny obiekt kolejki we/wy urządzenia. Sterownik może wywoływać metody, takie jak IWDFIoQueue::GetState, w celu pobrania informacji o stanie kolejki we/wy lub IWDFIoQueue::RetrieveNextRequest w celu pobrania żądania z kolejki we/wy. Sterownik może również zażądać powiadomień dotyczących kolejki I/O, wywołując metodę IWDFDevice::CreateIoQueue w celu zarejestrowania interfejsów zwrotnych, takich jak IQueueCallbackRead i IQueueCallbackWrite. Metody tych interfejsów są następnie wywoływane przez platformę, gdy aplikacja wysyła żądania odczytu i zapisu.

Platforma zapewnia wszelkie wymagane synchronizacje między metodami wywołania zwrotnego sterowników. Domyślnie platforma synchronizuje się na poziomie obiektu urządzenia; oznacza to, że platforma nie wywołuje współbieżnie metod wywołania zwrotnego zdarzeń na poziomie obiektu urządzenia lub poniżej niego. Sterownik może zastąpić to ustawienie domyślne, żądając braku synchronizacji. Aby uzyskać więcej informacji, zobacz Konfigurowanie trybu synchronizacji wywołania zwrotnego.