DIDEVICEOBJECTDATA 構造体

DIDEVICEOBJECTDATA 構造体

バッファリング デバイスの情報を格納する。この構造体は、IDirectInputDevice8::GetDeviceData および IDirectInputDevice8::SendDeviceData メソッドで使う。

構文

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

メンバ

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

    アクション マップを使用中の場合、このメンバを無視できる。その代わりに、uAppData からアクション値を取得する。

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

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

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

    ボタンからの入力の場合、dwData の下位バイトだけが有意である。下位バイトの上位ビットは、ボタンが押されたときに設定され、離されたときに消去される。

  • dwTimeStamp
    入力イベントが生成されたミリ秒単位のシステム時間。この値は、約 50 日で循環する。「注意」を参照すること。

    IDirectInputDevice8::SendDeviceData メソッドと共に構造体を使う場合、このメンバはゼロでなくてはならない。

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

    IDirectInputDevice8::SendDeviceData メソッドと共に構造体を使う場合、このメンバはゼロでなくてはならない。

  • uAppData
    前回の IDirectInputDevice8::SetActionMap の呼び出しで、このオブジェクトに割り当てられたアプリケーション定義のアクション値。これは、オブジェクトに関連付けられた DIACTION 構造体の uAppData メンバの値である。アクション マップを使っていない場合はこの値を無視する。

    IDirectInputDevice8::SendDeviceData メソッドと共に構造体を使う場合、このメンバはゼロでなくてはならない。

注意

dwTimeStamp が返すシステム時間は、Microsoft Win32® の GetTickCount または timeGetTime 関数が使うのと同じクロックからのものであるが、より精密な値を表す可能性がある。たとえば、Microsoft Windows® 95 の場合、GetTickCount タイマの更新間隔は 55 ミリ秒であるが、dwTimeStamp の値の誤差は 1 ミリ秒以内である。このため、GetTickCount を呼び出して n という値が返され、n + n1 というタイムスタンプを持つイベントを受け取る場合、そのイベントが GetTickCount を呼び出してから厳密に n1 ミリ秒後に発生したと仮定することはできない。

構造体の情報

ヘッダー dinput.h
最低限のオペレーティング システム Windows 98