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.
[Dotyczy tylko usługi KMDF]
Gdy sterownik przetwarza wszystkie transfery DMA skojarzone z transakcją DMA, sterownik może usunąć lub ponownie użyć obiektu transakcji. Zazwyczaj funkcja zwrotna EvtInterruptDpc sterownika usuwa obiekt transakcji (wywołując WdfObjectDelete). Następnie, gdy sterownik tworzy nową transakcję DMA, wywołuje element WdfDmaTransactionCreate w celu utworzenia nowego obiektu transakcji.
Jednak czasami korzystne jest, aby sterownik ponownie używał obiektów transakcji. W takich przypadkach sterownik wywołuje element WdfDmaTransactionRelease zamiast WdfObjectDelete.
Załóżmy na przykład, że sterownik i urządzenie muszą działać, gdy zasoby pamięci komputera są niskie. Aby rozwiązać ten problem z pamięcią, sterownik może wykonać następującą procedurę:
Funkcja wywołania zwrotnego sterownika EvtDriverDeviceAdd może wywołać WdfDmaTransactionCreate, aby utworzyć jeden lub więcej obiektów transakcji. Sterownik zapisuje dojścia do tych obiektów transakcji.
Za każdym razem, gdy sterownik jest gotowy do utworzenia i zainicjowania nowej transakcji, wywołuje funkcję WdfDmaTransactionCreate. Jeśli ta metoda zwróci STATUS_INSUFFICIENT_RESOURCES, sterownik może użyć jednego z przechowywanych obiektów transakcji.
Jeśli sterownik używa jednego z przechowywanych obiektów transakcji, powinien ponownie użyć obiektu transakcji, zamiast go usunąć po zakończeniu transakcji. Sterownik konfiguruje obiekt transakcji do ponownego użycia przez wywołanie WdfDmaTransactionRelease zamiast WdfObjectDelete.
Przykład PLX9x5x ponownie używa obiektów transakcji DMA.