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。 否則,此方法可能會傳回其中一個錯誤碼:
傳回碼 | 描述 |
---|---|
|
裝置已移除。 |
這個方法可能會傳回 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 |