IWDFIoTargetStateManagement::Start 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #DD7B26CA89A47489D8994F7C469FA79C4 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]
Start 方法會開始將佇列要求傳送至本機 I/O 目標。
Syntax
HRESULT Start();
傳回值
如果 作業成功,Start 會傳回S_OK。 否則,此方法可能會傳回其中一個錯誤碼:
傳回碼 | Description |
---|---|
|
裝置已移除。 |
這個方法可能會傳回 Winerror.h 定義的其中一個其他錯誤碼。
備註
如果您的驅動程式可以偵測可復原的裝置錯誤,您可能希望驅動程式呼叫 IWDFIoTargetStateManagement::Stop 暫時停止將要求傳送至本機 I/O 目標,然後稍後呼叫 Start 繼續傳送要求。
此外,如果驅動程式呼叫 IWDFUsbTargetPipe2::ConfigureContinuousReader 來設定 USB 管道的連續讀取器,驅動程式的 IPnpCallback::OnD0Entry 回呼函式必須呼叫 Start 以啟動讀取器。
您的驅動程序必須以同步方式呼叫 Start 和 IWDFIoTargetStateManagement::Stop 。 在驅動程式呼叫其中一個函式之後,它不得在第一個函式傳回之前呼叫另一個函式。
如需 Start 的詳細資訊,請參閱 控制 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 |