Прочитать на английском

Поделиться через


Использование идентификаторов действий

В версиях структуры 1.11 и более поздних драйверы UMDF могут задавать и извлекать идентификаторы действий. Идентификаторы действий позволяют связать несколько запросов ввода-вывода, чтобы отслеживать их с помощью трассировки событий для Windows (ETW). В этом разделе описываются некоторые возможные сценарии, в которых драйвер может использовать идентификаторы действий.

Связывание новых запросов с существующим запросом

В функции обратного вызова ввода-вывода драйвера можно создать несколько запросов на ввод-вывод платформы в результате входящего запроса. Драйвер получает идентификатор действия из исходного запроса и задает его в новых запросах путем вызова WdfRequestRetrieveActivityId и WdfRequestSetActivityId.

Пример кода см. в разделе WdfRequestRetrieveActivityId.

Связывание новых запросов с существующим потоком

Драйвер может создать новый запрос ввода-вывода в потоке, отличном от потока отправки ввода-вывода или рабочего элемента. Можно задать идентификатор действия для такого запроса из любого соответствующего запроса или с помощью идентификатора действия, связанного с потоком отправки ввода-вывода. Драйвер может получить идентификатор действия, связанный с текущим потоком, вызвав EventActivityIdControl, а затем вызовив WdfRequestSetActivityId, чтобы задать идентификатор для каждого нового запроса ввода-вывода.

Если драйвер вызывает API Win32 для отправки запроса ввода-вывода, он может получить идентификатор действия из исходного запроса и распространить его в поток. Затем диспетчер операций ввода-вывода применяет идентификатор действия, связанный с потоком, к любым пакетам запросов ввода-вывода (IRPs), которые он создает в ответ на запрос.