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


Функция 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 (см. раздел "Примечания")

См. также раздел

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey