Platform SDK: DirectX

IDirectInput7::CreateDeviceEx

IDirectInput7::CreateDeviceEx メソッドは、指定の GUID に基づきデバイスのインスタンスを作成して初期化し、IDirectInputDeviceIDirectInputDevice2、または IDirectInputDevice7 インターフェイスを取得する。

HRESULT CreateDeviceEx(
  REFGUID rguid,   
  REFIID riid,
  LPVOID *pvOut,  
  LPUNKNOWN pUnkOuter 
);

パラメータ

rguid
C++ の場合、目的の入力デバイスのインスタンス GUID に対する参照値。C の場合、この GUID のアドレス (「注意」を参照)。この GUID は、IDirectInput7::EnumDevices メソッドを介して取得するか、または、次の事前定義された GUID の 1 つを使用する。
GUID_SysKeyboard
デフォルトのシステム キーボード。
GUID_SysMouse
デフォルトのシステム マウス。

この GUID 値を有効にするには、アプリケーションは、ソース ファイルの先頭で、ほかのすべてのプリプロセッサ ディレクティブに先立ち、INITGUID を定義するか、あるいは DXGUID.LIB にリンクしなければならない。

riid
目的のインターフェイスの一意な識別子。現在受け付ける値は、IID_IDirectInputDevice、IID_IDirectInputDevice2、および IID_IDirectInputDevice7 である。
pvOut
成功時にインターフェイス ポインタを取得する変数のアドレス。
pUnkOuter
COM 集合化に対する制御オブジェクトの IUnknown インターフェイスのアドレス。インターフェイスが集合化されていない場合には NULL。普通、呼び出し側は NULL を渡す。

戻り値

成功すれば DI_OK を返す。

失敗すれば次の戻り値のいずれかを返す。

DIERR_DEVICENOTREG
DIERR_INVALIDPARAM
DIERR_NOINTERFACE
DIERR_NOTINITIALIZED
DIERR_OUTOFMEMORY

注意

C++ では、rguid パラメータは参照値として渡さなければならない。C では参照値として渡すことができないので、アドレスとして渡さなければならない。次は、C++ での呼び出し例である。

lpdi->CreateDevice(GUID_SysKeyboard, &pdev, NULL);

次は、C での同じ呼び出し例である。

lpdi->lpVtbl->CreateDevice(lpdi, &GUID_SysKeyboard, &pdev, NULL);

多くの場合、アプリケーションは、riid パラメータとして IID_IDirectInputDevice7 を渡し、IDirectInputDevice7 インターフェイスを取得することになる。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dinput.h で宣言。
  インポート ライブラリ : dinput.lib を使用。