次の方法で共有


IWDFDriver::CreateWdfMemory メソッド (wudfddi.h)

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

CreateWdfMemory メソッドは、フレームワーク メモリ オブジェクトを作成し、メモリ オブジェクトに指定された 0 以外のサイズのデータ バッファーを割り当てます。

構文

HRESULT CreateWdfMemory(
  [in]           SIZE_T     BufferSize,
  [in, optional] IUnknown   *pCallbackInterface,
  [in, optional] IWDFObject *pParentObject,
  [out]          IWDFMemory **ppWdfMemory
);

パラメーター

[in] BufferSize

新しく作成された WDF メモリ オブジェクトのデータ バッファーのデータの 0 以外の指定サイズ (バイト単位)。

[in, optional] pCallbackInterface

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

[in, optional] pParentObject

作成されたメモリ オブジェクトの親オブジェクトの IWDFObject インターフェイスへのポインター。 NULL の場合、ドライバー オブジェクトは既定の親になります。

[out] ppWdfMemory

新しく作成された WDF メモリ オブジェクトの IWDFMemory インターフェイスへのポインターを受け取るバッファーへのポインター。

戻り値

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

注釈

CreateWdfMemory メソッドは、BufferSize パラメーターが指定したサイズのバッファーを割り当て、バッファーを表すフレームワーク メモリ オブジェクトを作成します。

pParentObject パラメーターに NULL が指定されている場合、ドライバー オブジェクトは、新しく作成されたメモリ オブジェクトの既定の親オブジェクトになります。 UMDF ドライバーは、ドライバーが特定のデバイス オブジェクト、要求オブジェクト、またはその他のフレームワーク オブジェクトで使用するメモリ オブジェクトを作成する場合、ドライバーはメモリ オブジェクトの親オブジェクトを適切に設定する必要があります。 親オブジェクトが削除されると、メモリ オブジェクトとそのバッファーが削除されます。

UMDF ドライバーは、 IWDFObject::D eleteWdfObject を呼び出すことによって、メモリ オブジェクトとそのバッファーを削除することもできます。

UMDF ドライバーは、指定されたサイズ バッファーが 0 のメモリ オブジェクトを作成できません。 ドライバーが 0 で指定されたサイズ バッファーを使用する必要がある場合、ドライバーは代わりに NULL メモリ オブジェクトを使用する必要があります。 たとえば、ドライバーが読み取り要求で 0 で指定されたサイズ バッファーを使用する必要がある場合、ドライバーは IWDFIoTarget::FormatRequestForRead メソッドの呼び出しで pOutputMemory パラメーターに NULL を渡す必要があります。

次のコード例は、USB エンドポイントから読み取られた情報を保持できるメモリ オブジェクトを作成する方法を示しています。

HRESULT
CUmdfHidDevice::PrepareReader(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;
    CComPtr<IWDFDriver> wdfDriver;
    CComPtr<IWDFIoRequest> wdfRequest;

    HRESULT hr;

    GetWdfDevice(&wdfDevice);
    wdfDevice->GetDriver(&wdfDriver);

    // Open the interrupt pipe.
    hr = m_HidInterface->RetrieveUsbPipeObject(
                         USB_HID_INTERRUPT_PIPE_INDEX,
                         &m_InterruptPipe
                         );

    // Allocate a memory object to hold information that 
    // is read from the interrupt pipe. 
    // This memory object will be reused.
    if (SUCCEEDED(hr))
    {
        hr = wdfDriver->CreateWdfMemory(m_ReadBufferSize,
                                        NULL,
                                        wdfDevice,
                                        &m_ReadMemory);
    }

    return hr;
}

要件

要件
サポート終了 UMDF 2.0 以降では使用できません。
対象プラットフォーム デスクトップ
最小 UMDF バージョン 1.5
Header wudfddi.h (Wudfddi.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFIoTarget::FormatRequestForRead

IWDFMemory

IWDFObject

IWDFObject::D eleteWdfObject