Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

312 lines
9.1 KiB

  1. #include <stdlib.h>
  2. #include <stdarg.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include "Global.h"
  6. #include "Win32API.h"
  7. #include "AppMan.h"
  8. //////////////////////////////////////////////////////////////////////////////////////////////
  9. //
  10. // Global Variables
  11. //
  12. //////////////////////////////////////////////////////////////////////////////////////////////
  13. WCHAR gwszGlobalString[MAX_STRING_LEN];
  14. CHAR gszGlobalString[MAX_STRING_LEN];
  15. GUID gsCryptoGuid = { 0xb47c09c9, 0x1ace, 0x4bc3, 0xab, 0x45, 0x29, 0xa1, 0x80, 0x37, 0xa6, 0xf9 };
  16. //////////////////////////////////////////////////////////////////////////////////////////////
  17. //
  18. //////////////////////////////////////////////////////////////////////////////////////////////
  19. extern LPSTR MakeString(LPCSTR szFormat, ...)
  20. {
  21. va_list ArgumentList;
  22. if (NULL != szFormat)
  23. {
  24. va_start(ArgumentList, szFormat);
  25. _vsnprintf(gszGlobalString, 512, szFormat, ArgumentList);
  26. va_end(ArgumentList);
  27. }
  28. return gszGlobalString;
  29. }
  30. //////////////////////////////////////////////////////////////////////////////////////////////
  31. //
  32. //////////////////////////////////////////////////////////////////////////////////////////////
  33. extern DWORD GetAppManVersion(void)
  34. {
  35. return 1;
  36. }
  37. //////////////////////////////////////////////////////////////////////////////////////////////
  38. //
  39. //////////////////////////////////////////////////////////////////////////////////////////////
  40. extern BOOL StringToGuidW(LPCWSTR wszGuidString, GUID * lpGuid)
  41. {
  42. BOOL fSuccess = FALSE;
  43. if (11 == swscanf(wszGuidString, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", &lpGuid->Data1, &lpGuid->Data2, &lpGuid->Data3, &lpGuid->Data4[0], &lpGuid->Data4[1], &lpGuid->Data4[2], &lpGuid->Data4[3], &lpGuid->Data4[4], &lpGuid->Data4[5], &lpGuid->Data4[6], &lpGuid->Data4[7]))
  44. {
  45. fSuccess = TRUE;
  46. }
  47. return fSuccess;
  48. }
  49. //////////////////////////////////////////////////////////////////////////////////////////////
  50. //
  51. //////////////////////////////////////////////////////////////////////////////////////////////
  52. extern BOOL GuidToStringW(const GUID * lpGuid, LPWSTR wszGuidString)
  53. {
  54. BOOL fSuccess = FALSE;
  55. if (38 == swprintf(wszGuidString, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", lpGuid->Data1, lpGuid->Data2, lpGuid->Data3, lpGuid->Data4[0], lpGuid->Data4[1], lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]))
  56. {
  57. fSuccess = TRUE;
  58. }
  59. return fSuccess;
  60. }
  61. //////////////////////////////////////////////////////////////////////////////////////////////
  62. //
  63. //////////////////////////////////////////////////////////////////////////////////////////////
  64. extern BOOL StringToGuidA(LPCSTR szGuidString, GUID * lpGuid)
  65. {
  66. BOOL fSuccess = FALSE;
  67. DWORD dwDword[11];
  68. if (11 == sscanf(szGuidString, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", &dwDword[0], &dwDword[1], &dwDword[2], &dwDword[3], &dwDword[4], &dwDword[5], &dwDword[6], &dwDword[7], &dwDword[8], &dwDword[9], &dwDword[10]))
  69. {
  70. lpGuid->Data1 = dwDword[0];
  71. lpGuid->Data2 = (WORD) dwDword[1];
  72. lpGuid->Data3 = (WORD) dwDword[2];
  73. lpGuid->Data4[0] = (BYTE) dwDword[3];
  74. lpGuid->Data4[1] = (BYTE) dwDword[4];
  75. lpGuid->Data4[2] = (BYTE) dwDword[5];
  76. lpGuid->Data4[3] = (BYTE) dwDword[6];
  77. lpGuid->Data4[4] = (BYTE) dwDword[7];
  78. lpGuid->Data4[5] = (BYTE) dwDword[8];
  79. lpGuid->Data4[6] = (BYTE) dwDword[9];
  80. lpGuid->Data4[7] = (BYTE) dwDword[10];
  81. fSuccess = TRUE;
  82. }
  83. return fSuccess;
  84. }
  85. //////////////////////////////////////////////////////////////////////////////////////////////
  86. //
  87. //////////////////////////////////////////////////////////////////////////////////////////////
  88. extern BOOL GuidToStringA(const GUID * lpGuid, LPSTR szGuidString)
  89. {
  90. BOOL fSuccess = FALSE;
  91. if (38 == wsprintfA(szGuidString, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", lpGuid->Data1, lpGuid->Data2, lpGuid->Data3, lpGuid->Data4[0], lpGuid->Data4[1], lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]))
  92. {
  93. fSuccess = TRUE;
  94. }
  95. return fSuccess;
  96. }
  97. //////////////////////////////////////////////////////////////////////////////////////////////
  98. //
  99. //////////////////////////////////////////////////////////////////////////////////////////////
  100. extern void EncryptGuid(GUID * lpGuid)
  101. {
  102. DWORD dwIndex;
  103. BYTE * lpCryptoByte;
  104. BYTE * lpGuidByte;
  105. lpCryptoByte = (BYTE *) &gsCryptoGuid;
  106. lpGuidByte = (BYTE *) lpGuid;
  107. for (dwIndex = 0; dwIndex < sizeof(GUID); dwIndex++)
  108. {
  109. *(lpGuidByte + dwIndex) = (BYTE)(*(lpGuidByte + dwIndex) ^ *(lpCryptoByte + dwIndex));
  110. }
  111. }
  112. //////////////////////////////////////////////////////////////////////////////////////////////
  113. //
  114. //////////////////////////////////////////////////////////////////////////////////////////////
  115. extern void DecryptGuid(GUID * lpGuid)
  116. {
  117. DWORD dwIndex;
  118. BYTE * lpCryptoByte;
  119. BYTE * lpGuidByte;
  120. lpCryptoByte = (BYTE *) &gsCryptoGuid;
  121. lpGuidByte = (BYTE *) lpGuid;
  122. for (dwIndex = 0; dwIndex < sizeof(GUID); dwIndex++)
  123. {
  124. *(lpGuidByte + dwIndex) = (BYTE)(*(lpGuidByte + dwIndex) ^ *(lpCryptoByte + dwIndex));
  125. }
  126. }
  127. //////////////////////////////////////////////////////////////////////////////////////////////
  128. //
  129. //////////////////////////////////////////////////////////////////////////////////////////////
  130. extern void RandomInit(void)
  131. {
  132. srand((unsigned) time(NULL));
  133. }
  134. //////////////////////////////////////////////////////////////////////////////////////////////
  135. //
  136. //////////////////////////////////////////////////////////////////////////////////////////////
  137. extern BYTE RandomBYTE(void)
  138. {
  139. DWORD dwRandom;
  140. dwRandom = (rand() * 0xff) / RAND_MAX;
  141. return (BYTE) dwRandom;
  142. }
  143. //////////////////////////////////////////////////////////////////////////////////////////////
  144. //
  145. //////////////////////////////////////////////////////////////////////////////////////////////
  146. extern WORD RandomWORD(void)
  147. {
  148. WORD wRandom;
  149. wRandom = (WORD)(rand() * 2);
  150. return wRandom;
  151. }
  152. //////////////////////////////////////////////////////////////////////////////////////////////
  153. //
  154. //////////////////////////////////////////////////////////////////////////////////////////////
  155. extern DWORD RandomDWORD(void)
  156. {
  157. DWORD dwRandom;
  158. dwRandom = rand() * (0xffffffff/RAND_MAX);
  159. return dwRandom;
  160. }
  161. //////////////////////////////////////////////////////////////////////////////////////////////
  162. //
  163. //////////////////////////////////////////////////////////////////////////////////////////////
  164. extern DWORD StrLenA(LPCSTR szString)
  165. {
  166. DWORD dwIndex;
  167. dwIndex = 0;
  168. while ((MAX_PATH_CHARCOUNT > dwIndex)&&(0 != szString[dwIndex]))
  169. {
  170. dwIndex++;
  171. }
  172. return dwIndex + 1;
  173. }
  174. //////////////////////////////////////////////////////////////////////////////////////////////
  175. //
  176. //////////////////////////////////////////////////////////////////////////////////////////////
  177. extern DWORD StrLenW(LPCWSTR wszString)
  178. {
  179. DWORD dwIndex;
  180. dwIndex = 0;
  181. while ((MAX_PATH_CHARCOUNT > dwIndex)&&(0 != wszString[dwIndex]))
  182. {
  183. dwIndex++;
  184. }
  185. return dwIndex + 1;
  186. }
  187. //////////////////////////////////////////////////////////////////////////////////////////////
  188. //
  189. //////////////////////////////////////////////////////////////////////////////////////////////
  190. extern BOOL GetResourceStringA(DWORD dwResourceId, LPSTR szString, DWORD dwStringCharLen)
  191. {
  192. HINSTANCE hDllInstance;
  193. BOOL fSuccess = FALSE;
  194. hDllInstance = (HINSTANCE) GetModuleHandle("AppMan.dll");
  195. if (0 < LoadStringA(hDllInstance, dwResourceId, szString, dwStringCharLen))
  196. {
  197. fSuccess = TRUE;
  198. }
  199. return fSuccess;
  200. }
  201. //////////////////////////////////////////////////////////////////////////////////////////////
  202. //
  203. //////////////////////////////////////////////////////////////////////////////////////////////
  204. extern BOOL GetResourceStringW(DWORD dwResourceId, LPWSTR wszString, DWORD dwStringCharLen)
  205. {
  206. HINSTANCE hDllInstance;
  207. BOOL fSuccess = FALSE;
  208. CWin32API sWin32API;
  209. hDllInstance = (HINSTANCE) GetModuleHandle("AppMan.dll");
  210. if (0 < LoadStringA(hDllInstance, dwResourceId, gszGlobalString, MAX_PATH_CHARCOUNT))
  211. {
  212. if (0 < sWin32API.MultiByteToWideChar(gszGlobalString, MAX_PATH_CHARCOUNT, wszString, dwStringCharLen))
  213. {
  214. fSuccess = TRUE;
  215. }
  216. }
  217. return fSuccess;
  218. }
  219. //////////////////////////////////////////////////////////////////////////////////////////////
  220. //
  221. //////////////////////////////////////////////////////////////////////////////////////////////
  222. extern LPSTR GetResourceStringPtrA(DWORD dwResourceId)
  223. {
  224. LPSTR lpszStringPtr = NULL;
  225. if (TRUE == GetResourceStringA(dwResourceId, gszGlobalString, MAX_PATH_CHARCOUNT))
  226. {
  227. lpszStringPtr = gszGlobalString;
  228. }
  229. return lpszStringPtr;
  230. }
  231. //////////////////////////////////////////////////////////////////////////////////////////////
  232. //
  233. //////////////////////////////////////////////////////////////////////////////////////////////
  234. extern LPWSTR GetResourceStringPtrW(DWORD dwResourceId)
  235. {
  236. LPWSTR lpwszStringPtr = NULL;
  237. if (TRUE == GetResourceStringW(dwResourceId, gwszGlobalString, MAX_PATH_CHARCOUNT))
  238. {
  239. lpwszStringPtr = gwszGlobalString;
  240. }
  241. return lpwszStringPtr;
  242. }