UfxDeviceIoControl-Funktion (ufxclient.h)
Übergibt nicht interne IOCTLs aus dem Benutzermodus an UFX.
Syntax
BOOLEAN UfxDeviceIoControl(
[in] UFXDEVICE UfxDevice,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
);
Parameter
[in] UfxDevice
Ein Handle für ein UFX-Geräteobjekt, das der Treiber durch Aufrufen von UfxDeviceCreate erstellt hat.
[in] Request
Ein Handle für ein Frameworkanforderungsobjekt.
[in] OutputBufferLength
Die Länge des Ausgabepuffers der Anforderung in Bytes, wenn ein Ausgabepuffer verfügbar ist.
[in] InputBufferLength
Die Länge des Eingabepuffers der Anforderung in Bytes, wenn ein Eingabepuffer verfügbar ist.
[in] IoControlCode
Die vom Treiber definierte oder systemdefinierte IOCTL, die der Anforderung zugeordnet ist.
Rückgabewert
Ein boolescher Wert, der angibt, ob der Aufruf erfolgreich war.
Hinweise
Der Clienttreiber ruft UfxDeviceIoControl auf, um nicht interne IOCTLs, die er in seiner Rückruffunktion EvtIoDeviceControl empfängt , an UFX weiterzuleiten. Das folgende Beispiel veranschaulicht die Vorgehensweise:
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();
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Zielplattform | Windows |
Kopfzeile | ufxclient.h |
Bibliothek | ufxstub.lib |
IRQL | DISPATCH_LEVEL |