UfxDeviceIoInternalControl-Funktion (ufxclient.h)
Übergibt IOCTLs im Kernelmodus an UFX.
Syntax
BOOLEAN UfxDeviceIoInternalControl(
[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 treiberdefinierte oder systemdefinierte IOCTL, die der Anforderung zugeordnet ist.
Rückgabewert
Ein boolescher Wert, der angibt, ob der Aufruf erfolgreich war.
Hinweise
Der Clienttreiber ruft UfxDeviceIoInternalControl auf, um interne IOCTLs, die er in seiner EvtIoInternalDeviceControl-Rückruffunktion empfängt , an UFX weiterzuleiten. Das folgende Beispiel veranschaulicht die Vorgehensweise:
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();
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Zielplattform | Windows |
Kopfzeile | ufxclient.h |
Bibliothek | ufxstub.lib |
IRQL | DISPATCH_LEVEL |