Функция NdisQueueIoWorkItem (ndis.h)
Драйверы NDIS вызывают функцию NdisQueueIoWorkItem для постановки рабочего элемента в очередь.
Синтаксис
void NdisQueueIoWorkItem(
[in] NDIS_HANDLE NdisIoWorkItemHandle,
[in] NDIS_IO_WORKITEM_ROUTINE Routine,
[in] PVOID WorkItemContext
);
Параметры
[in] NdisIoWorkItemHandle
Дескриптор частной структуры IO_WORKITEM , возвращенной предыдущим вызовомФункция NdisAllocateIoWorkItem.
[in] Routine
Точка входа в функцию, которую NDIS вызывает для обработки рабочего элемента. NDIS вызывает эту подпрограмму в контексте системного потока.
WorkItemContext
Указатель на область контекста, переданную драйвером в параметр WorkItemContextобъекта NdisQueueIoWorkItem.
NdisIoWorkItemHandle
Дескриптор частной структуры NDIS_IO_WORKITEM , возвращенной предыдущим вызовомФункция NdisAllocateIoWorkItem.
[in] WorkItemContext
Указатель на область контекста, предоставленную вызывающим абонентом, которая проходит через NDIS в процедуру обратного вызова. WorkItemContext может быть любыми данными, указанными вызывающим объектом, которые требуются драйверу для управления рабочим элементом.
Возвращаемое значение
None
Remarks
NdisQueueIoWorkItem вызывает IoQueueWorkItem для постановки рабочего элемента в очередь. Рабочие элементы NDIS используют тип очереди CriticalWorkQueue .
Подпрограмма обратного вызова ,предоставляемая вызывающим абонентом (NDIS_IO_WORKITEM_ROUTINE), выполняется в контексте системного потока по адресу IRQL = PASSIVE_LEVEL.
Эта подпрограмма, предоставляемая вызывающим объектом, может вызывать функцию NdisFreeIoWorkItem для освобождения хранилища, выделенного для рабочего элемента.
Примеры
Чтобы определить функцию Routine , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию Routine с именем MyWorkitemRoutine, используйте тип NDIS_IO_WORKITEM_FUNCTION , как показано в этом примере кода:
NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MyWorkitemRoutine(
PVOID WorkItemContext,
NDIS_HANDLE NdisIoWorkItemHandle
)
{...}
Тип функции NDIS_IO_WORKITEM_FUNCTION определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции NDIS_IO_WORKITEM_FUNCTION в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье О поведении функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Универсальное |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | Irql_Miscellaneous_Function(ndis) |