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 を同期的に呼び出す必要があります。 ドライバーは、これらの関数のいずれかを呼び出した後、最初の関数が返される前に、もう一方の関数を呼び出してはなりません。
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 |
Header | wudfddi.h (Wudfddi.h を含む) |
[DLL] | WUDFx.dll |