次の方法で共有


IWDFDevice::CreateRequest メソッド (wudfddi.h)

[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDFの概要」を参照してください。

CreateRequest メソッドは、書式設定されていない要求オブジェクトを作成します。

構文

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

パラメーター

[in, optional] pCallbackInterface

新しく作成された要求オブジェクトでドライバーがサブスクライブするオブジェクト関連のイベント コールバック関数を決定するためにフレームワークが使用する IUnknown インターフェイスへのポインター。 このパラメーターは省略可能です。 ドライバーが通知 必要としない場合、ドライバーは NULL を渡すことができます。 ドライバーが有効なポインターを渡した場合、フレームワークは、IObjectCleanup インターフェイスの IUnknown インターフェイスで QueryInterface を呼び出します。 フレームワークがドライバーの IObjectCleanup インターフェイスを取得した場合、フレームワークは後でドライバーの IObjectCleanup::OnCleanup メソッドを呼び出して、要求オブジェクトがクリーンアップされたことをドライバーに通知できます。

[in, optional] pParentObject

作成された I/O 要求オブジェクトの親オブジェクトの IWDFObject インターフェイスへのポインター。 NULL 場合、デバイス オブジェクトは既定の親になります。

[out] ppRequest

新しい要求オブジェクトの IWDFIoRequest インターフェイスへのポインターを受け取る変数へのポインター。

戻り値

CreateRequest は、操作が成功した場合にS_OKを返します。 それ以外の場合、このメソッドは Winerror.h で定義されているエラー コードの 1 つを返します。

備考

UMDF ドライバーは、CreateRequest 作成 要求オブジェクトを使用する前に、ドライバーは要求オブジェクトを書式設定する必要があります。 I/O 要求オブジェクトを書式設定するには、ドライバーは、次のいずれかのメソッドを呼び出します。

ドライバー CreateRequest を呼び出して要求オブジェクトを作成する場合は、要求オブジェクト IWDFIoRequest::Complete を呼び出してはなりません。 代わりに、ドライバーは要求オブジェクト 使用が完了したときに IWDFObject::D eleteWdfObject を呼び出す必要があります。 詳細については、「I/O 要求の完了」を参照してください。

pParentObject パラメーター NULL が指定されている場合、デバイス オブジェクトは新しく作成された I/O 要求オブジェクトの既定の親オブジェクトになります。 UMDF ドライバーは、特定の I/O キュー オブジェクトまたは別の I/O 要求オブジェクトでドライバーが使用する I/O 要求オブジェクトを作成する場合、ドライバーは作成された要求オブジェクトの親オブジェクトとして、そのキューまたは要求オブジェクトを設定する必要があります。 親オブジェクトが削除されると、作成された要求オブジェクトが削除されます。

次のコード例は、要求を作成し、読み取りの要求を書式設定し、要求を送信する方法を示しています。

HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;

    HRESULT hr;

    IWDFFile *pTargetFile = NULL;

    // Allocate a new WDF request to send on the interrupt pipe.
    GetWdfDevice(&wdfDevice);
    hr = wdfDevice->CreateRequest(
                                  static_cast<IObjectCleanup*>(this), 
                                  wdfDevice, 
                                  &m_InterruptReadRequest
                                  );

    if (SUCCEEDED(hr))
    {
        m_InterruptPipe->GetTargetFile(&pTargetFile);
        hr = m_InterruptPipe->FormatRequestForRead(
                                                   m_InterruptReadRequest,
                                                   pTargetFile,
                                                   m_ReadMemory,
                                                   NULL,
                                                   NULL
                                                   );
    }

    // Issue the read to the pipe.
    if (SUCCEEDED(hr))
    {
        hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
    }

    return hr;
}

必要条件

要件 価値
サポート終了 UMDF 2.0 以降では使用できません。
ターゲット プラットフォーム デスクトップ
UMDF の最小バージョン する 1.5
ヘッダー wudfddi.h (Wudfddi.h を含む)
DLL WUDFx.dll

関連項目

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject