Udostępnij przez


Tworzenie obiektów żądań frameworku

Obiekty żądań platformy reprezentują żądania we/wy, które menedżer we/wy wysłał do sterownika. Sterowniki oparte na frameworku przetwarzają każde żądanie we/wy, wywołując metody obiektu żądania frameworka.

Każde żądanie we/wy zawiera pakiet żądań we/wy (struktura IRP) programu WDM, ale sterowniki oparte na frameworku zwykle nie muszą uzyskiwać dostępu do struktury IRP.

Większość obiektów żądań platformy jest tworzona przez strukturę, ale sterownik może również tworzyć obiekty żądań.

Żądania obiektów utworzonych przez framework

Gdy sterownik oparty na platformie odbiera pakiet żądania we/wy (IRP) od menedżera we/wy, platforma przechwytuje IRP i tworzy obiekt żądania platformy. Struktura umieszcza obiekt żądania w kolejce wejścia/wyjścia i, jeśli sterownik zarejestrował procedury obsługi żądań dla tej kolejki, wywołuje odpowiednią procedurę obsługi.

Na poniższym diagramie przedstawiono kroki, które występują, gdy platforma tworzy obiekt żądania dla operacji odczytu.

#B0 #A1 #A2 Diagram ilustrujący kroki tworzenia obiektu żądania dla operacji odczytu w sterowniku opartym na strukturze. #A3 #A4 #C5

Poniższe kroki odpowiadają liczbom na powyższym diagramie:

  1. Aplikacja działająca w trybie użytkownika odczytuje plik, wywołując funkcję Microsoft Win32 ReadFile.

  2. Funkcja ReadFile wywołuje menedżera I/O, który działa w trybie jądra.

  3. Menedżer we/wy przydziela strukturę IRP i przechowuje kod funkcji IRP_MJ_READ w tej strukturze.

  4. Menedżer we/wy wywołuje standardową procedurę sterownika DispatchRead dla sterownika x, przekazując wskaźnik do struktury IRP. Ponieważ sterownik x jest sterownikiem opartym na frameworku, framework zapewnia procedurę DispatchRead sterownika.

  5. Struktura tworzy obiekt żądania reprezentujący strukturę IRP. Framework dodaje obiekt żądania do jednego z obiektów kolejki sterownika.

  6. Platforma wywołuje procedurę obsługi żądań EvtIoRead sterownika, przekazując uchwyt obiektu kolejki i uchwyt obiektu żądania.

Żądania obiektów utworzonych przez sterownik

Sterowniki oparte na strukturze mogą również tworzyć obiekty żądań. Na przykład, sterownik może utworzyć obiekty żądań, jeśli odbiera żądanie odczytu lub zapisu dla ilości danych, która przekracza możliwości jednorazowej obsługi celów we/wy sterownika. W takiej sytuacji sterownik może podzielić dane na kilka mniejszych żądań i użyć dodatkowych obiektów żądań do wysyłania tych mniejszych żądań do co najmniej jednego miejsca docelowego we/wy.

Aby utworzyć obiekt żądania, sterownik powinien wywołać WdfRequestCreate, a następnie metody obiektów frameworku, które inicjują żądanie, takie jak WdfUsbTargetPipeFormatRequestForRead.

Jeśli sterownik odbiera pakiety żądań IRP w rutyne dyspozycji WDM, a następnie obsługuje lub przekazuje je w ramach architektury, sterownik może wywołać WdfRequestCreateFromIrp.