Función IoStartPacket (ntifs.h)
La rutina IoStartPacket llama a la rutina StartIo del controlador con el IRP especificado o inserta el IRP en la cola de dispositivos asociada al objeto de dispositivo determinado si el dispositivo ya está ocupado.
Sintaxis
void IoStartPacket(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in, optional] PULONG Key,
[in, optional] PDRIVER_CANCEL CancelFunction
);
Parámetros
[in] DeviceObject
Puntero al objeto de dispositivo de destino del IRP.
[in] Irp
Puntero al IRP que se va a procesar.
[in, optional] Key
Puntero a un valor que determina dónde insertar el paquete en la cola del dispositivo. Si es cero, el paquete se inserta al final de la cola del dispositivo.
[in, optional] CancelFunction
Especifica el punto de entrada de una rutina Cancel proporcionada por el controlador.
Valor devuelto
None
Observaciones
Si el controlador ya está ocupado procesando una solicitud para el objeto de dispositivo de destino, el paquete se pone en cola en la cola del dispositivo. De lo contrario, esta rutina llama a la rutina StartIo del controlador con el IRP especificado.
Si se proporciona un puntero CancelFunction distinto de NULL, se establece en el IRP para que se llame a la rutina Cancel del controlador si el IRP se cancela antes de su finalización.
Los controladores que no tienen una rutina StartIo no pueden llamar a IoStartPacket.
Los autores de llamadas de IoStartPacket deben ejecutarse en IRQL <= DISPATCH_LEVEL. Normalmente, se llama a esta rutina desde la rutina dispatch de un controlador de dispositivo en IRQL = PASSIVE_LEVEL.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 |
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluye Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (consulte la sección Comentarios) |