共用方式為


EVT_UFX_DEVICE_HOST_DISCONNECT回呼函式 (ufxclient.h)

用戶端驅動程序的實作,以停用函式控制器與主機的通訊。

語法

EVT_UFX_DEVICE_HOST_DISCONNECT EvtUfxDeviceHostDisconnect;

void EvtUfxDeviceHostDisconnect(
  [in] UFXDEVICE unnamedParam1
)
{...}

參數

[in] unnamedParam1

用戶端驅動程式在先前呼叫UfxDeviceCreate 方法時收到的USB裝置物件的句柄。

傳回值

沒有

言論

函式主機控制器的用戶端驅動程式會藉由呼叫 UfxDeviceCreate 方法,向 USB 函式類別延伸模組 (UFX) 註冊其 EVT_UFX_DEVICE_HOST_DISCONNECT 實作。

UFX 會叫用此事件回呼,以在USB纜線上執行虛中斷連線。 在此呼叫之後,客戶端驅動程式在UFX叫用 EVT_UFX_DEVICE_HOST_CONNECT之前,不得起始與主機的連線。

用戶端驅動程式會呼叫 UfxDeviceEventComplete 方法來指示完成此事件。

例子

EVT_UFX_DEVICE_HOST_DISCONNECT UfxDevice_EvtDeviceHostDisconnect;

VOID
UfxDevice_EvtDeviceHostDisconnect (
    _In_ UFXDEVICE UfxDevice
    )
/*++

Routine Description:

    EvtDeviceHostDisconnect callback handler for UFXDEVICE object.

Arguments:

    UfxDevice - UFXDEVICE object representing the device.

--*/
{
    PCONTROLLER_CONTEXT ControllerContext;
    PUFXDEVICE_CONTEXT DeviceContext;
    BOOLEAN EventComplete;

    TraceEntry();

    DeviceContext = UfxDeviceGetContext(UfxDevice);
    ControllerContext = DeviceGetControllerContext(DeviceContext->FdoWdfDevice);

    EventComplete = TRUE;

    //
    // #### TODO: Cancel all transfers. ####
    //

    WdfSpinLockAcquire(ControllerContext->DpcLock);

    //
    // #### TODO: Insert code to clear the run state on the controller ####
    //
    
    WdfSpinLockRelease(ControllerContext->DpcLock);

    if (EventComplete) {
        UfxDeviceEventComplete(UfxDevice, STATUS_SUCCESS);
    }

    TraceExit();
}

要求

要求 價值
目標平臺 窗戶
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
標頭 ufxclient.h
IRQL <=DISPATCH_LEVEL

另請參閱