Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[Se aplica a KMDF y UMDF]
La EvtIoInternalDeviceControl de un controlador función de devolución de llamada de eventos procesa una solicitud de E/S que contiene un código de control de E/S de dispositivo interno (IOCTL).
Sintaxis
EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtWdfIoQueueIoInternalDeviceControl;
void EvtWdfIoQueueIoInternalDeviceControl(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
Parámetros
[in] Queue
Identificador del objeto de cola de marco asociado a la solicitud de E/S.
[in] Request
Identificador de un objeto de solicitud de marco.
[in] OutputBufferLength
Longitud, en bytes, del búfer de salida de la solicitud, si hay disponible un búfer de salida.
[in] InputBufferLength
Longitud, en bytes, del búfer de entrada de la solicitud, si hay disponible un búfer de entrada.
[in] IoControlCode
IOCTL definido por el controlador o definido por el sistema que está asociado a la solicitud.
Valor devuelto
Ninguno
Observaciones
Un controlador registra una función de devolución de llamada EvtIoInternalDeviceControl cuando llama al método WdfIoQueueCreate. Para obtener más información sobre cómo llamar a WdfIoQueueCreate, vea Creación de colas de E/S.
Si un controlador ha registrado un EvtIoInternalDeviceControl función de devolución de llamada para la cola de E/S de un dispositivo, la función de devolución de llamada recibe cada solicitud de control de E/S interna (IRP_MJ_INTERNAL_DEVICE_CONTROL) de la cola. Para obtener más información, consulte controladores de solicitudes.
El EvtIoInternalDeviceControl función de devolución de llamada debe procesar cada solicitud de E/S recibida de alguna manera. Para obtener más información, consulte procesar solicitudes de E/S.
Los controladores reciben solicitudes de control de E/S internas cuando otro controlador crea una solicitud llamando a WdfIoTargetSendInternalIoctlSynchronously o WdfIoTargetFormatRequestForInternalIoctl.
El tipo de operación que se va a realizar depende del valor del parámetro IoControlCode. Debe determinar el conjunto de IoControlCode valores que las aplicaciones y otros controladores pueden enviar al controlador. Para obtener más información sobre las ICTL, consulte Uso de códigos de control de E/S.
La mayoría de las operaciones de control de E/S internas requieren un búfer de entrada, un búfer de salida o ambos. Para obtener información sobre cómo el controlador puede acceder a los búferes de una solicitud, consulte acceso a búferes de datos en controladores de Framework-Based.
Las técnicas que el controlador puede usar para acceder a los búferes de entrada y salida de la solicitud (si existen) dependen del campo transferType de del IOCTL. El valor del campo transferType transferType del IOCTL puede ser METHOD_BUFFERED, METHOD_DIRECT_IN, METHOD_DIRECT_OUT o METHOD_NEITHER. Para obtener más información sobre el campo TransferType, vea Definición de códigos de control de E/S.
Se puede llamar a la función de devolución de llamada EvtIoInternalDeviceControl en IRQL <= DISPATCH_LEVEL, a menos que el ExecutionLevel miembro de la estructura de WDF_OBJECT_ATTRIBUTES del dispositivo o controlador esté establecido en WdfExecutionLevelPassive. (Si el controlador está en la parte superior de su pila de controladores, se llama a la función de devolución de llamada en IRQL = PASSIVE_LEVEL).
Si irQL es PASSIVE_LEVEL, el marco llama a la función de devolución de llamada dentro de una región crítica .
Para obtener más información sobre los niveles IRQL para los controladores de solicitudes, consulte Using Automatic Synchronization.
Las EvtIoInternalDeviceControl de un controlador función de devolución de llamada no deben llamar a los siguientes métodos de objeto de cola:
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Universal |
versión mínima de KMDF | 1.0 |
versión mínima de UMDF | 2.0 |
encabezado | wdfio.h (incluya Wdf.h) |
irQL | <= DISPATCH_LEVEL (consulte la sección Comentarios) |