Функция IoStartPacket (ntifs.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 |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (см. раздел "Примечания") |