Функция UfxDeviceIoInternalControl (ufxclient.h)
Передает операции ввода-вывода в режим ядра В UFX.
Синтаксис
BOOLEAN UfxDeviceIoInternalControl(
[in] UFXDEVICE UfxDevice,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
);
Параметры
[in] UfxDevice
Дескриптор объекта устройства UFX, созданного драйвером, вызывая UfxDeviceCreate.
[in] Request
Дескриптор объекта запроса платформы.
[in] OutputBufferLength
Длина в байтах выходного буфера запроса, если выходной буфер доступен.
[in] InputBufferLength
Длина входного буфера запроса в байтах, если входной буфер доступен.
[in] IoControlCode
Определяемый драйвером или системный IOCTL, связанный с запросом.
Возвращаемое значение
Логическое значение, указывающее, был ли вызов успешным.
Замечания
Драйвер клиента вызывает UfxDeviceIoInternalControl для пересылки внутренних операций ввода-вывода, которые он получает в EvtIoInternalDeviceControl функцию обратного вызова в UFX. В следующем примере показано, как:
VOID
DefaultQueue_EvtIoInternalDeviceControl(
_In_ WDFQUEUE Queue,
_In_ WDFREQUEST Request,
_In_ size_t OutputBufferLength,
_In_ size_t InputBufferLength,
_In_ ULONG IoControlCode
)
/*++
Routine Description:
EvtIoInternalDeviceControl 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("InternalQueue 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 = UfxDeviceIoInternalControl(
ControllerContext->UfxDevice,
Request,
OutputBufferLength,
InputBufferLength,
IoControlCode);
if (!HandledbyUfx) {
TraceError("Received an unsupported IOCTL");
WdfRequestComplete(Request, STATUS_INVALID_DEVICE_REQUEST);
}
TraceExit();
}
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 10 |
целевая платформа | Виндоус |
заголовка | ufxclient.h |
библиотеки | ufxstub.lib |
IRQL | DISPATCH_LEVEL |