Fungsi UfxDeviceIoInternalControl (ufxclient.h)

Meneruskan IOCTL mode kernel ke UFX.

Sintaks

BOOLEAN UfxDeviceIoInternalControl(
  [in] UFXDEVICE  UfxDevice,
  [in] WDFREQUEST Request,
  [in] size_t     OutputBufferLength,
  [in] size_t     InputBufferLength,
  [in] ULONG      IoControlCode
);

Parameter

[in] UfxDevice

Handel ke objek perangkat UFX yang dibuat driver dengan memanggil UfxDeviceCreate.

[in] Request

Handel ke objek permintaan kerangka kerja.

[in] OutputBufferLength

Panjang, dalam byte, dari buffer output permintaan, jika buffer output tersedia.

[in] InputBufferLength

Panjang, dalam byte, dari buffer input permintaan, jika buffer input tersedia.

[in] IoControlCode

IOCTL yang ditentukan driver atau yang ditentukan sistem yang terkait dengan permintaan.

Nilai kembali

Nilai Boolean yang menunjukkan apakah panggilan berhasil.

Keterangan

Driver klien memanggil UfxDeviceIoInternalControl untuk meneruskan IOCTL internal yang diterimanya dalam fungsi panggilan balik EvtIoInternalDeviceControl ke UFX. Contoh berikut menunjukkan caranya:

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("Recieved an un supported IOCTL");
        WdfRequestComplete(Request, STATUS_INVALID_DEVICE_REQUEST);
    }

    TraceExit();
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Target Platform Windows
Header ufxclient.h
Pustaka ufxstub.lib
IRQL DISPATCH_LEVEL