void EnumDualShock3s()

in Lilypad/DualShock3.cpp [254:295]


void EnumDualShock3s()
{
	wchar_t		 name[30];
	XINPUT_STATE state;
	SCP_EXTN	 extn;

	if (!pXInputSetState)
	{
		if (pXInputGetExtended) return;

		HMODULE hMod = 0;

		if (hMod = LoadLibraryW(L"XInput1_3.dll"))
		{
			if ((pXInputEnable = (_XInputEnable)GetProcAddress(hMod, "XInputEnable"))
				&& (pXInputGetState = (_XInputGetState)GetProcAddress(hMod, "XInputGetState"))
				&& (pXInputSetState = (_XInputSetState)GetProcAddress(hMod, "XInputSetState")))
			{
				pXInputGetExtended = (_XInputGetExtended)GetProcAddress(hMod, "XInputGetExtended");
			}
		}

		if (!pXInputGetExtended)
		{
			pXInputGetExtended = (_XInputGetExtended)-1;
			return;
		}
	}

	pXInputEnable(1);

	for (int index = 0; index < 4; index++)
	{
		if (pXInputGetState(index, &state) == ERROR_SUCCESS && pXInputGetExtended(index, &extn) == ERROR_SUCCESS)
		{
			wsprintfW(name, L"DualShock 3 #%i", index + 1);
			dm->AddDevice(new DualShock3Device(index, name));
		}
	}

	pXInputEnable(0);
}