IDirectInputDevice7::GetProperty
IDirectInputDevice7::GetProperty メソッドは、入力デバイスについての情報を取得する。
HRESULT GetProperty(
REFGUID rguidProp,
LPDIPROPHEADER pdiph
);
パラメータ
- rguidProp
- 取得するプロパティの識別子。この識別子として、事前定義された値の 1 つ、またはプロパティを識別する GUID へのポインタを使用できる。入力デバイスに対しては、次のプロパティが事前定義されている。
- DIPROP_AUTOCENTER
- デバイス オブジェクトが自動センタリングを行うかどうかを指定する。詳細については、「IDirectInputDevice7::SetProperty」を参照すること。
- DIPROP_AXISMODE
- 軸モードを取得する。取得値 (DIPROPAXISMODE_ABS または DIPROPAXISMODE_REL) は、割り当てられた DIPROPDWORD 構造体の dwData メンバに設定される。詳細は、pdiph パラメータの説明を参照すること。
- DIPROP_BUFFERSIZE
- 入力バッファ サイズを取得する。取得値は、割り当てられた DIPROPDWORD 構造体の dwData メンバに設定される。詳細は、pdiph パラメータの説明を参照すること。
バッファ サイズは、IDirectInputDevice7::GetDeviceData メソッドの前回と今回の呼び出しの間で、バッファがデータを失うことなく保持できるデータの量を決定する。この値にゼロを設定して、アプリケーションがデバイスからバッファリング データを読み込まないように指定することもできる。DIPROPDWORD 構造体の dwData メンバ中のバッファ サイズが大きすぎてデバイスがサポートできなければ、サポート可能な最大バッファ サイズが設定される。要求したバッファ サイズが設定されたかどうかを確認するには、バッファ サイズ プロパティを取得して、設定しようとした値とその結果を比較する。
- DIPROP_DEADZONE
- 0 〜 10,000 の範囲でジョイスティックの無効ゾーンの値を取得する。ここで、0 は無効ゾーンが存在しないこと、5,000 は無効ゾーンが軸を中心とした物理範囲の 50 パーセントにまで広がっていること、および 10,000 は軸の物理範囲の全体が無効であることをそれぞれ示す。軸が無効ゾーン内にあると、軸の範囲の中心にあるものと報告される。
- DIPROP_FFGAIN
- デバイスのゲインを取得する。詳細については、「IDirectInputDevice7::SetProperty」を参照すること。
- DIPROP_FFLOAD
- デバイスのメモリ ロードを取得する。この設定値は、個別のオブジェクトではなくデバイス全体に適用されるので、割り当てられた DIPROPDWORD 構造体の dwHow メンバは DIPH_DEVICE でなければならない。
dwData メンバは、0〜100 の範囲にある値を格納する。この値は、使用中のデバイス メモリのパーセント数を示す。
- DIPROP_GRANULARITY
- 入力の細分度を取得する。取得値は、割り当てられた DIPROPDWORD 構造体の dwData メンバに設定される。詳細は pdiph パラメータの説明を参照すること。
細分度は、オブジェクトが移動距離を報告する際の最小量を表す。多くの軸オブジェクトの細分度は 1 であり、あらゆる値を取ることができる。軸によっては、より大きな細分度を持つものもある。たとえば、マウスのホイール軸の細分度は 20 にすることもできる。報告される位置変化はすべて、20 の倍数となる。すなわち、ユーザーがホイールをゆっくり回転させると、デバイスは位置を 0、20、40 などと報告する。
これは読み取り専用プロパティである。IDirectInputDevice7::SetProperty メソッドを呼び出しても、値を設定することはできない。
- DIPROP_GUIDANDPATH
- アプリケーションは、デバイスのクラス GUID とデバイス インターフェイス (パス) にアクセスできる。詳細設定の可能なアプリケーションはこのプロパティを使うことで、DirectInput でサポートされていない HID に対して操作を実行できる。詳細については、DIPROPGUIDANDPATH 構造体のリファレンスを参照すること。
- DIPROP_INSTANCENAME
- デバイスのインスタンスの登録名を取得する。詳細については、「IDirectInputDevice7::SetProperty」を参照すること。
- DIPROP_PRODUCTNAME
- デバイスの製品の登録名を取得する。詳細については、「IDirectInputDevice7::SetProperty」を参照すること。
- DIPROP_RANGE
- オブジェクトが報告できる値の範囲を取得する。取得された最小値および最大値は、割り当てられた DIPROPRANGE 構造体の lMin および lMax メンバに設定される。詳細は pdiph パラメータの説明を参照すること。
一部のデバイスでは、これは読み取り専用プロパティである。IDirectInputDevice7::SetProperty メソッドを呼び出しても、値を設定することはできない。
- DIPROP_SATURATION
- 0 〜 10,000 の範囲でジョイスティックの飽和ゾーンの値を取得する。飽和レベルとは、軸が極限位置にあるとみなされる点のことである。たとえば、飽和レベルが 9,500 に設定されている場合、軸の中心 (無効ゾーン) から軸の端までの物理的距離の 95% の位置が軸の極限位置となる。
- pdiph
- メンバとして DIPROPHEADER 構造体を持つ大型プロパティ依存構造体の、DIPROPHEADER 部分のアドレス。オブジェクトの範囲情報の取得時には、この値は、DIPROPRANGE 構造体に含まれる DIPROPHEADER 構造体のアドレスとなる。ほかのプロパティの場合、この値は、DIPROPDWORD 構造体に含まれる DIPROPHEADER 構造体のアドレスとなる。
戻り値
成功すれば DI_OK を返す。
失敗すれば次のエラー値のいずれかを返す。
注意
以下の C コードの例は、DIPROP_BUFFERSIZE プロパティ値の取得方法を説明する。
DIPROPDWORD dipdw; // DIPROPDWORD は DIPROPHEADER 構造体を格納する。
HRESULT hr;
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
dipdw.diph.dwObj = 0; // デバイス プロパティ
dipdw.diph.dwHow = DIPH_DEVICE;
hr = IDirectInputDevice7_GetProperty(pdid, DIPROP_BUFFERSIZE, &dipdw.diph);
if (SUCCEEDED(hr)) {
// dipdw.dwData メンバはバッファ サイズを格納する。
}
Windows NT/2000 :Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dinput.h で宣言。
インポート ライブラリ : dinput.lib を使用。
参照
IDirectInputDevice7::SetProperty