Udostępnij przez


Ponowne użycie obiektów żądań frameworku

Aby zwiększyć wydajność, sterowniki oparte na strukturze, które tworzą i wysyłają wiele niemal identycznych żądań asynchronicznych do obiektu docelowego we/wy, mogą ponownie używać obiektów żądań zamiast tworzyć nowy obiekt żądania dla każdego żądania. Sterownik może ponownie użyć obiektu żądania po zakończeniu żądania.

Jeśli sterownik utworzył obiekt żądania przez wywołanie WdfRequestCreate lub WdfRequestCreateFromIrp, może ponownie użyć żądania, wywołując WdfRequestReuse. Sterownik może również ponownie używać obiektów żądań odebranych ze struktury w kolejkach we/wy, ale nie może zmienić protokołu IRP, który zawiera odebrany obiekt żądania.

Jeśli starasz się unikać sytuacji, które powodują nieudane wartości zwracane opisane w WdfRequestReuse, sterownik może wywołać WdfRequestReuse w funkcji CompletionRoutine wywołania zwrotnego. (Funkcja wywołania zwrotnego CompletionRoutine ma typ zwracany void i dlatego nie może zgłaszać błędów).

Jeśli sterownik udostępnia funkcję CompletionRoutine wywołania zwrotnego dla obiektu żądania, który jest ponownie używany, sterownik musi wywołać WdfRequestSetCompletionRoutine po wywołaniu WdfRequestReuse.