Função IoStartNextPacket (wdm.h)
A rotina IoStartNextPacket desativa o próximo IRP, se houver, da fila de dispositivos associada do objeto de dispositivo fornecido e chama a rotina StartIo do driver.
Sintaxe
void IoStartNextPacket(
[in] PDEVICE_OBJECT DeviceObject,
[in] BOOLEAN Cancelable
);
Parâmetros
[in] DeviceObject
Ponteiro para o objeto de dispositivo para o qual o IRP deve ser desempacotar.
[in] Cancelable
Especifica se os IRPs na fila do dispositivo podem ser cancelados.
Retornar valor
Nenhum
Comentários
Se não houver NENHUM IRPs atualmente na fila do dispositivo para o DeviceObject de destino, essa rotina simplesmente retornará o controle para o chamador.
Se o driver passou um ponteiro para uma rotina de cancelamento quando chamou IoStartPacket, ele deverá passar TRUE no parâmetro Cancelable . Se Cancelable for TRUE, o gerenciador de E/S usará o bloqueio de rotação de cancelamento para proteger a fila do dispositivo e o IRP atual.
Os drivers que não têm uma rotina StartIo não podem chamar IoStartNextPacket.
Os drivers que chamam IoStartNextPacket de sua rotina StartIo devem estar cientes dos problemas de recursão. Se um driver puder chamar IoStartNextPacket em um grande número de solicitações sucessivas de sua rotina StartIo (por exemplo, quando ocorrer um erro de dispositivo e o driver estiver desmarcando a fila do dispositivo), defina o atributo DeferredStartIo para o dispositivo usando a rotina IoSetStartIoAttributes . Esse atributo garante que o próximo pacote não será emitido até que a chamada anterior do StartIo retorne.
Os chamadores de IoStartNextPacket devem estar em execução em IRQL = DISPATCH_LEVEL. Normalmente, essa rotina é chamada da rotina DpcForIsr ou CustomDpc de um driver de dispositivo, ambas executadas em IRQL = DISPATCH_LEVEL.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL (consulte a seção Comentários) |
Regras de conformidade da DDI | HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm) |