return (UInt32x32To64(TickCount.LowPart, SharedUserData->TickCountMultiplier) >> 24) +
(UInt32x32To64(TickCount.HighPart, SharedUserData->TickCountMultiplier) << 8);
}
+
+/*
+ Vista+ MUI support functions
+
+ References:
+ Evolution of MUI Support across Windows Versions: http://msdn.microsoft.com/en-US/library/ee264317.aspx
+ Comparing Windows XP Professional Multilingual Options: http://technet.microsoft.com/en-us/library/bb457045.aspx
+
+ More info:
+ http://msdn.microsoft.com/en-us/goglobal/bb978454.aspx
+ http://msdn.microsoft.com/en-us/library/dd319074.aspx
+*/
+
+/* FUNCTIONS *****************************************************************/
+
+BOOL
+WINAPI
+GetFileMUIInfo(
+ DWORD dwFlags,
+ PCWSTR pcwszFilePath,
+ PFILEMUIINFO pFileMUIInfo,
+ DWORD *pcbFileMUIInfo)
+{
+ DPRINT1("%x %p %p %p\n", dwFlags, pcwszFilePath, pFileMUIInfo, pcbFileMUIInfo);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+GetFileMUIPath(
+ DWORD dwFlags,
+ PCWSTR pcwszFilePath,
+ PWSTR pwszLanguage,
+ PULONG pcchLanguage,
+ PWSTR pwszFileMUIPath,
+ PULONG pcchFileMUIPath,
+ PULONGLONG pululEnumerator)
+{
+ DPRINT1("%x %p %p %p %p %p\n", dwFlags, pcwszFilePath, pwszLanguage, pwszFileMUIPath, pcchFileMUIPath, pululEnumerator);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+GetProcessPreferredUILanguages(
+ DWORD dwFlags,
+ PULONG pulNumLanguages,
+ PZZWSTR pwszLanguagesBuffer,
+ PULONG pcchLanguagesBuffer)
+{
+ DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+* @unimplemented
+*/
+BOOL
+WINAPI
+GetSystemPreferredUILanguages(
+ DWORD dwFlags,
+ PULONG pulNumLanguages,
+ PZZWSTR pwszLanguagesBuffer,
+ PULONG pcchLanguagesBuffer)
+{
+ DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+GetThreadPreferredUILanguages(
+ DWORD dwFlags,
+ PULONG pulNumLanguages,
+ PZZWSTR pwszLanguagesBuffer,
+ PULONG pcchLanguagesBuffer)
+{
+ DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+LANGID
+WINAPI
+GetThreadUILanguage(VOID)
+{
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+GetUILanguageInfo(
+ DWORD dwFlags,
+ PCZZWSTR pwmszLanguage,
+ PZZWSTR pwszFallbackLanguages,
+ PDWORD pcchFallbackLanguages,
+ PDWORD pdwAttributes)
+{
+ DPRINT1("%x %p %p %p %p\n", dwFlags, pwmszLanguage, pwszFallbackLanguages, pcchFallbackLanguages, pdwAttributes);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+GetUserPreferredUILanguages(
+ DWORD dwFlags,
+ PULONG pulNumLanguages,
+ PZZWSTR pwszLanguagesBuffer,
+ PULONG pcchLanguagesBuffer)
+{
+ DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+SetProcessPreferredUILanguages(
+ DWORD dwFlags,
+ PCZZWSTR pwszLanguagesBuffer,
+ PULONG pulNumLanguages)
+{
+ DPRINT1("%x %p %p\n", dwFlags, pwszLanguagesBuffer, pulNumLanguages);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+SetThreadPreferredUILanguages(
+ DWORD dwFlags,
+ PCZZWSTR pwszLanguagesBuffer,
+ PULONG pulNumLanguages
+ )
+{
+ DPRINT1("%x %p %p\n", dwFlags, pwszLanguagesBuffer, pulNumLanguages);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+