Compartir a través de


Función IoStartNextPacket (wdm.h)

El IoStartNextPacket rutina pone en cola el siguiente IRP, si existe, desde la cola de dispositivos asociada del objeto de dispositivo dado y llama a la rutina StartIo del controlador.

Sintaxis

VOID IoStartNextPacket(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] BOOLEAN        Cancelable
);

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo para el que se va a quitar el IRP.

[in] Cancelable

Especifica si se pueden cancelar las IRP de la cola de dispositivos.

Valor devuelto

Ninguno

Observaciones

Si no hay IRP actualmente en la cola de dispositivos para el destino DeviceObject, esta rutina simplemente devuelve el control al autor de la llamada.

Si el controlador pasó un puntero a una rutina de cancelación cuando llamó a ioStartPacket, debe pasar TRUE en el parámetro cancelable de. Si cancelable es TRUE, el administrador de E/S usará el bloqueo de giro de cancelación para proteger la cola del dispositivo y el IRP actual.

Los controladores que no tienen una rutina StartIo no pueden llamar a IoStartNextPacket.

Los controladores que llaman a ioStartNextPacket desde su rutina startIo deben tener en cuenta los problemas de recursividad. Si un controlador puede llamar a ioStartNextPacket en un gran número de solicitudes sucesivamente desde su rutina de StartIo (por ejemplo, cuando se produce un error de dispositivo y el controlador está borrando la cola de dispositivos), debe establecer el atributo DeferredStartIo para el dispositivo mediante rutina IoSetStartIoAttributes. Este atributo garantiza que el siguiente paquete no se emitirá hasta que se devuelva la llamada a StartIo anterior.

Los autores de llamadas de ioStartNextPacket deben ejecutarse en IRQL = DISPATCH_LEVEL. Normalmente, se llama a esta rutina desde el DpcForIsr de un controlador de dispositivo o rutina customDpc, que se ejecutan en IRQL = DISPATCH_LEVEL.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL DISPATCH_LEVEL (consulte la sección Comentarios)
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch() wdm), SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm)

Consulte también

DEVICE_OBJECT

IoSetStartIoAttributes

ioStartNextPacketByKey

IoStartPacket