Platform SDK: DirectX |
IDirectInput7::CreateDevice メソッドは、指定の GUID に基づきデバイスのインスタンスを作成して初期化し、IDirectInputDevice インターフェイスを取得する。これは、IDirectInput7::CreateDeviceEx に取って代わるメソッドである。
HRESULT CreateDevice( REFGUID rguid, LPDIRECTINPUTDEVICE *lplpDirectInputDevice, LPUNKNOWN pUnkOuter );
この GUID 値を有効にするには、アプリケーションは、ソース ファイルの先頭で、ほかのすべてのプリプロセッサ ディレクティブに先立ち、INITGUID を定義するか、あるいは DXGUID.LIB にリンクしなければならない。
成功すれば 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 を使用。