static HRESULT WINAPI SysKeyboardAImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface, LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) { SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; WCHAR *lpszUserNameW = NULL; int username_size; diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf); if (lpszUserName != NULL) { username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); } hr = SysKeyboardWImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); HeapFree(GetProcessHeap(), 0, lpszUserNameW); return hr; }
HRESULT WINAPI JoystickAGenericImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface, LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) { JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf); hr = JoystickWGenericImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); return hr; }
static HRESULT WINAPI SysKeyboardAImpl_BuildActionMap(LPDIRECTINPUTDEVICE8A iface, LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) { SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf); hr = SysKeyboardWImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); _copy_diactionformatWtoA(lpdiaf, &diafW); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); return hr; }