Microsoft DirectX 8.0 (C++)

IDirectInputDevice8::SendDeviceData

出力を受け付けるデバイスにデータを送信する。デバイスは、取得済みの状態でなければならない。

HRESULT SendDeviceData(
  DWORD cbObjectData, 
  LPCDIDEVICEOBJECTDATA rgdod, 
  LPDWORD pdwInOut, 
  DWORD fl  
);

パラメータ

cbObjectData
単一の DIDEVICEOBJECTDATA 構造体のサイズ (バイト単位)。
rgdod
デバイスに送信するデータを格納した DIDEVICEOBJECTDATA 構造体の配列。これは、*pdwInOut 要素で構成されていなければならない。

DIDEVICEOBJECTDATA 構造体 の dwOfs フィールドには、データの送信先となるデバイス オブジェクトの識別子が含まれなければならない。この識別子は、DIDEVICEOBJECTINSTANCE 構造体 の dwType フィールドから取得される。dwTimeStamp および dwSequence メンバは、ゼロでなければならない。

pdwInOut
呼び出し時は、このパラメータが指す変数には、rgdod が指す配列の要素数が含まれる。終了時は、デバイスに送信された要素数が含まれる。
fl
データの送信方法を制御するフラグ。ゼロまたは次の値を取ることができる。
DISDD_CONTINUE
送信されるデバイス データは、以前に送信されたデバイス データに上書きされる。「注意」を参照すること。

戻り値

成功した場合は、DI_OK を返す。

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

DIERR_INPUTLOST
DIERR_NOTACQUIRED
DIERR_REPORTFULL
DIERR_UNPLUGGED

注意

個別のデータ要素が特定の順序で送信されるという保証はない。しかし、IDirectInputDevice8::SendDeviceData の呼び出しが成功した場合、送信されたデータの間に別のデータが紛れ込むことはない。また、複数のデータが 1 回の呼び出しで同じオブジェクトに送信される場合、どのデータが送信されるかは特定されない。

たとえば、データをパケット単位で送信できるデバイスがあり、各パケットは、A および B という 2 つの情報を表すとする。ここで、アプリケーションが 3 つのデータ要素 (B = 2、A = 1、B =0) を送信しようとするとどうなるだろうか。

実際のデバイスに送信されるパケットは 1 つである。パケットの A フィールドの値は 1、そしてパケットの B フィールドの値は 2 か 0 になる。

データを指定どおりにデバイスに送信する必要がある場合は、IDirectInputDevice8::SendDeviceData を 3 回呼び出し、呼び出しごとにデータ要素を 1 つずつ送信しなければならない。

最初の呼び出しに応答して、A フィールドがブランク、B フィールドの値が 2 のパケットをデバイスに送信する。

2 回目の呼び出しでは、A フィールドの値が 1、B フィールドがブランクのパケットを送信する。

最後の 3 回目の呼び出しで、A フィールドがブランク、B フィールドの値が 0 のパケットを送信する。

DISDD_CONTINUE フラグが設定されている場合、送信されたデバイス データは以前に送信されたデバイス データに上書きされる。それ以外の場合、送信されるデバイス データは、以前に送信されたデバイス データを含まない。

たとえば、Button0 および Button1 の 2 つのボタン出力をサポートするデバイスがあるとする。アプリケーションが最初に IDirectInputDevice8::SendDeviceData を呼び出して "Button0 押下" を渡すと、デバイスには、"Button0 押下、Button1 未押下" という形式のパケットが送信される。次に、アプリケーションがもう一度 SendDeviceData を呼び出して "Button1 押下" と DISDD_CONTINUE フラグを渡すと、デバイスには、"Button0 押下、Button1 押下" という形式のパケットが送信される。しかし、アプリケーションが DISDD_CONTINUE フラグを渡さなかった場合、デバイスに送信されるパケットは、"Button0 未押下 , Button1 押下" となる。

動作環境

  Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
  Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
  ヘッダー : dinput.h で宣言。