Leaked source code of windows server 2003
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.

447 lines
19 KiB

  1. //*********************************************************************
  2. //* Microsoft Windows **
  3. //* Copyright(c) Microsoft Corp., 1999 **
  4. //*********************************************************************
  5. //
  6. // APPDEFS.H - Header for application wide defines, typedefs, etc
  7. //
  8. // HISTORY:
  9. //
  10. // 1/27/99 a-jaswed Created.
  11. //
  12. // Header for application wide defines, typedefs, etc
  13. #ifndef _APPDEFS_H_
  14. #define _APPDEFS_H_
  15. #include <windows.h>
  16. #include <wtypes.h>
  17. #include <oleauto.h>
  18. #include <malloc.h>
  19. #define OOBE_DIR L"\\OOBE"
  20. #define OOBE_SHELL_DLL L"MSOBSHEL.DLL"
  21. #define OOBE_MAIN_DLL L"MSOBMAIN.DLL"
  22. #define OOBE_WEB_DLL L"MSOBWEB.DLL"
  23. #define OOBE_COMM_DLL L"MSOBCOMM.DLL"
  24. #define OOBE_EXE L"MSOOBE.EXE"
  25. #define OOBEBALN_EXE L"OOBEBALN.EXE"
  26. #define ICW_APP_TITLE L"INETWIZ.EXE"
  27. #define OOBE_MAIN_CLASSNAME L"MSOBMAIN_AppWindow"
  28. #define OOBE_MAIN_WINDOWNAME L"Microsoft Out of Box Experience"
  29. #define OBSHEL_MAINPANE_CLASSNAME L"MSOBSHEL_MainPane"
  30. #define OBSHEL_MAINPANE_WINDOWNAME L"ObShellMainPane"
  31. #define OBSHEL_STATUSPANE_CLASSNAME L"MSOBSHEL_StatPane"
  32. #define OBSHEL_STATUSPANE_WINDOWNAME L"CObShellStatusPane"
  33. #define OBSHEL_STATUSPANE_MINITEM 0
  34. #define OBSHEL_STATUSPANE_MAXITEM 8
  35. //Window size for standalone operation
  36. #define MSN_WIDTH 640
  37. #define MSN_HEIGHT 530
  38. //These MUST be ANSI for GetProcAddress
  39. #define MSOBMAIN_ENTRY "LaunchMSOOBE"
  40. #define REG_SERVER "DllRegisterServer"
  41. #define UNREG_SERVER "DllUnregisterServer"
  42. #define DEFAULT_FRAME_NAME L"msoobeMain"
  43. #define DEFAULT_FRAME_PAGE L"msobshel.htm"
  44. #define MSN_FRAME_PAGE L"dtsgnup.htm"
  45. #define REG_FRAME_PAGE L"regshell.htm"
  46. #define ISP_FRAME_PAGE L"ispshell.htm"
  47. #define ACT_FRAME_PAGE L"actshell.htm"
  48. #define DEFAULT_START_PAGE L"\\setup\\welcome.htm"
  49. #define DEFAULT_STATUS_PAGE L"/STATPANE_RESOURCE"
  50. #define IFRMSTATUSPANE L"ifrmStatusPane"
  51. #define WINNT_INF_FILENAME L"\\$winnt$.inf"
  52. #define OOBE_PATH L"\\oobe\\msoobe.exe"
  53. #define OOBE_BALLOON_REMINDER L"\\oobe\\oobebaln.exe"
  54. #define DATA_SECTION L"data"
  55. #define WINNT_UPGRADE L"winntupgrade"
  56. #define WIN9X_UPGRADE L"win9xupgrade"
  57. #define YES_ANSWER L"yes"
  58. #define OOBE_PROXY_SECTION L"OobeProxy"
  59. #define OOBE_ENABLE_OOBY_PROXY L"Enable"
  60. #define OOBE_FLAGS L"Flags"
  61. #define OOBE_PROXY_SERVER L"Proxy_Server"
  62. #define OOBE_PROXY_BYPASS L"Proxy_Bypass"
  63. #define OOBE_AUTOCONFIG_URL L"Autoconfig_URL"
  64. #define OOBE_AUTODISCOVERY_FLAGS L"Autodiscovery_Flag"
  65. #define OOBE_AUTOCONFIG_SECONDARY_URL L"Autoconfig_Secondary_URL"
  66. #define OOBE_MAIN_REG_KEY L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE"
  67. #define REG_KEY_OOBE_TEMP L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE\\Temp"
  68. #define REG_KEY_OOBE_CKPT L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE\\CKPT"
  69. #define REG_KEY_OOBE_ICS L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE\\ics"
  70. #define REG_KEY_OOBE_STATUS L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE\\status"
  71. #define REG_KEY_WINDOWS L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion"
  72. #define REG_KEY_SETUP L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup"
  73. #define RUNONCE_REGKEY L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce"
  74. #define IE_APP_PATH_REGKEY L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE"
  75. #define NOEULA_REGKEY L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion"
  76. #define REG_KEY_CONFIG_DISPLAY L"Config\\0001\\Display\\Settings"
  77. #define RUNONCE_IE_ENTRY L"^BrowseNow"
  78. #define OOBE_OEMDEBUG_REG_VAL L"OEMDebug"
  79. #define OOBE_MSDEBUG_REG_VAL L"MsDebug"
  80. #define REG_VAL_OOBE L"OOBE"
  81. #define REG_VAL_REBOOT L"DontReboot"
  82. #define REG_VAL_RES L"Resolution"
  83. #define REG_VAL_ISPSIGNUP L"ISPSignup"
  84. #define REG_VAL_NOEULA L"WelcomeHelpString"
  85. #define OOBE_SKIP_EULA_VAL L"Welcome to Microsoft Windows."
  86. #define REG_VAL_COMPUTERDESCRIPTION L"ComputerDescription"
  87. #define OOBE_EVENT_NOEXITCODE L"OOBE_Event_NoExitCode"
  88. ////////////////////////////////////////////////////////////////
  89. //??????????????????????????????????????????????????????????????
  90. //??? This is for OOBEINFO.INI
  91. #define INI_SETTINGS_FILENAME L"\\oobe\\OOBEINFO.INI"
  92. #define OEMINFO_INI_FILENAME INI_SETTINGS_FILENAME
  93. #define DEFAULT_WINDOW_TEXT L"Microsoft Out of Box Experience"
  94. #define MSN_WINDOW_TEXT L"MSN Setup"
  95. ////////////////////////////////////
  96. ////////////////////////////////////
  97. //SECTION :: StartupOptions
  98. #define STARTUP_OPTIONS_SECTION L"StartupOptions"
  99. //KEYS:
  100. #define OOBE_FULLSCREEN_MODE L"FullScreenMode"
  101. #define OOBE_FULLSCREEN_MODE_DEFAULT 1
  102. #define OOBE_DESKTOP_URL L"DesktopStartUrl"
  103. #define OOBE_DESKTOP_URL_DEFAULT MSN_FRAME_PAGE
  104. #define OOBE_DESKTOP_TITLE L"DesktopWindowTitle"
  105. #define OOBE_DESKTOP_TITLE_DEFAULT DEFAULT_WINDOW_TEXT
  106. #define OOBE_DESKTOP_HEIGHT L"DesktopWindowHeight"
  107. #define OOBE_DESKTOP_HEIGHT_DEFAULT MSN_HEIGHT
  108. #define OOBE_DESKTOP_WIDTH L"DesktopWindowWidth"
  109. #define OOBE_DESKTOP_WIDTH_DEFAULT MSN_WIDTH
  110. #define OOBE_SCREEN_RES_CHECK L"ScreenResolutionCheck"
  111. #define OOBE_SCREEN_RES_CHECK_DEFAULT 1
  112. #define OOBE_OEMAUDITBOOT L"OEMAuditBoot"
  113. ////////////////////////////////////
  114. ////////////////////////////////////
  115. //SECTION :: StartupOptions
  116. #define STATUS_PANE_SECTION L"StatusPane"
  117. //KEYS:
  118. #define STATUS_PANE_ITEM L"Item_text_%d"
  119. #define STATUS_PANE_LOGO L"Logo"
  120. #define STATUS_PANE_LOGO_BACKGROUND L"LogoBackground"
  121. #define REGISTRATION L"Registration"
  122. ////////////////////////////////////
  123. ////////////////////////////////////
  124. //SECTION :: WindowsLogon
  125. #define WINDOWS_LOGON_SECTION L"WindowsLogon"
  126. //KEYS:
  127. #define AUTOLOGON L"AutoLogon"
  128. #define DEFAULT_USER_NAME L"DefaultUserName"
  129. ////////////////////////////////////
  130. ////////////////////////////////////
  131. //SECTION :: HardwareOptions
  132. #define OPTIONS_SECTION L"Options"
  133. //KEYS:
  134. #define TONEPULSE L"TonePulse"
  135. #define CHECK_KEYBOARD L"USBKeyboard"
  136. #define CHECK_MOUSE L"USBMouse"
  137. #define AREACODE L"Areacode"
  138. #define OUTSIDELINE L"OutsideLine"
  139. #define DISABLECALLWAITING L"DisableCallWaiting"
  140. #define DEFAULT_REGION L"DefaultRegion"
  141. #define DEFAULT_LANGUAGE L"DefaultLanguage"
  142. #define DEFAULT_KEYBOARD L"DefaultKeyboard"
  143. #define CHECK_MODEMGCI L"CheckModemGCI"
  144. #define USE_1394_AS_LAN L"Use1394AsLan"
  145. #define NOUSBKBD_FILENAME L"\\oobe\\setup\\nousbkbd.htm"
  146. #define NOUSBMS_FILENAME L"\\oobe\\setup\\nousbms.htm"
  147. #define NOUSBKM_FILENAME L"\\oobe\\setup\\nousbkm.htm"
  148. ////////////////////////////////////
  149. ////////////////////////////////////
  150. //SECTION :: DesktopReminders
  151. #define DESKTOPREMINDERS_SECTION L"DesktopReminders"
  152. //KEYS:
  153. #define REGREMINDERX L"RegRemind%1d"
  154. #define ISPREMINDERX L"ISPRemind%1d"
  155. ////////////////////////////////////
  156. ////////////////////////////////////
  157. //SECTION :: UserInfo
  158. #define USER_INFO_KEYNAME L"UserInfo"
  159. ////////////////////////////////////////////////////////////////
  160. //??????????????????????????????????????????????????????????????
  161. //??? ISP file
  162. ////////////////////////////////////
  163. ////////////////////////////////////
  164. //SECTION :: URL
  165. #define ISP_FILE_URL_SECTION L"URL"
  166. //KEYS:
  167. #define ISP_FILE_SIGNUP_URL L"Signup"
  168. ////////////////////////////////////////////////////////////////
  169. //??????????????????????????????????????????????????????????????
  170. // These are the command line option used by MSoobe.exe
  171. #define CMD_FULLSCREENMODE L"/F"
  172. #define CMD_MSNMODE L"/x"
  173. #define CMD_ICWMODE L"/xicw"
  174. #define CMD_PRECONFIG L"/preconfig"
  175. #define CMD_OFFLINE L"/offline"
  176. #define CMD_SHELLNEXT L"/shellnext"
  177. #define CMD_SETPWD L"/setpwd"
  178. #define CMD_OOBE L"/oobe"
  179. #define CMD_REG L"/r"
  180. #define CMD_ISP L"/i"
  181. #define CMD_ACTIVATE L"/a"
  182. #define CMD_1 L"/1"
  183. #define CMD_2 L"/2"
  184. #define CMD_3 L"/3"
  185. #define CMD_RETAIL L"/retail"
  186. #define CMD_2NDINSTANCE L"/2ND"
  187. const WCHAR cszEquals[] = L"=";
  188. const WCHAR cszAmpersand[] = L"&";
  189. const WCHAR cszPlus[] = L"+";
  190. const WCHAR cszQuestion[] = L"?";
  191. const WCHAR cszFormNamePAGEID[] = L"PAGEID";
  192. const WCHAR cszFormNameBACK[] = L"BACK";
  193. const WCHAR cszFormNamePAGETYPE[] = L"PAGETYPE";
  194. const WCHAR cszFormNameNEXT[] = L"NEXT";
  195. const WCHAR cszFormNamePAGEFLAG[] = L"PAGEFLAG";
  196. const WCHAR cszPageTypeTERMS[] = L"TERMS";
  197. const WCHAR cszPageTypeCUSTOMFINISH[] = L"CUSTOMFINISH";
  198. const WCHAR cszPageTypeFINISH[] = L"FINISH";
  199. const WCHAR cszPageTypeNORMAL[] = L"";
  200. const WCHAR cszOLSRegEntries[] = L"regEntries";
  201. const WCHAR cszKeyName[] = L"KeyName";
  202. const WCHAR cszEntry_Name[] = L"Entry_Name";
  203. const WCHAR cszEntryName[] = L"EntryName";
  204. const WCHAR cszEntryValue[] = L"EntryValue";
  205. const WCHAR cszOLSDesktopShortcut[] = L"DesktopShortcut";
  206. const WCHAR cszSourceName[] = L"SourceName";
  207. const WCHAR cszTargetName[] = L"TargetName";
  208. //Htm pagetype flags
  209. #define PAGETYPE_UNDEFINED E_FAIL
  210. #define PAGETYPE_NOOFFERS 0x00000001
  211. #define PAGETYPE_MARKETING 0x00000002
  212. #define PAGETYPE_BRANDED 0x00000004
  213. #define PAGETYPE_BILLING 0x00000008
  214. #define PAGETYPE_CUSTOMPAY 0x00000010
  215. #define PAGETYPE_ISP_NORMAL 0x00000020
  216. #define PAGETYPE_ISP_TOS 0x00000040
  217. #define PAGETYPE_ISP_FINISH 0x00000080
  218. #define PAGETYPE_ISP_CUSTOMFINISH 0x00000100
  219. #define PAGETYPE_OLS_FINISH 0x00000200
  220. //Htm page flags
  221. #define PAGEFLAG_SAVE_CHKBOX 0x00000001 // Display ISP HTML with checkbox to save info at the bottom
  222. //??????????????????????????????????????????????????????????????
  223. ////////////////////////////////////////////////////////////////
  224. #define WM_OBCOMM_ONDIALERROR WM_USER + 42
  225. #define WM_OBCOMM_ONDIALING WM_USER + 43
  226. #define WM_OBCOMM_ONCONNECTING WM_USER + 44
  227. #define WM_OBCOMM_ONCONNECTED WM_USER + 45
  228. #define WM_OBCOMM_ONDISCONNECT WM_USER + 46
  229. #define WM_OBCOMM_ONSERVERERROR WM_USER + 47
  230. #define WM_OBCOMM_DOWNLOAD_PROGRESS WM_USER + 50
  231. #define WM_OBCOMM_DOWNLOAD_DONE WM_USER + 51
  232. #define WM_AGENT_HELP WM_USER + 52
  233. #define WM_OBCOMM_ONICSCONN_STATUS WM_USER + 53
  234. #define WM_OBCOMM_DIAL_DONE WM_USER + 54
  235. #define WM_OBCOMM_NETCHECK_DONE WM_USER + 56
  236. #define WM_OBMAIN_QUIT WM_USER + 48
  237. #define WM_OBMAIN_SERVICESSTART_DONE WM_USER + 55
  238. #define WM_OBMAIN_ASYNCINVOKE_DONE WM_USER + 57
  239. #define WM_OBMAIN_ASYNCINVOKE_FAILED WM_USER + 58
  240. #define WM_OBBACKGROUND_EXIT WM_USER + 60
  241. #define WM_OBMY_STATUS WM_USER + 61
  242. #define WM_SKIP WM_USER + 0x3000
  243. #define TIMER_DELAY 100
  244. #define IDT_OBMAIN_HANDSHAKE_TIMER 1001
  245. #define IDT_OBMAIN_LICENSE_TIMER 1002
  246. #define MAX_DISP_NAME 50
  247. #define MAX_RES_LEN 256
  248. // APP Mode enumeration.
  249. typedef enum
  250. {
  251. APMD_DEFAULT,
  252. APMD_OOBE,
  253. APMD_REG,
  254. APMD_ISP,
  255. APMD_MSN,
  256. APMD_ACT
  257. } APMD;
  258. // APP properties
  259. #define PROP_FULLSCREEN 0x80000000
  260. #define PROP_OOBE_OEM 0x00000001
  261. #define PROP_SETCONNECTIOD 0x10000000
  262. #define PROP_2NDINSTANCE 0x20000000
  263. #define PROP_CALLFROM_MSN 0x40000000
  264. // Registration post defines.
  265. #define POST_TO_OEM 0x0000001
  266. #define POST_TO_MS 0x0000002
  267. // reminder types.
  268. #define REMIND_REG 0
  269. #define REMIND_ISP 1
  270. // Activation errors
  271. #define ERR_ACT_UNINITIALIZED -1
  272. #define ERR_ACT_SUCCESS 0
  273. #define ERR_ACT_INACCESSIBLE 1
  274. #define ERR_ACT_INVALID_PID 2
  275. #define ERR_ACT_USED_PID 3
  276. #define ERR_ACT_INTERNAL_WINDOWS_ERR 4
  277. #define ERR_ACT_BLOCKED_PID 5
  278. #define ERR_ACT_CORRUPTED_PID 6
  279. #define ERR_ACT_NETWORK_FAILURE 7
  280. // Audit mode values
  281. #define NO_AUDIT 0
  282. #define NONE_RESTORE_AUDIT 1
  283. #define RESTORE_AUDIT 2
  284. #define SIMULATE_ENDUSER 3
  285. #define ICW_OS_VER L"01"
  286. #define ICW_ISPINFOPath L"download\\ispinfo.csv"
  287. //various flags for the icw including branding stuff
  288. #define ICW_CFGFLAG_OFFERS 0x00000001 // 0 = No offer; 1 = offers
  289. #define ICW_CFGFLAG_AUTOCONFIG 0x00000002 // 0 = No; 1 = Yes
  290. #define ICW_CFGFLAG_CNS 0x00000004 // 0 = No star; 1 = Star
  291. #define ICW_CFGFLAG_SIGNUP_PATH 0x00000008 // 0 = Jump to Finish; 1 = Continue down sign up path
  292. #define ICW_CFGFLAG_USERINFO 0x00000010 // 0 = Hide name/addr; 1 = Show name/addr page
  293. #define ICW_CFGFLAG_BILL 0x00000020 // 0 = Hide bill 1 = Show bill page
  294. #define ICW_CFGFLAG_PAYMENT 0x00000040 // 0 = Hide payment; 1 = Show payment page
  295. #define ICW_CFGFLAG_SECURE 0x00000080 // 0 = Not secure; 1 = Secure
  296. #define ICW_CFGFLAG_IEAKMODE 0x00000100 // 0 = No IEAK; 1 = IEAK
  297. #define ICW_CFGFLAG_BRANDED 0x00000200 // 0 = No branding; 1 = Branding
  298. #define ICW_CFGFLAG_SBS 0x00000400 // 0 = No SBS 1 = SBS
  299. #define ICW_CFGFLAG_ALLOFFERS 0x00000800 // 0 = Not all offers 1 = All offers
  300. #define ICW_CFGFLAG_USE_COMPANYNAME 0x00001000 // 0 = Not use 1 = Use company name
  301. #define ICW_CFGFLAG_ISDN_OFFER 0x00002000 // 0 = Non-ISDN offer 1 = ISDN offer
  302. #define ICW_CFGFLAG_OEM_SPECIAL 0x00004000 // 0 = non OEM special offer 1 = OEM special offer
  303. #define ICW_CFGFLAG_OEM 0x00008000 // 0 = non OEM offer 1 = OEM offer
  304. #define ICW_CFGFLAG_MODEMOVERRIDE 0x00010000
  305. #define ICW_CFGFLAG_ISPURLOVERRIDE 0x00020000
  306. #define ICW_CFGFLAG_PRODCODE_FROM_CMDLINE 0x00040000
  307. #define ICW_CFGFLAG_PROMOCODE_FROM_CMDLINE 0x00080000
  308. #define ICW_CFGFLAG_OEMCODE_FROM_CMDLINE 0x00100000
  309. #define ICW_CFGFLAG_SMARTREBOOT_NEWISP 0x00200000
  310. #define ICW_CFGFLAG_SMARTREBOOT_AUTOCONFIG 0x00400000 // this is seperate from ICW_CFGFLAG_AUTOCONFIG so as not to confuse function of flag
  311. #define ICW_CFGFLAG_SMARTREBOOT_MANUAL 0x00800000
  312. #define ICW_CFGFLAG_DO_NOT_OVERRIDE_ALLOFFERS 0x01000000
  313. #define ICW_CFGFLAG_SMARTREBOOT_LAN 0x02000000
  314. #define CONNECTED_REFFERAL 0x00000001
  315. #define CONNECTED_ISP_SIGNUP 0x00000002
  316. #define CONNECTED_ISP_MIGRATE 0x00000003
  317. #define CONNECTED_REGISTRATION 0x00000004
  318. #define CONNECTED_TYPE_MAX 5
  319. // Default strings for oem, prod, and promo code
  320. #define DEFAULT_OEMCODE L"Default"
  321. #define DEFAULT_PRODUCTCODE L"Desktop"
  322. #define DEFAULT_PROMOCODE L"Default"
  323. #define UPGRADETYPE_NONE 0
  324. #define UPGRADETYPE_WIN9X 1
  325. #define UPGRADETYPE_WINNT 2
  326. const UINT MAXSTATUSITEMS = 10;
  327. typedef struct dispatchList_tag
  328. {
  329. WCHAR szName [MAX_DISP_NAME];
  330. DWORD dwDispID;
  331. } DISPATCHLIST;
  332. // These macros calculate the bytes required by a string. The null-terminator
  333. // is accounted for.
  334. //
  335. #define BYTES_REQUIRED_BY_CCH(cch) ((cch + 1) * sizeof(WCHAR))
  336. #define BYTES_REQUIRED_BY_SZ(sz) ((lstrlen(sz) + 1) * sizeof(WCHAR))
  337. // These macros calculate the number of characters that will fit in a buffer.
  338. // The null-terminator is accounted for.
  339. //
  340. #define MAX_CHARS_IN_BUFFER(buf) ((sizeof(buf) / sizeof(WCHAR)) - 1)
  341. #define MAX_CHARS_IN_CB(cb) (((cb) / sizeof(WCHAR)) - 1)
  342. #define ARRAYSIZE(a) (sizeof(a) / sizeof(a[0]))
  343. #define SZ_EMPTY L"\0"
  344. ///////////////////////////////////////////////////////////////////////
  345. ///////////////////////////////////////////////////////////////////////
  346. ////////
  347. //////// A2W -- AnsiToWide Helper
  348. ////////
  349. ////////
  350. #define USES_CONVERSION int _convert = 0
  351. inline LPWSTR WINAPI A2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars)
  352. {
  353. lpw[0] = L'\0';
  354. MultiByteToWideChar(CP_ACP, 0, lpa, -1, lpw, nChars);
  355. return lpw;
  356. }
  357. inline LPSTR WINAPI W2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars)
  358. {
  359. lpa[0] = '\0';
  360. WideCharToMultiByte(CP_ACP, 0, lpw, -1, lpa, nChars, NULL, NULL);
  361. return lpa;
  362. }
  363. #define A2WHELPER A2WHelper
  364. #define W2AHELPER W2AHelper
  365. #define W2A(lpw) (\
  366. ((LPCWSTR)lpw == NULL) ? NULL : (\
  367. _convert = (lstrlenW(lpw)+1)*2,\
  368. W2AHELPER((LPSTR) alloca(_convert), lpw, _convert)))
  369. #define A2W(lpa) (\
  370. ((LPCSTR)lpa == NULL) ? NULL : (\
  371. _convert = (lstrlenA((LPSTR)lpa)+1),\
  372. A2WHELPER((LPWSTR) alloca(_convert*2), (LPSTR)lpa, _convert)))
  373. #define A2CW(lpa) ((LPCWSTR)A2W(lpa))
  374. #define A2COLE A2CW
  375. #endif //_APPDEFS_H_