Udostępnij przez


Procedury DispatchRead, DispatchWrite i DispatchReadWrite

Procedury DispatchRead i DispatchWrite sterownika obsługują IRP-y z kodami funkcji wejścia/wyjścia IRP_MJ_READ i IRP_MJ_WRITE. Alternatywnie, połączona rutyna DispatchReadWrite może obsługiwać IRP dla obu tych kodów funkcji I/O.

Każdy sterownik urządzenia, z którego można przesyłać dane do systemu, musi mieć procedurę DispatchRead . Każdy sterownik urządzenia, do którego można przesyłać dane z systemu, musi mieć procedurę DispatchWrite . Każdy sterownik, który przesyła dane w obu kierunkach, może mieć połączoną procedurę DispatchReadWrite .

Sterowniki niższego poziomu obsługują żądania IRP_MJ_READ i IRP_MJ_WRITE asynchronicznie. W związku z tym procedury DispatchRead i/lub DispatchWrite w sterownikach najwyższego poziomu muszą przekazać te żądania do dalszego przetwarzania, pod warunkiem, że żądanie ma prawidłowe parametry w lokalizacji stosu we/wy tego sterownika IRP.

To, czy sterownik konfiguruje swoje obiekty urządzeń dla buforowanych lub bezpośrednich operacji we/wy, wpływa na sposób obsługi żądań transferu. W szczególności, sterownik używający bezpośredniego I/O do wykonywania operacji DMA może potrzebować podzielić duże żądania transferu na sekwencję mniejszych operacji transferu, aby spełnić żądanie IRP_MJ_READ lub IRP_MJ_WRITE. Aby uzyskać więcej informacji, zobacz Techniki wejściowe/wyjściowe.

W poniższych podsekcjach omówiono niektóre zagadnienia dotyczące projektowania i implementacji procedur DispatchReadWrite w sterownikach urządzeń najniższego poziomu, które używają buforowanych we/wy i bezpośrednich we/wy, a także w sterownikach wyższego poziomu warstwowych powyżej:

Obsługa transferów asynchronicznie

DispatchReadWrite przy użyciu buforowanego I/O

DispatchReadWrite przy użyciu bezpośredniego we/wy

DispatchReadWrite w sterownikach Higher-Level

Podsumowanie procedur wysyłania odczytu/zapisu