Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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