Platform SDK: DirectX

IDirectInput7::CreateDevice

IDirectInput7::CreateDevice メソッドは、指定の GUID に基づきデバイスのインスタンスを作成して初期化し、IDirectInputDevice インターフェイスを取得する。これは、IDirectInput7::CreateDeviceEx に取って代わるメソッドである。

HRESULT CreateDevice(
  REFGUID rguid,                               
  LPDIRECTINPUTDEVICE *lplpDirectInputDevice,  
  LPUNKNOWN pUnkOuter                          
);

パラメータ

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

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

lplpDirectInputDevice
成功時に IDirectInputDevice インターフェイスのポインタを取得する変数のアドレス。
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);

punkOuter = NULL を指定してこのメソッドを呼び出すことは、CoCreateInstance(&CLSID_DirectInputDevice, NULL, CLSCTX_INPROC_SERVER, riid, lplpDirectInputDevice) を使用してオブジェクトを作成した後、Initialize を使用して初期化することと同等である。

punkOuter != NULL を指定してこのメソッドを呼び出すことは、CoCreateInstance(&CLSID_DirectInputDevice, punkOuter, CLSCTX_INPROC_SERVER, &IID_IUnknown, lplpDirectInputDevice) を使用してオブジェクトを作成することと同等である。集合化したオブジェクトは手動で初期化しなければならない。

動作環境

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