Platform SDK: DirectX

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 を返す。

失敗すれば次のエラー値のいずれかを返す。

DIERR_INVALIDPARAM
DIERR_NOTINITIALIZED
DIERR_OBJECTNOTFOUND
DIERR_UNSUPPORTED

注意

以下の 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