Sign in to follow this  
Ro_Akira

dinput8d.dll and Vista

Recommended Posts

I'm running Windows Vista Business (not by choice), and I found that the DirectX Control Panel has the DirectInput tab disabled (all of the controls on it are greyed out). I found out from this DirectX FAQ that sometimes it is a problem caused by an incompatible runtime and SDK. I installed the June 2007 SDK, and I've looked into the "Developer Runtime" directory from the setup extraction directory, only to find a version of dinput8d.dll in the Win2k and WinXP subdirectories, but none in the Vista subdirectory. Has anyone else come across this, and is there an explanation behind it? I've tried search engines on this matter and they've not been too much help. Oh, and MSDN too. I tried copying the dinput8d.dll from the WinXP directory into Windows\System32, but it seemed to fail internally with an assertion.

Share this post


Link to post
Share on other sites
Okay, new information. Now that I have access to a Windows 2000 machine, I enabled the debug runtime there - and I met the same assertion that I had with Vista. So I presume it's somewhat valid. Here's the details of the assertion via Visual C++ 2005 Express:


BOOL CALLBACK DirectInput81::EnumJoysticksCallback (const DIDEVICEINSTANCE* pdidInstance, VOID* pContext)
{
DirectInput81* const current (DirectInput81::current);

if (!current)
return DIENUM_STOP;

HRESULT ret;
DirectInput81::JoystickInterface& new_joystick (DirectInput81::new_joystick);
new_joystick.Reset ();

// Obtain an interface to the enumerated joystick
ret = current->di->CreateDevice (pdidInstance->guidInstance, &new_joystick.device, NULL);

if (ret != DI_OK || new_joystick.device == NULL)
{
current->logger << "Error: CreateDevice() failed with " << ret << endl;
return DIENUM_STOP;
}

if (FAILED (ret))
return DIENUM_CONTINUE;

// Set the joystick format
ret = new_joystick.device->SetDataFormat (&c_dfDIJoystick2);

if (ret != DI_OK)
{
new_joystick.device->Release ();
new_joystick.device = 0;
current->logger << "Error: SetDataFormat() failed with " << ret << endl;
return DIENUM_STOP;
}

// Set the cooperative level - DEBUGGER STOPS AT THIS LINE
ret = new_joystick.device->SetCooperativeLevel (current->window, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
.
.
.

// In the output window
DINPUT8: Assertion failed: `pHeader' at d:\builds\nt32_chk\multimedia\directx\dinput\dx8\dll\disubcls.c(595)
TestJoystick.exe has triggered a breakpoint


Has anyone else met this assertion before?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this