共用方式為


IWDFIoTargetStateManagement::Start 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上對 UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱 開始使用 UMDF。]

Start 方法會開始將佇列要求傳送至 本機 I/O 目標

語法

HRESULT Start();

傳回值

如果作業成功,Start 會傳回S_OK。 否則,此方法可能會傳回其中一個錯誤碼:

傳回碼 描述
HRESULT_FROM_NT(STATUS_INVALID_DEVICE_STATE)
裝置已移除。
 

這個方法可能會傳回 Winerror.h 定義的其他錯誤碼之一。

言論

如果您的驅動程式可以偵測到可復原的裝置錯誤,您可能希望驅動程式呼叫 IWDFIoTargetStateManagement::Stop 暫時停止將要求傳送至本機 I/O 目標,然後稍後呼叫 Start 以繼續傳送要求。

此外,如果驅動程式呼叫 IWDFUsbTargetPipe2::ConfigureContinuousReader 來設定 USB 管道的連續讀取器,驅動程式的 IPnpCallback::OnD0Entry 回呼函式必須呼叫 Start 啟動讀取器。

您的驅動程式必須呼叫 Start,並同步 IWDFIoTargetStateManagement::Stop。 在驅動程式呼叫其中一個函式之後,它不得在第一個函式傳回之前呼叫另一個函式。

如需 開始的詳細資訊,請參閱在 UMDF 控制一般 I/O 目標的狀態。

如需 I/O 目標的詳細資訊,請參閱在 UMDF 中使用 I/O 目標

例子

下列程式代碼範例會先示範驅動程式如何取得 USB 管道物件的 IWDFIoTargetStateManagement 介面。 然後,程式代碼範例會示範如果驅動程式使用 USB 管道連續讀取器,IPnpCallback::OnD0Entry 回呼函式如何呼叫 Start


    IWDFIoTargetStateManagement * m_pIoTargetInterruptPipeStateMgmt = NULL;

    IWDFUsbTargetFactory *  pIUsbTargetFactory = NULL;
    IWDFUsbTargetDevice *   pIUsbTargetDevice = NULL;
    IWDFUsbInterface *      pIUsbInterface = NULL;
    IWDFUsbTargetPipe *     pIUsbPipe = NULL;

    hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pIUsbTargetFactory));
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetFactory->CreateUsbTargetDevice(&pIUsbTargetDevice);
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetDevice->RetrieveUsbInterface(0, &pIUsbInterface);
    if (FAILED(hr))
    {...}
    NumEndPoints = pIUsbInterface->GetNumEndPoints();
    for (UCHAR PipeIndex = 0; PipeIndex < NumEndPoints; PipeIndex++)
    {
        hr = pIUsbInterface->RetrieveUsbPipeObject(PipeIndex, &pIUsbPipe);
        if (FAILED(hr))
        {...}
        else
        {
            if (pIUsbPipe->IsInEndPoint())
            {
                if (UsbdPipeTypeInterrupt == pIUsbPipe->GetType())
                {
                    m_pIUsbInterruptPipe = pIUsbPipe;
                    hr = m_pIUsbInterruptPipe->QueryInterface(IID_PPV_ARGS(&m_pIoTargetInterruptPipeStateMgmt));
                    if (FAILED(hr))
                    {...}
                }
            }
        }
    } 

HRESULT
CMyDevice::OnD0Entry(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
...
    m_pIoTargetInterruptPipeStateMgmt->Start();
...
    return S_OK;
}

要求

要求 價值
終止支援 UMDF 2.0 和更新版本中無法使用。
目標平臺 桌面
最低 UMDF 版本 1.5
標頭 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另請參閱

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop