Udostępnij przez


Określanie trybu synchronizacji dla wywołań zwrotnych

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 - Maj 2022 aktualizacja przykładów sterowników.

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

Sterownik może określić, jak jego funkcje wywołania zwrotnego są wywoływane przez strukturę. Sterownik określa tryb synchronizacji (lub blokowania) urządzenia przed wywołaniem metody IWDFDriver::CreateDevice w celu utworzenia obiektu urządzenia dla tego urządzenia. Aby określić tryb synchronizacji, sterownik powinien wywołać metodę IWDFDeviceInitialize::SetLockingConstraint. Sterownik otrzymuje wskaźnik do interfejsu IWDFDeviceInitialize, gdy wywoływana jest jego metoda IDriverEntry::OnDeviceAdd w celu dodania urządzenia do systemu.

Sterownik może określić jedną z następujących wartości z typu wyliczenia WDF_CALLBACK_CONSTRAINT w parametrze LockType funkcji IWDFDeviceInitialize::SetLockingConstraint w celu określenia trybu blokowania. Określony typ ograniczenia (lub blokada) zależy od tego, ile równoległości może wykorzystać urządzenie sprzętowe i ile może obsłużyć sterownik.

Wartość Znaczenie

Brak (0)

Wskazuje, że żadne funkcje wywołujące dla sterownika nie są synchronizowane.

WdfDeviceLevel (1)

Wskazuje, że wszystkie funkcje wywołań zwrotnych kolejki dla sterownika są synchronizowane.

Uwaga Jeśli sterownik nie wywołuje IWDFDeviceInitialize::SetLockingConstraint w celu określenia wartości, struktura ustawia domyślną wartość tej właściwości na WdfDeviceLevel.

Ograniczenia dotyczą tylko funkcji wywołania zwrotnego kolejek, natomiast nie dotyczą funkcji wywołania zwrotnego Plug and Play, (PnP) i zarządzania energią. Funkcje wywołania kolejki obejmują następujące elementy:

Funkcje wywołania zwrotnego zakończenia żądania (IRequestCallbackRequestCompletion::OnCompletion) nie są funkcjami wywołania zwrotnego kolejki oczekujących. W związku z tym nie są one synchronizowane.