Función UfxDeviceIoControl (ufxclient.h)
Pasa ICTLs no internos del modo de usuario a UFX.
Sintaxis
BOOLEAN UfxDeviceIoControl(
[in] UFXDEVICE UfxDevice,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
);
Parámetros
[in] UfxDevice
Identificador de un objeto de dispositivo UFX que creó el controlador mediante una llamada a UfxDeviceCreate.
[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
Valor booleano que indica si la llamada se realizó correctamente.
Comentarios
El controlador cliente llama a UfxDeviceIoControl para reenviar ICTLs no internos que recibe en su función de devolución de llamada EvtIoDeviceControl a UFX. El siguiente ejemplo muestra cómo:
VOID
DefaultQueue_EvtIoDeviceControl(
_In_ WDFQUEUE Queue,
_In_ WDFREQUEST Request,
_In_ size_t OutputBufferLength,
_In_ size_t InputBufferLength,
_In_ ULONG IoControlCode
)
/*++
Routine Description:
EvtIoDeviceControl handler for the default Queue
Arguments:
Queue - Handle to the framework queue object that is associated with the
I/O request.
Request - Handle to a framework request object.
OutputBufferLength - Size of the output buffer in bytes
InputBufferLength - Size of the input buffer in bytes
IoControlCode - I/O control code.
--*/
{
WDFDEVICE WdfDevice;
PCONTROLLER_CONTEXT ControllerContext;
BOOLEAN HandledbyUfx;
TraceEntry();
TraceVerbose("Queue 0x%p, Request 0x%p, OutputBufferLength %d, "
"InputBufferLength %d, IoControlCode %d",
Queue, Request, (int) OutputBufferLength,
(int) InputBufferLength, IoControlCode);
WdfDevice = WdfIoQueueGetDevice(Queue);
ControllerContext = DeviceGetControllerContext(WdfDevice);
HandledbyUfx = UfxDeviceIoControl(
ControllerContext->UfxDevice,
Request,
OutputBufferLength,
InputBufferLength,
IoControlCode);
if (!HandledbyUfx) {
TraceError("Received an unsupported IOCTL");
WdfRequestComplete(Request, STATUS_INVALID_DEVICE_REQUEST);
}
TraceExit();
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Plataforma de destino | Windows |
Encabezado | ufxclient.h |
Library | ufxstub.lib |
IRQL | DISPATCH_LEVEL |