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


Функция 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

Указывает точку входа для предоставленной драйвером процедуры отмены драйвера.

Возвращаемое значение

Никакой

Замечания

Если драйвер уже занят обработкой запроса целевого объекта устройства, пакет помещается в очередь устройства. В противном случае эта подпрограмма вызывает драйвера StartIo подпрограмму с указанным IRP.

Если указан указатель, отличный от NULL CancelFunction, он устанавливается в IRP, чтобы программа отмены отмены драйвера вызывается, если IRP отменен до его завершения.

Драйверы, у которых нет подпрограммы StartIo, не могут вызывать IoStartPacket.

Вызывающие IoStartPacket должны выполняться в IRQL <= DISPATCH_LEVEL. Обычно эта подпрограмма вызывается из подпрограммы диспетчера драйвера устройства в IRQL = PASSIVE_LEVEL.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")

См. также

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey