次の方法で共有


IDirectInputDevice8::GetProperty

入力デバイスに関する情報を取得します。

HRESULT 
GetProperty(
  REFGUID rguidProp,
  LPDIPROPHEADER pdiph
);

パラメータ

  • rguidProp
    取得するプロパティを示すグローバル一意識別子 (GUID) への参照 (C++) またはアドレス (C)。これは、定義済みの値のいずれか、またはプロパティを示す GUID へのポインターです。入力デバイスに対しては次のプロパティが定義済みです。
    • DIPROP_APPDATA
      ゲーム中のアクションに関連したアプリケーション定義の値を、DIPROPPOINTER として取得します。

    • DIPROP_AUTOCENTER
      デバイス オブジェクトが自動センタリングを行うかどうかを示します。返される値は、DIPROPAUTOCENTER_OFF または DIPROPAUTOCENTER_ON のどちらかです。詳細については、「IDirectInputDevice8::SetProperty」を参照してください。

    • DIPROP_AXISMODE
      軸モードを取得します。取得できる値は、DIPROPAXISMODE_ABS または DIPROPAXISMODE_REL のどちらかです。

    • DIPROP_BUFFERSIZE
      入力バッファー サイズを取得します。バッファー サイズは、IDirectInputDevice8::GetDeviceData メソッドの呼び出しから次の呼び出しまでの間、データが失われる前にバッファーに保持できるデータの量を決定します。この値を 0 に設定すると、デバイスからバッファー データを読み取らないようにアプリケーションに指示できます。DIPROPDWORD 構造体の dwData メンバーに指定されているバッファー サイズが大きすぎて、デバイスがそのサイズをサポートしない場合は、可能な限り最大のバッファー サイズが設定されます。ただし、バッファーが大きすぎてサポートされない場合であっても、このプロパティには IDirectInputDevice8::SetProperty メソッドを使用して設定されたバッファー サイズが常に返されます。

    • DIPROP_CALIBRATION
      調整を必要とする軸を操作するために DirectInput が使用する情報にアプリケーションからアクセスするための定義済みプロパティ。このプロパティは主に、コントロール パネル型のアプリケーションのために用意されています。通常のアプリケーションは、調整情報を処理する必要はありません。

      特定の軸の調整モード プロパティにアクセスするには、DIPROPHEADER 構造体の dwHow メンバーを DIPH_BYID または DIPH_BYOFFSET に設定し、dwObj メンバーをオブジェクト ID またはオフセットにそれぞれ設定します。

      新しい調整データを設定するコントロール パネル アプリケーションは、さらに IDirectInputJoyConfig::SendNotify メソッドを呼び出して、調整に変更があったことを他のアプリケーションに通知する必要があります。IDirectInputJoyConfig::SendNotify について詳しくは、DirectInput Driver Development Kit (DDK) を参照してください。

    • DIPROP_CALIBRATIONMODE
      デバイス ドライバーに使用され、アプリケーションには使用されません。

    • DIPROP_CPOINTS
      このプロパティはサポートされません。入力生データの調整に使用される調整ポイントを、DIPROPCPOINTS 構造体として取得します。

    • DIPROP_DEADZONE
      ジョイスティックのデッド ゾーンの値を取得します。範囲は 0 から 10,000 で、0 はデッド ゾーンが存在しないことを示し、5,000 は中心の両側で軸の物理範囲の 50% にわたってデッド ゾーンが存在することを示し、10,000 は軸の物理範囲全体がデッド ゾーンであることを示します。軸がデッド ゾーン内にあるとき、その軸は範囲の中心にあるものとして報告されます。

    • DIPROP_FFGAIN
      デバイスのゲインを取得します。デバイスがフォース フィードバックをサポートしない場合であっても、このプロパティは常に DI_OK を返します。詳細については、「IDirectInputDevice8::SetProperty」を参照してください。

    • DIPROP_FFLOAD
      デバイスのメモリー負荷を取得します。この設定は特定のオブジェクトにではなくデバイス全体に適用されるので、関連した DIPROPDWORD 構造体の dwHow メンバーは DIPH_DEVICE であることが必要です。取得する値は 0 から 100 の範囲内にあり、使用中のデバイス メモリーの比率を示しています。デバイスは排他モードで獲得されている必要があります。そうでなければ、メソッドは戻り値 DIERR_NOTEXCLUSIVEACQUIRED を返して失敗します。

    • DIPROP_GETPORTDISPLAYNAME
      人間が判読できる、デバイスの接続先ポートの表示名を取得します。通常、アプリケーションには使用されません。

    • DIPROP_GRANULARITY
      入力の細分度を取得します。細分性は、オブジェクトが報告する動きの最小距離を表します。ほとんどの軸オブジェクトの細分性は 1 です。つまり、すべての値が報告可能です。軸によっては細分性がこれより大きいことがあります。たとえば、マウスのホイール軸の細分性が 20 の場合があります。この場合は、位置の変化がすべて 20 の倍数で報告されます。つまり、ユーザーがホイールをゆっくり回したとき、デバイスは位置を 0、20、40 の順に報告します。これは読み取り専用プロパティです。

    • DIPROP_GUIDANDPATH
      デバイスのクラス GUID とデバイス インターフェイス (パス) を取得します。このプロパティを使用すれば、高度なアプリケーションで、DirectInput によってサポートされないヒューマン インターフェイス デバイスに対して操作を実行できます。詳細については、DIPROPGUIDANDPATH 構造体を参照してください。

    • DIPROP_INSTANCENAME
      デバイスのわかりやすいインスタンス名を取得します。詳細については、「IDirectInputDevice8::SetProperty」を参照してください。

    • DIPROP_JOYSTICKID
      ジョイスティックのインスタンス番号を取得します。このプロパティは、マウスまたはキーボード用には実装されていません。

    • DIPROP_KEYNAME
      キーボード キーのローカライズされたキー名を、DIPROPSTRING として取得します。キーボード以外のデバイスに対してこのプロパティを使用すると、予期しない名前が返されます。

    • DIPROP_LOGICALRANGE
      ヒューマン インターフェイス デバイスの軸に対して返される生データの範囲を取得します。デバイスは負の値を返すことがあります。

    • DIPROP_PHYSICALRANGE
      ヒューマン インターフェイス デバイスの製造元が推奨する、軸のデータの範囲を取得します。値は負になることがあります。通常、DirectInput は 0 から 0xFFFF の値を返しますが、DIPROP_RANGE を使用することにより、その範囲を製造元の推奨する範囲に準拠させることができます。

    • DIPROP_PRODUCTNAME
      デバイスのわかりやすい製品名を取得します。詳細については、「IDirectInputDevice8::SetProperty」を参照してください。

    • DIPROP_RANGE
      オブジェクトが報告可能な値の範囲を取得します。一部のデバイスでは、これは読み取り専用プロパティです。

    • DIPROP_SATURATION
      0 から 10,000 の範囲で、ジョイスティックの飽和ゾーンの値を取得します。飽和レベルは、軸が一番端の位置にあると見なされるポイントです。たとえば、飽和レベルが 9,500 に設定されていると、中心の位置 (またはデッド ゾーン) から物理距離の 95% まで軸が動かされたときに、軸は範囲の端に達します。

    • DIPROP_SCANCODE
      キーボード キーのスキャン コードを、DIPROPDWORD として取得します。正常に実行されると、S_OK が返されます。USB キーボードの特殊キーがスキャン コード フォームに存在しないためにその特殊キーをこのプロパティで解決できない場合は、E_FAIL が返されます。その他すべての障害の場合は、E_INVALIDARG が返されます。

    • DIPROP_TYPENAME
      デバイスの種類名を取得する定義済みプロパティ。ほとんどのゲーム コントローラーでは、これは静的デバイス設定の取得先である REGSTR_PATH_JOYOEM の下のレジストリ キー名です。ただし、定義済みジョイスティックの種類名は、番号記号 (&Sharp;) とそれに続く種類固有の文字からなる特殊な名前です。この値は、デバイスによっては取得できない場合があります。

    • DIPROP_USERNAME
      デバイスに現在割り当てられているユーザーのユーザー名を、DIPROPSTRING として取得します。ユーザー名は、IDirectInputDevice8::SetActionMap を呼び出すことで設定されます。ユーザー名が設定されていない場合、メソッドは S_FALSE を返します。

    • DIPROP_VIDPID
      HID デバイスのベンダー識別 (ID) と製品 ID を取得する、読み取り専用のデバイス プロパティ。このプロパティは DIPROPDWORD 型で、両方の値を含みます。これら 2 つの WORD 値が、DIPROPDWORD 構造体の dwData メンバー内で結合されています。「例」を参照してください。このプロパティは特定のオブジェクトにではなくデバイス全体に適用されるので、DIPROPHEADER 構造体の dwHow メンバーは DIPH_DEVICE に設定する必要があります。

  • pdiph
    DIPROPHEADER 構造体をメンバーとして含む、より大きなプロパティ従属構造体の DIPROPHEADER 部分のアドレス。次の構造体がプロパティのために使用されます。
    • DIPROPDWORD は、単一の数値によって表現されるプロパティに使用されます。
    • DIPROPGUIDANDPATH は、DIPROP_GUIDANDPATH に使用されます。
    • DIPROPRANGE は、数値の対によって表現されるプロパティに使用されます。現時点では、該当するプロパティは DIPROP_RANGE のみです。
    • DIPROPSTRING は、文字列プロパティに使用されます。

戻り値

メソッドが正常に実行された場合、戻り値は DI_OK または S_FALSE です。メソッドが失敗した場合、戻り値は次のいずれかのエラー値です。DIERR_INVALIDPARAM、DIERR_NOTEXCLUSIVEACQUIRED、DIERR_NOTINITIALIZED、DIERR_OBJECTNOTFOUND、DIERR_UNSUPPORTED

解説 

rguidProp が DIPROP_APPDATA に設定されている場合は、ボタンや軸などの入力コントロールの情報を取得するときにのみ、DIPROPHEADER 構造体の dwHow メンバーを DIPH_BYUSAGE に設定する必要があります。物理インターフェイス デバイス (PID) や LED デバイスなど、他のデバイス オブジェクトに対して DIPH_BYUSAGE を設定すると、予期しない結果になる可能性があります。

rguidProp を DIPROP_GETPORTDISPLAYNAME に設定して IDirectInputDevice8::GetProperty を呼び出すと、メソッドが正常に実行された場合であっても、常に S_FALSE が返されます。

Microsoft DirectX 8.1 で報告されるスキャン コードは、DirectX 8.0 で報告されるものとは異なります。DirectX 8.0 では、スキャン コードではなく、キーに関連した 1 バイトの DIK_* 定数がプロパティで実際には報告されていました。 DirectX 8.1 以降のリリースでは、PS/2 キーボードから報告される場合と同じようにメイク スキャン コードがプロパティで報告されます。スキャン コードは複数バイトからなる場合があります。この場合、スキャン コードの各バイトは、プロパティから取得した DWORD の最下位バイトに先頭バイトが入るように配列されます。

次の C の例では、DIPROP_BUFFERSIZE プロパティの値を取得する方法を示します。

DIPROPDWORD dipdw;  // DIPROPDWORD contains a DIPROPHEADER structure. 
HRESULT hr; 
dipdw.diph.dwSize       = sizeof(DIPROPDWORD); 
dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
dipdw.diph.dwObj        = 0; // device property 
dipdw.diph.dwHow        = DIPH_DEVICE; 

hr = idirectinputdevice9_GetProperty(pdid, DIPROP_BUFFERSIZE, &dipdw.diph); 
if (SUCCEEDED(hr)) { 
    // The dipdw.dwData member contains the buffer size. 
} 

次の例では、DIPROP_VIDPID プロパティを使用して、DIPROPDWORD 構造体の dwData メンバーから 2 つの WORD 値を抽出する方法を示します。

wVendorID  = LOWORD(DIPROPDWORD.dwData);
wProductID = HIWORD(DIPROPDWORD.dwData);

要件

ヘッダー: Dinput.h 宣言

関連項目

IDirectInputDevice8::SetProperty