Udostępnij przez


Obiekt pliku struktury

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.

Obiekt pliku struktury jest udostępniany sterownikom przez interfejs IWDFFile. Jest to reprezentacja struktury otwartego urządzenia. Gdy aplikacja otworzy urządzenie za pośrednictwem funkcji Microsoft Win32 CreateFile, platforma tworzy obiekt pliku reprezentujący otwarte wystąpienie urządzenia. W związku z tym obiekt plikowy frameworka jest koncepcyjnie odpowiednikiem uchwytu Win32 zwróconego z wywołania aplikacji do CreateFile. Platforma może tworzyć wiele obiektów plików skojarzonych z jednym urządzeniem. Każdy obiekt pliku jest tworzony dla każdego pomyślnego wywołania metody CreateFile. Wszystkie operacje we/wy, takie jak operacje odczytu i zapisu, są skierowane na określone wystąpienie obiektu pliku.

Uwaga Wszystkie żądania przekazane do sterowników UMDF są skojarzone z obiektami plików. Jednak żądania przekazywane do WDM i sterowników KMDF czasami nie są skojarzone z obiektami plików.

Sterownik UMDF może wywołać metodę IWDFIoRequest::GetFileObject, aby uzyskać obiekt pliku skojarzony z żądaniem.

Gdy sterownik wywołuje GetFileObject, platforma zwiększa licznik referencji w interfejsie. Twój sterownik jest odpowiedzialny za zwolnienie odwołania po zakończeniu pracy ze wskaźnikiem interfejsu. W tym celu należy użyć inteligentnego wskaźnika, który automatycznie dekrementuje liczbę odwołań, gdy obiekt wychodzi z kontekstu, lub wywołaj Release w interfejsie po zakończeniu używania. Aby zapoznać się z przykładem kodu pokazującym, jak używać inteligentnego wskaźnika, zobacz GetFileObject.