Platform SDK: DirectX

DIDEVICEOBJECTDATA

DIDEVICEOBJECTDATA 構造体は、バッファリング デバイスの未加工の情報を格納する。この構造体は、IDirectInputDevice7::GetDeviceData および IDirectInputDevice7::SendDeviceData メソッドで使用される。

typedef struct DIDEVICEOBJECTDATA { 
    DWORD dwOfs; 
    DWORD dwData; 
    DWORD dwTimeStamp; 
    DWORD dwSequence; 
} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; 
 
typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;

メンバ

dwOfs
GetDeviceData の場合、データの報告対象となっているオブジェクトの、現在のデータ形式に対するオフセット値。すなわち、IDirectInputDevice7::GetDeviceState メソッドの呼び出しによってデータが取得された場合、その dwData が格納されている位置となる。デバイスがマウス、キーボード、またはジョイスティックとしてアクセスされる場合に、この dwOfs メンバは、マウス デバイス定数キーボード デバイス定数、またはジョイスティック デバイス定数のいずれかになる。カスタム データ形式が設定されている場合は、カスタム データ形式に関連するオフセットになる。

SendDeviceData の場合、データの送信先であるオブジェクトのインスタンス ID。これは DIDEVICEOBJECTINSTANCE 構造体の dwType メンバから取得される。

dwData
デバイスから取得またはデバイスに送信されるデータ。

軸からの入力の場合、デバイスが相対軸モードにあれば、相対軸の動きが報告される。デバイスが絶対軸モードにあれば、絶対座標が報告される。

ボタンからの入力の場合、dwData の下位バイトだけが有意である。下位バイトの上位ビットは、ボタンがダウン状態の場合に設定され、アップ状態の場合に消去される。

dwTimeStamp
入力イベントが生成されたミリ秒単位の時間カウント。現在のシステム時間カウント (低分解能) は、Win32 GetTickCount 関数を呼び出して取得できる。なお、この値は、約 50 日で循環する。

構造体が SendDeviceData メソッドと共に使用される場合、このメンバは必ずゼロになる。

dwSequence
このイベントに対する DirectInput シーケンス番号。すべての入力イベントには、昇順のシーケンス番号が割り当てられている。これにより、異なるデバイスからのイベントを時間順にソートすることが可能になる。この値は、循環して初期値に戻るので、2 つのシーケンス番号を比較する場合には注意しなければならない。この比較を安全に行うには、DISEQUENCE_COMPARE マクロを使用すればよい。

構造体が SendDeviceData メソッドと共に使用される場合、このメンバは必ずゼロになる。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dinput.h で宣言。