DirectX8にでDirectInputを使用しようと思っているのですが、
原因が良く分からない部分でエラーとなってしまいます。

LPDIRECTINPUT8 pDInput;
LPDIRECTINPUTDEVICE8 pKeyboard;

HRESULT hr;

hr = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&pDInput, NULL);
if(FAILED(hr)) return false;

hr = pDInput->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);
if(FAILED(hr)) return false;

hr = pKeyboard->SetDataFormat(&c_dfDIKeyboard);
if(FAILED(hr)) return false; // ここでreturn false

このようにしてDirectInputを設定したのですが必ず最後の
SetDataFormat(&c_dfDIKeyboard)で失敗してしまいます。
普通に使用できているキーボードを使用しているのですが、
この場合どのような原因が考えられるのでしょうか?
どうかよろしくお願いします。