Использование идентификаторов действий
В версии платформы 1.11 и более поздних драйверы UMDF могут задавать и извлекать идентификаторы действий . Идентификаторы действий позволяют связать несколько запросов ввода-вывода, чтобы их можно было отслеживать с помощью трассировки событий Windows (ETW). В этом разделе описываются некоторые возможные сценарии, в которых драйвер может использовать идентификаторы действий.
Связывание новых запросов с существующим запросом
В функции обратного вызова диспетчера ввода-вывода драйвера можно создать несколько запросов ввода-вывода платформы в результате входящего запроса. Драйвер получает идентификатор действия из исходного запроса и задает его в новых запросах, вызывая WdfRequestRetrieveActivityId и WdfRequestSetActivityId.
Пример кода см. в разделе WdfRequestRetrieveActivityId.
Связывание новых запросов с существующим потоком
Драйвер может создать новый запрос ввода-вывода в потоке, отличном от потока отправки ввода-вывода, или в рабочем элементе. Вы можете задать идентификатор действия для такого запроса из любого соответствующего запроса или с помощью идентификатора действия, связанного с потоком отправки ввода-вывода. Драйвер может получить идентификатор действия, связанный с текущим потоком, вызвав EventActivityIdControl , а затем вызвав WdfRequestSetActivityId , чтобы задать идентификатор для каждого нового запроса ввода-вывода.
Если драйвер вызывает API Win32 для отправки запроса ввода-вывода, он может получить идентификатор действия из исходного запроса и распространить его в поток. Затем диспетчер ввода-вывода применяет идентификатор действия, связанный с потоком, к любым пакетам запросов ввода-вывода ( IRP), которые он создает в ответ на запрос.