Udostępnij przez


Korzystanie z obiektów struktury ogólnej

Obiekt struktury ogólny jest obiektem struktury, z którego pochodzą wszystkie inne typy obiektów struktury.

Podobnie jak inne obiekty ramowe, obiekty ogólne obsługują licznik referencyjny, przestrzeń kontekstową, funkcje wywołania zwrotnego usuwania oraz obiekt nadrzędny, jak opisano w Wprowadzenie do obiektów ramowych.

Sterowniki mogą tworzyć i używać obiektów struktury ogólnej. Jeśli sterownik wywołuje WdfObjectCreate do tworzenia obiektów ogólnych, może:

  • Utwórz jedną lub więcej przestrzeni kontekstowych dla każdego obiektu ogólnego.

    Za pomocą przestrzeni kontekstowej obiektu można przechowywać informacje o zasobach systemowych, które chcesz skojarzyć z obiektem ogólnym.

    Aby uzyskać więcej informacji na temat przestrzeni kontekstowej, zobacz Framework Object Context Space.

  • Przypisz element nadrzędny do obiektu ogólnego.

    Obiekt ogólny zostanie usunięty po usunięciu obiektu nadrzędnego. Jeśli na przykład sterownik określa obiekt urządzenia struktury jako obiekt nadrzędny jednego z jego obiektów ogólnych, struktura usunie obiekt ogólny po usunięciu obiektu urządzenia.

    Sterowniki określają obiekt nadrzędny, ustawiając element ParentObject w składowej struktury WDF_OBJECT_ATTRIBUTES obiektu.

  • Podaj funkcje zwrotne wywołujące usunięcie.

    Sterownik może zapewnić funkcje EvtCleanupCallback i EvtDestroyCallback, które umożliwiają cofnięcie przydziału zasobów systemowych dokonanych przez sterownik podczas tworzenia obiektu ogólnego. Na przykład, jeśli sterownik wywołał funkcję ExAllocatePool podczas tworzenia obiektu ogólnego, funkcja wywołania zwrotnego do czyszczenia lub niszczenia może wywołać funkcję ExFreePool.

Korzystanie z obiektów ogólnych może być wygodnym sposobem zarządzania zasobami przydzielonymi przez sterownik. Na przykład sterownik wyższego poziomu może wymagać wielu alokacji pamięci w celu przetworzenia odebranego żądania we/wy, jeśli sterownik wysyła żądanie do wielu urządzeń lub przerywa żądanie na kilka mniejszych. Sterownik może utworzyć jeden lub więcej obiektów ogólnych, które są dziećmi odebranego żądania I/O, i może przechowywać informacje o alokacjach pamięci w przestrzeni kontekstowej tych obiektów ogólnych.