Функция IoStartPacket (wdm.h)
Подпрограмма IoStartPacket вызывает подпрограмму StartIo драйвера с заданной IRP или вставляет IRP в очередь устройства, связанную с заданным объектом устройства, если устройство уже занято.
Синтаксис
void IoStartPacket(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in, optional] PULONG Key,
[in, optional] PDRIVER_CANCEL CancelFunction
);
Параметры
[in] DeviceObject
Указатель на целевой объект устройства для IRP.
[in] Irp
Указатель на IRP для обработки.
[in, optional] Key
Указатель на значение, определяющее место вставки пакета в очередь устройств. Если значение равно нулю, пакет вставляется в конце очереди устройства.
[in, optional] CancelFunction
Указывает точку входа для процедуры отмены , предоставляемой драйвером.
Возвращаемое значение
None
Remarks
Если драйвер уже занят обработкой запроса для целевого объекта устройства, пакет помещается в очередь устройства. В противном случае эта подпрограмма вызывает подпрограмму StartIo драйвера с указанным IRP.
Если указан указатель CancelFunction , отличный от NULL, он задается в IRP, поэтому в случае отмены IRP до его завершения вызывается подпрограмма отмены драйвера.
Драйверы, у которых нет подпрограммы StartIo , не могут вызывать IoStartPacket.
Вызывающие экземпляры IoStartPacket должны выполняться по адресу IRQL <= DISPATCH_LEVEL. Как правило, эта подпрограмма вызывается из подпрограммы Dispatch драйвера устройства в IRQL = PASSIVE_LEVEL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (см. раздел "Примечания") |