次の方法で共有


IDirectInputDevice8::Acquire メソッド

IDirectInputDevice8::Acquire メソッド

入力デバイスへのアクセス権を取得する。

構文

HRESULT Acquire(VOID);

戻り値

成功した場合は、DI_OK を返す。デバイスが取得済みの場合は、S_FALSE を返す。

失敗した場合は、次のいずれかのエラー値を返す。

DIERR_INVALIDPARAM 無効なパラメータが、戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。この値は、標準のコンポーネント オブジェクト モデル (COM) 戻り値である E_INVALIDARG に等しい。
DIERR_NOTINITIALIZED このオブジェクトは初期化されていない。
DIERR_OTHERAPPHASPRIO 他のアプリケーションの優先レベルの方が高いので、この呼び出しを実行できない。この値は、標準の COM 戻り値である E_ACCESSDENIED に等しい。このエラーが返されるのは、デバイスに対するアプリケーションのアクセス権がフォアグラウンド アクセス権であるにもかかわらず、バックグラウンドであるときにデバイスを取得しようとした場合である。

注意

デバイス取得の前に IDirectInputDevice8::SetDataFormat メソッドや IDirectInputDevice8::SetActionMap メソッドを使って、データ形式を設定しなければならない。データ形式が設定されていない場合、IDirectInputDevice8::AcquireDIERR_INVALIDPARAM を返す。

デバイスに対して IDirectInputDevice8::GetDeviceState または IDirectInputDevice8::GetDeviceData メソッドを呼び出す前に、そのデバイスを取得しておかなければならない。

デバイス取得では、参照カウントを使わない。このため、アプリケーションが IDirectInputDevice8::Acquire メソッドを 2 回呼び出し、その後 IDirectInputDevice8::Unacquire メソッドを 1 回呼び出すと、デバイスは解放される。

IDirectInputDevice8::BuildActionMap が成功しても、いずれのアクションもマップされない場合、その後 IDirectInputDevice8::SetActionMap を呼び出すと DI_OK が返されるが、IDirectInputDevice8::Acquire を呼び出すと失敗し、DIERR_INVALIDPARAM が返される。