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 |