-<html dir="ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="assetid" content="SP01019690"><title>Regional and Language Settings</title><link rel="stylesheet" type="text/css" href="stsk09-Dateien/ont.css"><script type="text/javascript" language="Javascript" src="stsk09-Dateien/sExpCollapse.js"></script><script type="text/javascript" language="JavaScript" src="stsk09-Dateien/backgo.js"></script><script>\r
- var strShow = 'Show';\r
- var strHide = 'Hide';\r
-\r
- function go(url)\r
- {\r
- navigate(url); \r
- }\r
-</script><style type="text/CSS">\r
- .ACICollapsed\r
- {\r
- display: none;\r
- }\r
-\r
- .ACECollapsed\r
- {\r
- display: none;\r
- }\r
-</style><style type="text/CSS">\r
- .ACICollapsed\r
- {\r
- display: inline;\r
- }\r
-\r
- .ACECollapsed\r
- {\r
- display: block;\r
- }\r
- </style><meta http-equiv="assetid" content="SP01019690"></head><noscript></noscript><body><table border="0" cellpadding="0" cellspacing="0" width="200"><tbody><tr><td colspan="6"><img src="stsk09-Dateien/psLogo.gif" alt="Microsoft Office SharePoint Portal Server 2003" border="0" height="31" width="202"></td></tr><tr><td><a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/sharepointhelp.htm" title="Home button"><img src="stsk09-Dateien/home.gif" alt="Home" border="0" height="32" width="69"></a><a href="javascript:myBack()" title="Back button"><img src="stsk09-Dateien/back.gif" alt="Back" border="0" height="32" width="24"></a><a href="javascript:myForward()" title="Forward button"><img src="stsk09-Dateien/forward.gif" alt="Forward" border="0" height="32" width="23"></a><a href="javascript:self.print();" title="Print button"><img src="stsk09-Dateien/print.gif" alt="Print" border="0" height="32" width="59"></a><img src="stsk09-Dateien/bar.gif" border="0" height="32" width="1200"></td></tr></tbody></table><br><h1>Regional and Language Settings</h1>\r
-\r
-\r
- \r
-\r
-\r
-\r
-<p>This topic lists the regional and language settings you can specify\r
-from the command line by using operations in Stsadm.exe and by using\r
-HTML Administration pages. For more information about specifying\r
-regional and language settings, see <a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/stsb05.htm" id="SP01019676" lcid=" ">Language Considerations</a>. For more information about the syntax for command-line operations, see <a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/stsk01.htm" id="SP01019625" lcid=" ">Command-Line Operations</a>.\r
-</p><p>The following types of regional and language settings are used in Microsoft Windows SharePoint Services:</p>\r
-\r
-\r
-<ul><li><a href="#language">Language IDs</a></li><li><a href="#locale">Locale IDs</a></li><li><a href="#Time">Time zones</a></li><li><a href="#currency">Currency IDs</a></li></ul><h2><a id="Language" name="Language">Language IDs</a></h2><p>The\r
-Language ID determines the language used for text on pages in the Web\r
-site (such as the text on the Site Settings page). The languages\r
-available for site creation depend on the language template packs you\r
-have installed to your server or server farm. Web sites based on\r
-Windows SharePoint Services can be created in the following languages. </p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>\r
-</td><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>\r
-</td></tr><tr><td>1025</td><td>Arabic\r
-</td><td>1041\r
-</td><td>Japanese\r
-</td></tr><tr><td>1028\r
-</td><td>Chinese - Traditional\r
-</td><td>1042\r
-</td><td>Korean</td></tr><tr><td>1029\r
-</td><td>Czech</td><td>1043</td><td>Dutch\r
-</td></tr><tr><td>1030\r
-</td><td>Danish\r
-</td><td>1044\r
-</td><td>Norwegian\r
-</td></tr><tr><td>1031\r
-</td><td>German\r
-</td><td>1045\r
-</td><td>Polish\r
-</td></tr><tr><td>1032\r
-</td><td>Greek\r
-</td><td>1046\r
-</td><td>Portuguese - Brazilian\r
-</td></tr><tr><td>1033\r
-</td><td>English\r
-</td><td>1049\r
-</td><td>Russian\r
-</td></tr><tr><td>1034\r
-</td><td>Spanish\r
-</td><td>1053\r
-</td><td>Swedish\r
-</td></tr><tr><td>1035\r
-</td><td>Finnish\r
-</td><td>1054\r
-</td><td>Thai\r
-</td></tr><tr><td>1036\r
-</td><td>French\r
-</td><td>1055\r
-</td><td>Turkish\r
-</td></tr><tr><td>1037\r
-</td><td>Hebrew\r
-</td><td>2052\r
-</td><td>Chinese - Simplified\r
-</td></tr><tr><td>1038\r
-</td><td>Hungarian\r
-</td><td>2070\r
-</td><td>Portuguese\r
-</td></tr><tr><td>1040\r
-</td><td>Italian\r
-</td><td>3076</td><td>Chinese - Hong Kong</td></tr></tbody></table><p>Windows SharePoint Services also supports input and display of text in the following languages, but not site creation.</p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>\r
-</td><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>\r
-</td></tr><tr><td>1026</td><td>Bulgarian</td><td>1048</td><td>Romanian</td></tr><tr><td>1050</td><td>Croatian\r
-</td><td>2074</td><td>Serbian</td></tr><tr><td>1061</td><td>Estonian\r
-</td><td>1051</td><td>Slovak</td></tr><tr><td>1081</td><td>Hindi with Indic PT</td><td>1060</td><td>Slovenian</td></tr><tr><td>1062</td><td>Latvian</td><td>1058</td><td>Ukrainian</td></tr><tr><td>1063</td><td>Lithuanian</td><td></td><td></td></tr></tbody></table><h2><a id="Locale" name="Locale">Locale IDs</a></h2><p>The\r
-Locale ID controls the numbering, sorting, calendar, and time\r
-formatting for the Web site. You can change the locale for a Web site\r
-by using the Regional Settings page. Web sites based on Windows\r
-SharePoint Services can be set to the following Locale IDs. </p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Locale</b></td><td><b class="bterm">ID</b></td><td><b class="bterm">Locale</b></td></tr><tr><td>1078</td><td>Afrikaans\r
-</td><td>1037\r
-</td><td>Hebrew \r
-</td></tr><tr><td>1052\r
-</td><td>Albanian\r
-</td><td>1081\r
-</td><td>Hindi\r
-</td></tr><tr><td>5121\r
-</td><td>Arabic (Algeria) \r
-</td><td>1038\r
-</td><td>Hungarian\r
-</td></tr><tr><td>15361\r
-</td><td>Arabic (Bahrain) \r
-</td><td>1039\r
-</td><td>Icelandic\r
-</td></tr><tr><td>3073\r
-</td><td>Arabic (Egypt) \r
-</td><td>1057\r
-</td><td>Indonesian\r
-</td></tr><tr><td>2049\r
-</td><td>Arabic (Iraq) \r
-</td><td>1040\r
-</td><td>Italian (Italy)\r
-</td></tr><tr><td>11265\r
-</td><td>Arabic (Jordan) \r
-</td><td>2064\r
-</td><td>Italian (Switzerland)\r
-</td></tr><tr><td>13313\r
-</td><td>Arabic (Kuwait) \r
-</td><td>1041\r
-</td><td>Japanese\r
-</td></tr><tr><td>12289\r
-</td><td>Arabic (Lebanon) \r
-</td><td>1099\r
-</td><td>Kannada\r
-</td></tr><tr><td>4097\r
-</td><td>Arabic (Libya) \r
-</td><td>1087\r
-</td><td>Kazakh\r
-</td></tr><tr><td>6145\r
-</td><td>Arabic (Morocco) \r
-</td><td>1111\r
-</td><td>Konkani\r
-</td></tr><tr><td>8193\r
-</td><td>Arabic (Oman) \r
-</td><td>1042\r
-</td><td>Korean\r
-</td></tr><tr><td>16385\r
-</td><td>Arabic (Qatar) \r
-</td><td>1088\r
-</td><td>Kyrgyz (Cyrillic)\r
-</td></tr><tr><td>1025\r
-</td><td>Arabic (Saudi Arabia) \r
-</td><td>1062</td><td>Latvian\r
-</td></tr><tr><td>10241\r
-</td><td>Arabic (Syria) \r
-</td><td>1063\r
-</td><td>Lithuanian\r
-</td></tr><tr><td>7169\r
-</td><td>Arabic (Tunisia) \r
-</td><td>1071\r
-</td><td>Macedonian (FYROM)\r
-</td></tr><tr><td>14337\r
-</td><td>Arabic (U.A.E.) \r
-</td><td>2110\r
-</td><td>Malay (Brunei Darussalam)\r
-</td></tr><tr><td>9217\r
-</td><td>Arabic (Yemen) \r
-</td><td>1086\r
-</td><td>Malay (Malaysia)\r
-</td></tr><tr><td>1067\r
-</td><td>Armenian\r
-</td><td>1102\r
-</td><td>Marathi\r
-</td></tr><tr><td>2092\r
-</td><td>Azeri (Cyrillic)\r
-</td><td>1104\r
-</td><td>Mongolian (Cyrillic)\r
-</td></tr><tr><td>1068\r
-</td><td>Azeri (Latin)\r
-</td><td>1044\r
-</td><td>Norwegian (Bokmal)\r
-</td></tr><tr><td>1069\r
-</td><td>Basque\r
-</td><td>2068\r
-</td><td>Norwegian (Nynorsk)\r
-</td></tr><tr><td>1059\r
-</td><td>Belarusian\r
-</td><td>1045\r
-</td><td>Polish\r
-</td></tr><tr><td>1026\r
-</td><td>Bulgarian\r
-</td><td>1046\r
-</td><td>Portuguese (Brazil)\r
-</td></tr><tr><td>1027\r
-</td><td>Catalan\r
-</td><td>2070\r
-</td><td>Portuguese (Portugal)\r
-</td></tr><tr><td>3076\r
-</td><td>Chinese (Hong Kong)\r
-</td><td>1094\r
-</td><td>Punjabi\r
-</td></tr><tr><td>5124\r
-</td><td>Chinese (Macau)\r
-</td><td>1048\r
-</td><td>Romanian\r
-</td></tr><tr><td>2052\r
-</td><td>Chinese (PRC)\r
-</td><td>1049\r
-</td><td>Russian\r
-</td></tr><tr><td>4100\r
-</td><td>Chinese (Singapore)\r
-</td><td>1103\r
-</td><td>Sanskrit\r
-</td></tr><tr><td>1028\r
-</td><td>Chinese (Taiwan)\r
-</td><td>3098\r
-</td><td>Serbian (Cyrillic)\r
-</td></tr><tr><td>1050\r
-</td><td>Croatian\r
-</td><td>2074\r
-</td><td>Serbian (Latin)\r
-</td></tr><tr><td>1029\r
-</td><td>Czech\r
-</td><td>1051\r
-</td><td>Slovak\r
-</td></tr><tr><td>1030\r
-</td><td>Danish\r
-</td><td>1060\r
-</td><td>Slovenian\r
-</td></tr><tr><td>1125\r
-</td><td>Divehi\r
-</td><td>11274\r
-</td><td>Spanish (Argentina)\r
-</td></tr><tr><td>2067\r
-</td><td>Dutch (Belgium)\r
-</td><td>16394\r
-</td><td>Spanish (Bolivia)\r
-</td></tr><tr><td>1043\r
-</td><td>Dutch (Netherlands)\r
-</td><td>13322\r
-</td><td>Spanish (Chile)\r
-</td></tr><tr><td>3081\r
-</td><td>English (Australia)\r
-</td><td>9226\r
-</td><td>Spanish (Colombia)\r
-</td></tr><tr><td>10249\r
-</td><td>English (Belize)\r
-</td><td>5130\r
-</td><td>Spanish (Costa Rica)\r
-</td></tr><tr><td>4105\r
-</td><td>English (Canada)\r
-</td><td>7178\r
-</td><td>Spanish (Dominican Republic)\r
-</td></tr><tr><td>9225\r
-</td><td>English (Caribbean)\r
-</td><td>12298\r
-</td><td>Spanish (Ecuador)\r
-</td></tr><tr><td>6153\r
-</td><td>English (Ireland)\r
-</td><td>17418\r
-</td><td>Spanish (El Salvador)\r
-</td></tr><tr><td>8201\r
-</td><td>English (Jamaica)\r
-</td><td>4106</td><td>Spanish (Guatemala)\r
-</td></tr><tr><td>5129\r
-</td><td>English (New Zealand)\r
-</td><td>18442\r
-</td><td>Spanish (Honduras)\r
-</td></tr><tr><td>13321\r
-</td><td>English (Philippines)\r
-</td><td>2058\r
-</td><td>Spanish (Mexico)\r
-</td></tr><tr><td>7177\r
-</td><td>English (South Africa)\r
-</td><td>19466\r
-</td><td>Spanish (Nicaragua)\r
-</td></tr><tr><td>11273\r
-</td><td>English (Trinidad)\r
-</td><td>6154\r
-</td><td>Spanish (Panama)\r
-</td></tr><tr><td>2057\r
-</td><td>English (United Kingdom)\r
-</td><td>15370\r
-</td><td>Spanish (Paraguay)\r
-</td></tr><tr><td>1033\r
-</td><td>English (United States) \r
-</td><td>10250\r
-</td><td>Spanish (Peru)\r
-</td></tr><tr><td>12297\r
-</td><td>English (Zimbabwe)\r
-</td><td>20490\r
-</td><td>Spanish (Puerto Rico)\r
-</td></tr><tr><td>1061\r
-</td><td>Estonian\r
-</td><td>3082\r
-</td><td>Spanish (Spain)\r
-</td></tr><tr><td>1080\r
-</td><td>Faeroese\r
-</td><td>1034\r
-</td><td>Spanish (Traditional)\r
-</td></tr><tr><td>1065\r
-</td><td>Farsi \r
-</td><td>14346\r
-</td><td>Spanish (Uruguay)\r
-</td></tr><tr><td>1035\r
-</td><td>Finnish\r
-</td><td>8202\r
-</td><td>Spanish (Venezuela)\r
-</td></tr><tr><td>2060\r
-</td><td>French (Belgium)\r
-</td><td>1089\r
-</td><td>Swahili\r
-</td></tr><tr><td>3084\r
-</td><td>French (Canada)\r
-</td><td>1053\r
-</td><td>Swedish\r
-</td></tr><tr><td>1036\r
-</td><td>French (France)\r
-</td><td>2077\r
-</td><td>Swedish (Finland)\r
-</td></tr><tr><td>5132\r
-</td><td>French (Luxembourg)\r
-</td><td>1114\r
-</td><td>Syriac\r
-</td></tr><tr><td>6156\r
-</td><td>French (Monaco)\r
-</td><td>1097\r
-</td><td>Tamil\r
-</td></tr><tr><td>4108\r
-</td><td>French (Switzerland)\r
-</td><td>1092\r
-</td><td>Tatar\r
-</td></tr><tr><td>1110\r
-</td><td>Galician\r
-</td><td>1098\r
-</td><td>Telugu\r
-</td></tr><tr><td>1079\r
-</td><td>Georgian\r
-</td><td>1054\r
-</td><td>Thai \r
-</td></tr><tr><td>3079\r
-</td><td>German (Austria) \r
-</td><td>1055\r
-</td><td>Turkish\r
-</td></tr><tr><td>1031\r
-</td><td>German (Germany) \r
-</td><td>1058\r
-</td><td>Ukrainian\r
-</td></tr><tr><td>5127\r
-</td><td>German (Liechtenstein) \r
-</td><td>1056\r
-</td><td>Urdu\r
-</td></tr><tr><td>4103\r
-</td><td>German (Luxembourg) \r
-</td><td>2115\r
-</td><td>Uzbek (Cyrillic)\r
-</td></tr><tr><td>2055\r
-</td><td>German (Switzerland) \r
-</td><td>1091\r
-</td><td>Uzbek (Latin)\r
-</td></tr><tr><td>1032\r
-</td><td>Greek\r
-</td><td>1066\r
-</td><td>Vietnamese\r
-</td></tr><tr><td>1095\r
-</td><td>Gujarati\r
-</td><td></td><td></td></tr></tbody></table><h2><a id="Time" name="Time">Time Zones</a></h2><p>Web\r
-sites based on Windows SharePoint Services can be set to any of the\r
-time zones recognized by Microsoft Windows Server 2003.</p><table><tbody><tr><td><b class="bterm">Code</b>\r
-</td><td><b class="bterm">Time zone</b></td><td><b class="bterm">Code</b></td><td><b class="bterm">Time zone</b></td></tr><tr><td>39</td><td>(GMT-12:00) Eniwetok, Kwajalein</td><td>59</td><td>(GMT+02:00) Helsinki, Riga, Tallinn\r
-</td></tr><tr><td>16</td><td>(GMT-11:00) Midway Island, Samoa\r
-</td><td>27</td><td>(GMT+02:00) Jerusalem 26 (GMT+03:00) Baghdad\r
-</td></tr><tr><td>15</td><td>(GMT-10:00) Hawaii\r
-</td><td>74</td><td>(GMT+03:00) Kuwait, Riyadh\r
-</td></tr><tr><td>14</td><td>(GMT-09:00) Alaska\r
-</td><td>51</td><td>(GMT+03:00) Moscow, St. Petersburg, Volgograd\r
-</td></tr><tr><td>13</td><td>(GMT-08:00) Pacific Time (US and Canada); Tijuana\r
-</td><td>56</td><td>(GMT+03:00) Nairobi\r
-</td></tr><tr><td>38</td><td>(GMT-07:00) Arizona\r
-</td><td>25</td><td>(GMT+03:30) Tehran</td></tr><tr><td>12</td><td>(GMT-07:00) Mountain Time (US and Canada)\r
-</td><td>24</td><td>(GMT+04:00) Abu Dhabi, Muscat\r
-</td></tr><tr><td>55</td><td>(GMT-06:00) Central America\r
-</td><td>54</td><td>(GMT+04:00) Baku, Tbilisi, Yerevan 48 (GMT+04:30) Kabul\r
-</td></tr><tr><td>11</td><td>(GMT-06:00) Central Time (US and Canada)\r
-</td><td>58</td><td>(GMT+05:00) Ekaterinburg\r
-</td></tr><tr><td>37</td><td>(GMT-06:00) Mexico City\r
-</td><td>47\r
-</td><td>(GMT+05:00) Islamabad, Karachi, Tashkent\r
-</td></tr><tr><td>36</td><td>(GMT-06:00) Saskatchewan\r
-</td><td>23</td><td>(GMT+05:30) Calcutta, Chennai, Mumbai, New Delhi\r
-</td></tr><tr><td>35</td><td>(GMT-05:00) Bogota, Lima, Quito\r
-</td><td>62</td><td>(GMT+05:45) Kathmandu 46 (GMT+06:00) Almaty, Novosibirsk\r
-</td></tr><tr><td>10</td><td>(GMT-05:00) Eastern Time (US and Canada)\r
-</td><td>71</td><td>(GMT+06:00) Astana, Dhaka\r
-</td></tr><tr><td>34\r
-</td><td>(GMT-05:00) Indiana (East)\r
-</td><td>66</td><td>(GMT+06:00) Sri Jayawardenepura\r
-</td></tr><tr><td>9\r
-</td><td>(GMT-04:00) Atlantic Time (Canada)\r
-</td><td>61</td><td>(GMT+06:30) Rangoon\r
-</td></tr><tr><td>33</td><td>(GMT-04:00) Caracas, La Paz\r
-</td><td>22</td><td>(GMT+07:00) Bangkok, Hanoi, Jakarta\r
-</td></tr><tr><td>65</td><td>(GMT-04:00) Santiago\r
-</td><td>64</td><td>(GMT+07:00) Krasnoyarsk\r
-</td></tr><tr><td>28</td><td>(GMT-03:30) Newfoundland 8 (GMT-03:00) Brasilia\r
-</td><td>45</td><td>(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi\r
-</td></tr><tr><td>32</td><td>(GMT-03:00) Buenos Aires, Georgetown\r
-</td><td>63</td><td>(GMT+08:00) Irkutsk, Ulaan Bataar\r
-</td></tr><tr><td>60</td><td>(GMT-03:00) Greenland\r
-</td><td>21</td><td>(GMT+08:00) Kuala Lumpur, Singapore\r
-</td></tr><tr><td>30</td><td>(GMT-02:00) Mid-Atlantic\r
-</td><td>73</td><td>(GMT+08:00) Perth 75 (GMT+08:00) Taipei\r
-</td></tr><tr><td>29</td><td>(GMT-01:00) Azores\r
-</td><td>20</td><td>(GMT+09:00) Osaka, Sapporo, Tokyo 72 (GMT+09:00) Seoul\r
-</td></tr><tr><td>53</td><td>(GMT-01:00) Cape Verde Is.</td><td>70</td><td>(GMT+09:00) Yakutsk 19 (GMT+09:30) Adelaide\r
-</td></tr><tr><td>31</td><td>(GMT) Casablanca, Monrovia\r
-</td><td>44</td><td>(GMT+09:30) Darwin\r
-</td></tr><tr><td>2</td><td>(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London\r
-</td><td>18</td><td>(GMT+10:00) Brisbane\r
-</td></tr><tr><td>4</td><td>(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna\r
-</td><td>76</td><td>(GMT+10:00) Canberra, Melbourne, Sydney\r
-</td></tr><tr><td>6</td><td>(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague\r
-</td><td>43</td><td>(GMT+10:00) Guam, Port Moresby\r
-</td></tr><tr><td>3</td><td>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris\r
-</td><td>42</td><td>(GMT+10:00) Hobart</td></tr><tr><td>57</td><td>(GMT+01:00) Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb\r
-</td><td>68</td><td>(GMT+10:00) Vladivostok\r
-</td></tr><tr><td>69</td><td>(GMT+01:00) West Central Africa\r
-</td><td>41</td><td>(GMT+11:00) Magadan, Solomon Is., New Caledonia\r
-</td></tr><tr><td>7</td><td>(GMT+02:00) Athens, Istanbul, Minsk\r
-</td><td>17</td><td>(GMT+12:00) Auckland, Wellington\r
-</td></tr><tr><td>5</td><td>(GMT+02:00) Bucharest</td><td>40\r
-</td><td>(GMT+12:00) Fiji, Kamchatka, Marshall Is.\r
-</td></tr><tr><td>49\r
-</td><td>(GMT+02:00) Cairo\r
-</td><td>67\r
-</td><td>(GMT+13:00) Nuku'alofa\r
-</td></tr><tr><td>50\r
-</td><td>(GMT+02:00) Harare, Pretoria\r
-</td><td></td><td></td></tr></tbody></table><h2><a id="Currency" name="Currency">Currency IDs</a></h2><p>Web sites based on Windows SharePoint Services can be set to use the following currencies.\r
-</p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Currency</b>\r
-</td><td><b class="bterm">ID</b></td><td><b class="bterm">Currency</b>\r
-</td></tr><tr><td>5121</td><td>1,254 .ج.د (Arabic-Algeria)\r
-</td><td>4106\r
-</td><td>Q1,254 (Guatemala)\r
-</td></tr><tr><td>15361\r
-</td><td>1,254 .ب.د (Arabic-Bahrain)\r
-</td><td>18442\r
-</td><td>L. 1254 (Honduras)\r
-</td></tr><tr><td>3073\r
-</td><td>1,254 .م.ج (Arabic-Egypt)</td><td>3076\r
-</td><td>HK$1,254 (Hong Kong)\r
-</td></tr><tr><td>2049\r
-</td><td>1,254 .ع.د (Arabic-Iraq)\r
-</td><td>1038\r
-</td><td>1 254 Ft (Hungary)\r
-</td></tr><tr><td>11265\r
-</td><td>1,254 .ا.د (Arabic-Jordan)\r
-</td><td>1081\r
-</td><td>रु 1,254 (India)\r
-</td></tr><tr><td>13313\r
-</td><td>1,254 .ك.د (Arabic-Kuwait)\r
-</td><td>6153\r
-</td><td>IR£1,254 (Ireland)\r
-</td></tr><tr><td>12289\r
-</td><td>1,254 .ل.ل (Arabic-Lebanon)\r
-</td><td>1037\r
-</td><td>₪1,254 (Israel)\r
-</td></tr><tr><td>4097\r
-</td><td>1,254 .ل.د (Arabic-Libya)\r
-</td><td>1041\r
-</td><td>¥1,254 (Japan)\r
-</td></tr><tr><td>6145\r
-</td><td>1,254 .م.د (Arabic-Morocco)\r
-</td><td>1042\r
-</td><td>₩1,254 (Korea)\r
-</td></tr><tr><td>8193\r
-</td><td>1,254 .ع.ر (Arabic-Oman)\r
-</td><td>2058\r
-</td><td>$1,254 (Mexico)\r
-</td></tr><tr><td>16385\r
-</td><td>1,254 .ق.ر (Arabic-Qatar)\r
-</td><td>5129\r
-</td><td>$1,254 (New Zealand)\r
-</td></tr><tr><td>1025\r
-</td><td>1,254 .س.ر (Arabic-Saudi Arabia)\r
-</td><td>19466\r
-</td><td>C$ 1254 (Nicaragua)\r
-</td></tr><tr><td>10241\r
-</td><td>1,254 .س.ل (Arabic-Syria)\r
-</td><td>1044\r
-</td><td>kr 1 254 (Norway)\r
-</td></tr><tr><td>7169\r
-</td><td>1,254 .ت.د (Arabic-Tunisia)\r
-</td><td>1056\r
-</td><td>Rs 1,254 (Pakistan)\r
-</td></tr><tr><td>14337\r
-</td><td>1,254 .إ.د (Arabic-U.A.E)\r
-</td><td>6154\r
-</td><td>B/. 1,254 (Panama)\r
-</td></tr><tr><td>9217\r
-</td><td>1,254 .ي.ر (Arabic-Yemen)\r
-</td><td>15370\r
-</td><td>Gs 1.254 (Paraguay)\r
-</td></tr><tr><td>11274\r
-</td><td>$ 1.254 (Argentina)\r
-</td><td>2052\r
-</td><td>¥1,254 (People's Republic of China)\r
-</td></tr><tr><td>3081\r
-</td><td>$1,254 (Australia)\r
-</td><td>10250\r
-</td><td>S/. 1,254 (Peru)\r
-</td></tr><tr><td>3079\r
-</td><td>öS 1.254 (Austria)\r
-</td><td>1045\r
-</td><td>1 254 zł (Poland)\r
-</td></tr><tr><td>16394\r
-</td><td>$b 1.254 (Bolivia)\r
-</td><td>1049\r
-</td><td>1 254р. (Russia)\r
-</td></tr><tr><td>1046\r
-</td><td>R$ 1.254 (Brazil)\r
-</td><td>4100\r
-</td><td>$1,254 (Singapore)\r
-</td></tr><tr><td>3084\r
-</td><td>1 254 $ (Canada)\r
-</td><td>1051\r
-</td><td>1 254 Sk (Slovakia)\r
-</td></tr><tr><td>4105\r
-</td><td>$1,254 (Canada)\r
-</td><td>1060\r
-</td><td>1.254 SIT (Slovenia)\r
-</td></tr><tr><td>13322\r
-</td><td>$ 1.254 (Chile)\r
-</td><td>7177\r
-</td><td>R 1,254 (South Africa)\r
-</td></tr><tr><td>9226\r
-</td><td>$ 1.254 (Colombia)\r
-</td><td>1053\r
-</td><td>1.254 kr (Sweden)\r
-</td></tr><tr><td>5130\r
-</td><td>C1.254 (Costa Rica)\r
-</td><td>2055\r
-</td><td>SFr. 1'254 (Switzerland)\r
-</td></tr><tr><td>1029\r
-</td><td>1 254 Kč (Czech Republic)\r
-</td><td>1028\r
-</td><td>NT$1,254 (Taiwan)\r
-</td></tr><tr><td>1030\r
-</td><td>kr 1.254 (Denmark)\r
-</td><td>1054\r
-</td><td>฿1,254 (Thai)\r
-</td></tr><tr><td>7178\r
-</td><td>RD$1,254 (Dominican Republic)\r
-</td><td>1055\r
-</td><td>1.254 TL (Turkey)\r
-</td></tr><tr><td>17418\r
-</td><td>C1254 (El Salvador)\r
-</td><td>2057\r
-</td><td>£1,254 (United Kingdom)\r
-</td></tr><tr><td>-2\r
-</td><td>1,254 € (European Union)\r
-</td><td>1033\r
-</td><td>$1,254 (United States)\r
-</td></tr><tr><td>-1\r
-</td><td>€ 1,254 (European Union)\r
-</td><td>14346\r
-</td><td>$U 1.254 (Uruguay)\r
-</td></tr><tr><td>1065\r
-</td><td>1,254 ريال (Farsi)\r
-</td><td>8202\r
-</td><td>Bs 1.254 (Venezuela)\r
-</td></tr><tr><td>1032\r
-</td><td>1.254 Δρχ (Greece)\r
-</td><td>1066\r
-</td><td>1,254 ₫ (Vietnamese)\r
-</td></tr></tbody></table><center><a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/SPSAdmincopyright.htm">©2003 Microsoft Corporation. All rights reserved.</a></center></body></html>
\ No newline at end of file
+<html dir="ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="assetid" content="SP01019690"><title>Regional and Language Settings</title><link rel="stylesheet" type="text/css" href="stsk09-Dateien/ont.css"><script type="text/javascript" language="Javascript" src="stsk09-Dateien/sExpCollapse.js"></script><script type="text/javascript" language="JavaScript" src="stsk09-Dateien/backgo.js"></script><script>
+ var strShow = 'Show';
+ var strHide = 'Hide';
+
+ function go(url)
+ {
+ navigate(url);
+ }
+</script><style type="text/CSS">
+ .ACICollapsed
+ {
+ display: none;
+ }
+
+ .ACECollapsed
+ {
+ display: none;
+ }
+</style><style type="text/CSS">
+ .ACICollapsed
+ {
+ display: inline;
+ }
+
+ .ACECollapsed
+ {
+ display: block;
+ }
+ </style><meta http-equiv="assetid" content="SP01019690"></head><noscript></noscript><body><table border="0" cellpadding="0" cellspacing="0" width="200"><tbody><tr><td colspan="6"><img src="stsk09-Dateien/psLogo.gif" alt="Microsoft Office SharePoint Portal Server 2003" border="0" height="31" width="202"></td></tr><tr><td><a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/sharepointhelp.htm" title="Home button"><img src="stsk09-Dateien/home.gif" alt="Home" border="0" height="32" width="69"></a><a href="javascript:myBack()" title="Back button"><img src="stsk09-Dateien/back.gif" alt="Back" border="0" height="32" width="24"></a><a href="javascript:myForward()" title="Forward button"><img src="stsk09-Dateien/forward.gif" alt="Forward" border="0" height="32" width="23"></a><a href="javascript:self.print();" title="Print button"><img src="stsk09-Dateien/print.gif" alt="Print" border="0" height="32" width="59"></a><img src="stsk09-Dateien/bar.gif" border="0" height="32" width="1200"></td></tr></tbody></table><br><h1>Regional and Language Settings</h1>
+
+
+
+
+
+
+<p>This topic lists the regional and language settings you can specify
+from the command line by using operations in Stsadm.exe and by using
+HTML Administration pages. For more information about specifying
+regional and language settings, see <a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/stsb05.htm" id="SP01019676" lcid=" ">Language Considerations</a>. For more information about the syntax for command-line operations, see <a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/stsk01.htm" id="SP01019625" lcid=" ">Command-Line Operations</a>.
+</p><p>The following types of regional and language settings are used in Microsoft Windows SharePoint Services:</p>
+
+
+<ul><li><a href="#language">Language IDs</a></li><li><a href="#locale">Locale IDs</a></li><li><a href="#Time">Time zones</a></li><li><a href="#currency">Currency IDs</a></li></ul><h2><a id="Language" name="Language">Language IDs</a></h2><p>The
+Language ID determines the language used for text on pages in the Web
+site (such as the text on the Site Settings page). The languages
+available for site creation depend on the language template packs you
+have installed to your server or server farm. Web sites based on
+Windows SharePoint Services can be created in the following languages. </p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>
+</td><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>
+</td></tr><tr><td>1025</td><td>Arabic
+</td><td>1041
+</td><td>Japanese
+</td></tr><tr><td>1028
+</td><td>Chinese - Traditional
+</td><td>1042
+</td><td>Korean</td></tr><tr><td>1029
+</td><td>Czech</td><td>1043</td><td>Dutch
+</td></tr><tr><td>1030
+</td><td>Danish
+</td><td>1044
+</td><td>Norwegian
+</td></tr><tr><td>1031
+</td><td>German
+</td><td>1045
+</td><td>Polish
+</td></tr><tr><td>1032
+</td><td>Greek
+</td><td>1046
+</td><td>Portuguese - Brazilian
+</td></tr><tr><td>1033
+</td><td>English
+</td><td>1049
+</td><td>Russian
+</td></tr><tr><td>1034
+</td><td>Spanish
+</td><td>1053
+</td><td>Swedish
+</td></tr><tr><td>1035
+</td><td>Finnish
+</td><td>1054
+</td><td>Thai
+</td></tr><tr><td>1036
+</td><td>French
+</td><td>1055
+</td><td>Turkish
+</td></tr><tr><td>1037
+</td><td>Hebrew
+</td><td>2052
+</td><td>Chinese - Simplified
+</td></tr><tr><td>1038
+</td><td>Hungarian
+</td><td>2070
+</td><td>Portuguese
+</td></tr><tr><td>1040
+</td><td>Italian
+</td><td>3076</td><td>Chinese - Hong Kong</td></tr></tbody></table><p>Windows SharePoint Services also supports input and display of text in the following languages, but not site creation.</p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>
+</td><td><b class="bterm">ID</b></td><td><b class="bterm">Language</b>
+</td></tr><tr><td>1026</td><td>Bulgarian</td><td>1048</td><td>Romanian</td></tr><tr><td>1050</td><td>Croatian
+</td><td>2074</td><td>Serbian</td></tr><tr><td>1061</td><td>Estonian
+</td><td>1051</td><td>Slovak</td></tr><tr><td>1081</td><td>Hindi with Indic PT</td><td>1060</td><td>Slovenian</td></tr><tr><td>1062</td><td>Latvian</td><td>1058</td><td>Ukrainian</td></tr><tr><td>1063</td><td>Lithuanian</td><td></td><td></td></tr></tbody></table><h2><a id="Locale" name="Locale">Locale IDs</a></h2><p>The
+Locale ID controls the numbering, sorting, calendar, and time
+formatting for the Web site. You can change the locale for a Web site
+by using the Regional Settings page. Web sites based on Windows
+SharePoint Services can be set to the following Locale IDs. </p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Locale</b></td><td><b class="bterm">ID</b></td><td><b class="bterm">Locale</b></td></tr><tr><td>1078</td><td>Afrikaans
+</td><td>1037
+</td><td>Hebrew
+</td></tr><tr><td>1052
+</td><td>Albanian
+</td><td>1081
+</td><td>Hindi
+</td></tr><tr><td>5121
+</td><td>Arabic (Algeria)
+</td><td>1038
+</td><td>Hungarian
+</td></tr><tr><td>15361
+</td><td>Arabic (Bahrain)
+</td><td>1039
+</td><td>Icelandic
+</td></tr><tr><td>3073
+</td><td>Arabic (Egypt)
+</td><td>1057
+</td><td>Indonesian
+</td></tr><tr><td>2049
+</td><td>Arabic (Iraq)
+</td><td>1040
+</td><td>Italian (Italy)
+</td></tr><tr><td>11265
+</td><td>Arabic (Jordan)
+</td><td>2064
+</td><td>Italian (Switzerland)
+</td></tr><tr><td>13313
+</td><td>Arabic (Kuwait)
+</td><td>1041
+</td><td>Japanese
+</td></tr><tr><td>12289
+</td><td>Arabic (Lebanon)
+</td><td>1099
+</td><td>Kannada
+</td></tr><tr><td>4097
+</td><td>Arabic (Libya)
+</td><td>1087
+</td><td>Kazakh
+</td></tr><tr><td>6145
+</td><td>Arabic (Morocco)
+</td><td>1111
+</td><td>Konkani
+</td></tr><tr><td>8193
+</td><td>Arabic (Oman)
+</td><td>1042
+</td><td>Korean
+</td></tr><tr><td>16385
+</td><td>Arabic (Qatar)
+</td><td>1088
+</td><td>Kyrgyz (Cyrillic)
+</td></tr><tr><td>1025
+</td><td>Arabic (Saudi Arabia)
+</td><td>1062</td><td>Latvian
+</td></tr><tr><td>10241
+</td><td>Arabic (Syria)
+</td><td>1063
+</td><td>Lithuanian
+</td></tr><tr><td>7169
+</td><td>Arabic (Tunisia)
+</td><td>1071
+</td><td>Macedonian (FYROM)
+</td></tr><tr><td>14337
+</td><td>Arabic (U.A.E.)
+</td><td>2110
+</td><td>Malay (Brunei Darussalam)
+</td></tr><tr><td>9217
+</td><td>Arabic (Yemen)
+</td><td>1086
+</td><td>Malay (Malaysia)
+</td></tr><tr><td>1067
+</td><td>Armenian
+</td><td>1102
+</td><td>Marathi
+</td></tr><tr><td>2092
+</td><td>Azeri (Cyrillic)
+</td><td>1104
+</td><td>Mongolian (Cyrillic)
+</td></tr><tr><td>1068
+</td><td>Azeri (Latin)
+</td><td>1044
+</td><td>Norwegian (Bokmal)
+</td></tr><tr><td>1069
+</td><td>Basque
+</td><td>2068
+</td><td>Norwegian (Nynorsk)
+</td></tr><tr><td>1059
+</td><td>Belarusian
+</td><td>1045
+</td><td>Polish
+</td></tr><tr><td>1026
+</td><td>Bulgarian
+</td><td>1046
+</td><td>Portuguese (Brazil)
+</td></tr><tr><td>1027
+</td><td>Catalan
+</td><td>2070
+</td><td>Portuguese (Portugal)
+</td></tr><tr><td>3076
+</td><td>Chinese (Hong Kong)
+</td><td>1094
+</td><td>Punjabi
+</td></tr><tr><td>5124
+</td><td>Chinese (Macau)
+</td><td>1048
+</td><td>Romanian
+</td></tr><tr><td>2052
+</td><td>Chinese (PRC)
+</td><td>1049
+</td><td>Russian
+</td></tr><tr><td>4100
+</td><td>Chinese (Singapore)
+</td><td>1103
+</td><td>Sanskrit
+</td></tr><tr><td>1028
+</td><td>Chinese (Taiwan)
+</td><td>3098
+</td><td>Serbian (Cyrillic)
+</td></tr><tr><td>1050
+</td><td>Croatian
+</td><td>2074
+</td><td>Serbian (Latin)
+</td></tr><tr><td>1029
+</td><td>Czech
+</td><td>1051
+</td><td>Slovak
+</td></tr><tr><td>1030
+</td><td>Danish
+</td><td>1060
+</td><td>Slovenian
+</td></tr><tr><td>1125
+</td><td>Divehi
+</td><td>11274
+</td><td>Spanish (Argentina)
+</td></tr><tr><td>2067
+</td><td>Dutch (Belgium)
+</td><td>16394
+</td><td>Spanish (Bolivia)
+</td></tr><tr><td>1043
+</td><td>Dutch (Netherlands)
+</td><td>13322
+</td><td>Spanish (Chile)
+</td></tr><tr><td>3081
+</td><td>English (Australia)
+</td><td>9226
+</td><td>Spanish (Colombia)
+</td></tr><tr><td>10249
+</td><td>English (Belize)
+</td><td>5130
+</td><td>Spanish (Costa Rica)
+</td></tr><tr><td>4105
+</td><td>English (Canada)
+</td><td>7178
+</td><td>Spanish (Dominican Republic)
+</td></tr><tr><td>9225
+</td><td>English (Caribbean)
+</td><td>12298
+</td><td>Spanish (Ecuador)
+</td></tr><tr><td>6153
+</td><td>English (Ireland)
+</td><td>17418
+</td><td>Spanish (El Salvador)
+</td></tr><tr><td>8201
+</td><td>English (Jamaica)
+</td><td>4106</td><td>Spanish (Guatemala)
+</td></tr><tr><td>5129
+</td><td>English (New Zealand)
+</td><td>18442
+</td><td>Spanish (Honduras)
+</td></tr><tr><td>13321
+</td><td>English (Philippines)
+</td><td>2058
+</td><td>Spanish (Mexico)
+</td></tr><tr><td>7177
+</td><td>English (South Africa)
+</td><td>19466
+</td><td>Spanish (Nicaragua)
+</td></tr><tr><td>11273
+</td><td>English (Trinidad)
+</td><td>6154
+</td><td>Spanish (Panama)
+</td></tr><tr><td>2057
+</td><td>English (United Kingdom)
+</td><td>15370
+</td><td>Spanish (Paraguay)
+</td></tr><tr><td>1033
+</td><td>English (United States)
+</td><td>10250
+</td><td>Spanish (Peru)
+</td></tr><tr><td>12297
+</td><td>English (Zimbabwe)
+</td><td>20490
+</td><td>Spanish (Puerto Rico)
+</td></tr><tr><td>1061
+</td><td>Estonian
+</td><td>3082
+</td><td>Spanish (Spain)
+</td></tr><tr><td>1080
+</td><td>Faeroese
+</td><td>1034
+</td><td>Spanish (Traditional)
+</td></tr><tr><td>1065
+</td><td>Farsi
+</td><td>14346
+</td><td>Spanish (Uruguay)
+</td></tr><tr><td>1035
+</td><td>Finnish
+</td><td>8202
+</td><td>Spanish (Venezuela)
+</td></tr><tr><td>2060
+</td><td>French (Belgium)
+</td><td>1089
+</td><td>Swahili
+</td></tr><tr><td>3084
+</td><td>French (Canada)
+</td><td>1053
+</td><td>Swedish
+</td></tr><tr><td>1036
+</td><td>French (France)
+</td><td>2077
+</td><td>Swedish (Finland)
+</td></tr><tr><td>5132
+</td><td>French (Luxembourg)
+</td><td>1114
+</td><td>Syriac
+</td></tr><tr><td>6156
+</td><td>French (Monaco)
+</td><td>1097
+</td><td>Tamil
+</td></tr><tr><td>4108
+</td><td>French (Switzerland)
+</td><td>1092
+</td><td>Tatar
+</td></tr><tr><td>1110
+</td><td>Galician
+</td><td>1098
+</td><td>Telugu
+</td></tr><tr><td>1079
+</td><td>Georgian
+</td><td>1054
+</td><td>Thai
+</td></tr><tr><td>3079
+</td><td>German (Austria)
+</td><td>1055
+</td><td>Turkish
+</td></tr><tr><td>1031
+</td><td>German (Germany)
+</td><td>1058
+</td><td>Ukrainian
+</td></tr><tr><td>5127
+</td><td>German (Liechtenstein)
+</td><td>1056
+</td><td>Urdu
+</td></tr><tr><td>4103
+</td><td>German (Luxembourg)
+</td><td>2115
+</td><td>Uzbek (Cyrillic)
+</td></tr><tr><td>2055
+</td><td>German (Switzerland)
+</td><td>1091
+</td><td>Uzbek (Latin)
+</td></tr><tr><td>1032
+</td><td>Greek
+</td><td>1066
+</td><td>Vietnamese
+</td></tr><tr><td>1095
+</td><td>Gujarati
+</td><td></td><td></td></tr></tbody></table><h2><a id="Time" name="Time">Time Zones</a></h2><p>Web
+sites based on Windows SharePoint Services can be set to any of the
+time zones recognized by Microsoft Windows Server 2003.</p><table><tbody><tr><td><b class="bterm">Code</b>
+</td><td><b class="bterm">Time zone</b></td><td><b class="bterm">Code</b></td><td><b class="bterm">Time zone</b></td></tr><tr><td>39</td><td>(GMT-12:00) Eniwetok, Kwajalein</td><td>59</td><td>(GMT+02:00) Helsinki, Riga, Tallinn
+</td></tr><tr><td>16</td><td>(GMT-11:00) Midway Island, Samoa
+</td><td>27</td><td>(GMT+02:00) Jerusalem 26 (GMT+03:00) Baghdad
+</td></tr><tr><td>15</td><td>(GMT-10:00) Hawaii
+</td><td>74</td><td>(GMT+03:00) Kuwait, Riyadh
+</td></tr><tr><td>14</td><td>(GMT-09:00) Alaska
+</td><td>51</td><td>(GMT+03:00) Moscow, St. Petersburg, Volgograd
+</td></tr><tr><td>13</td><td>(GMT-08:00) Pacific Time (US and Canada); Tijuana
+</td><td>56</td><td>(GMT+03:00) Nairobi
+</td></tr><tr><td>38</td><td>(GMT-07:00) Arizona
+</td><td>25</td><td>(GMT+03:30) Tehran</td></tr><tr><td>12</td><td>(GMT-07:00) Mountain Time (US and Canada)
+</td><td>24</td><td>(GMT+04:00) Abu Dhabi, Muscat
+</td></tr><tr><td>55</td><td>(GMT-06:00) Central America
+</td><td>54</td><td>(GMT+04:00) Baku, Tbilisi, Yerevan 48 (GMT+04:30) Kabul
+</td></tr><tr><td>11</td><td>(GMT-06:00) Central Time (US and Canada)
+</td><td>58</td><td>(GMT+05:00) Ekaterinburg
+</td></tr><tr><td>37</td><td>(GMT-06:00) Mexico City
+</td><td>47
+</td><td>(GMT+05:00) Islamabad, Karachi, Tashkent
+</td></tr><tr><td>36</td><td>(GMT-06:00) Saskatchewan
+</td><td>23</td><td>(GMT+05:30) Calcutta, Chennai, Mumbai, New Delhi
+</td></tr><tr><td>35</td><td>(GMT-05:00) Bogota, Lima, Quito
+</td><td>62</td><td>(GMT+05:45) Kathmandu 46 (GMT+06:00) Almaty, Novosibirsk
+</td></tr><tr><td>10</td><td>(GMT-05:00) Eastern Time (US and Canada)
+</td><td>71</td><td>(GMT+06:00) Astana, Dhaka
+</td></tr><tr><td>34
+</td><td>(GMT-05:00) Indiana (East)
+</td><td>66</td><td>(GMT+06:00) Sri Jayawardenepura
+</td></tr><tr><td>9
+</td><td>(GMT-04:00) Atlantic Time (Canada)
+</td><td>61</td><td>(GMT+06:30) Rangoon
+</td></tr><tr><td>33</td><td>(GMT-04:00) Caracas, La Paz
+</td><td>22</td><td>(GMT+07:00) Bangkok, Hanoi, Jakarta
+</td></tr><tr><td>65</td><td>(GMT-04:00) Santiago
+</td><td>64</td><td>(GMT+07:00) Krasnoyarsk
+</td></tr><tr><td>28</td><td>(GMT-03:30) Newfoundland 8 (GMT-03:00) Brasilia
+</td><td>45</td><td>(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi
+</td></tr><tr><td>32</td><td>(GMT-03:00) Buenos Aires, Georgetown
+</td><td>63</td><td>(GMT+08:00) Irkutsk, Ulaan Bataar
+</td></tr><tr><td>60</td><td>(GMT-03:00) Greenland
+</td><td>21</td><td>(GMT+08:00) Kuala Lumpur, Singapore
+</td></tr><tr><td>30</td><td>(GMT-02:00) Mid-Atlantic
+</td><td>73</td><td>(GMT+08:00) Perth 75 (GMT+08:00) Taipei
+</td></tr><tr><td>29</td><td>(GMT-01:00) Azores
+</td><td>20</td><td>(GMT+09:00) Osaka, Sapporo, Tokyo 72 (GMT+09:00) Seoul
+</td></tr><tr><td>53</td><td>(GMT-01:00) Cape Verde Is.</td><td>70</td><td>(GMT+09:00) Yakutsk 19 (GMT+09:30) Adelaide
+</td></tr><tr><td>31</td><td>(GMT) Casablanca, Monrovia
+</td><td>44</td><td>(GMT+09:30) Darwin
+</td></tr><tr><td>2</td><td>(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London
+</td><td>18</td><td>(GMT+10:00) Brisbane
+</td></tr><tr><td>4</td><td>(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
+</td><td>76</td><td>(GMT+10:00) Canberra, Melbourne, Sydney
+</td></tr><tr><td>6</td><td>(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
+</td><td>43</td><td>(GMT+10:00) Guam, Port Moresby
+</td></tr><tr><td>3</td><td>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris
+</td><td>42</td><td>(GMT+10:00) Hobart</td></tr><tr><td>57</td><td>(GMT+01:00) Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb
+</td><td>68</td><td>(GMT+10:00) Vladivostok
+</td></tr><tr><td>69</td><td>(GMT+01:00) West Central Africa
+</td><td>41</td><td>(GMT+11:00) Magadan, Solomon Is., New Caledonia
+</td></tr><tr><td>7</td><td>(GMT+02:00) Athens, Istanbul, Minsk
+</td><td>17</td><td>(GMT+12:00) Auckland, Wellington
+</td></tr><tr><td>5</td><td>(GMT+02:00) Bucharest</td><td>40
+</td><td>(GMT+12:00) Fiji, Kamchatka, Marshall Is.
+</td></tr><tr><td>49
+</td><td>(GMT+02:00) Cairo
+</td><td>67
+</td><td>(GMT+13:00) Nuku'alofa
+</td></tr><tr><td>50
+</td><td>(GMT+02:00) Harare, Pretoria
+</td><td></td><td></td></tr></tbody></table><h2><a id="Currency" name="Currency">Currency IDs</a></h2><p>Web sites based on Windows SharePoint Services can be set to use the following currencies.
+</p><table><tbody><tr><td><b class="bterm">ID</b></td><td><b class="bterm">Currency</b>
+</td><td><b class="bterm">ID</b></td><td><b class="bterm">Currency</b>
+</td></tr><tr><td>5121</td><td>1,254 .ج.د (Arabic-Algeria)
+</td><td>4106
+</td><td>Q1,254 (Guatemala)
+</td></tr><tr><td>15361
+</td><td>1,254 .ب.د (Arabic-Bahrain)
+</td><td>18442
+</td><td>L. 1254 (Honduras)
+</td></tr><tr><td>3073
+</td><td>1,254 .م.ج (Arabic-Egypt)</td><td>3076
+</td><td>HK$1,254 (Hong Kong)
+</td></tr><tr><td>2049
+</td><td>1,254 .ع.د (Arabic-Iraq)
+</td><td>1038
+</td><td>1 254 Ft (Hungary)
+</td></tr><tr><td>11265
+</td><td>1,254 .ا.د (Arabic-Jordan)
+</td><td>1081
+</td><td>रु 1,254 (India)
+</td></tr><tr><td>13313
+</td><td>1,254 .ك.د (Arabic-Kuwait)
+</td><td>6153
+</td><td>IR£1,254 (Ireland)
+</td></tr><tr><td>12289
+</td><td>1,254 .ل.ل (Arabic-Lebanon)
+</td><td>1037
+</td><td>₪1,254 (Israel)
+</td></tr><tr><td>4097
+</td><td>1,254 .ل.د (Arabic-Libya)
+</td><td>1041
+</td><td>¥1,254 (Japan)
+</td></tr><tr><td>6145
+</td><td>1,254 .م.د (Arabic-Morocco)
+</td><td>1042
+</td><td>₩1,254 (Korea)
+</td></tr><tr><td>8193
+</td><td>1,254 .ع.ر (Arabic-Oman)
+</td><td>2058
+</td><td>$1,254 (Mexico)
+</td></tr><tr><td>16385
+</td><td>1,254 .ق.ر (Arabic-Qatar)
+</td><td>5129
+</td><td>$1,254 (New Zealand)
+</td></tr><tr><td>1025
+</td><td>1,254 .س.ر (Arabic-Saudi Arabia)
+</td><td>19466
+</td><td>C$ 1254 (Nicaragua)
+</td></tr><tr><td>10241
+</td><td>1,254 .س.ل (Arabic-Syria)
+</td><td>1044
+</td><td>kr 1 254 (Norway)
+</td></tr><tr><td>7169
+</td><td>1,254 .ت.د (Arabic-Tunisia)
+</td><td>1056
+</td><td>Rs 1,254 (Pakistan)
+</td></tr><tr><td>14337
+</td><td>1,254 .إ.د (Arabic-U.A.E)
+</td><td>6154
+</td><td>B/. 1,254 (Panama)
+</td></tr><tr><td>9217
+</td><td>1,254 .ي.ر (Arabic-Yemen)
+</td><td>15370
+</td><td>Gs 1.254 (Paraguay)
+</td></tr><tr><td>11274
+</td><td>$ 1.254 (Argentina)
+</td><td>2052
+</td><td>¥1,254 (People's Republic of China)
+</td></tr><tr><td>3081
+</td><td>$1,254 (Australia)
+</td><td>10250
+</td><td>S/. 1,254 (Peru)
+</td></tr><tr><td>3079
+</td><td>öS 1.254 (Austria)
+</td><td>1045
+</td><td>1 254 zł (Poland)
+</td></tr><tr><td>16394
+</td><td>$b 1.254 (Bolivia)
+</td><td>1049
+</td><td>1 254р. (Russia)
+</td></tr><tr><td>1046
+</td><td>R$ 1.254 (Brazil)
+</td><td>4100
+</td><td>$1,254 (Singapore)
+</td></tr><tr><td>3084
+</td><td>1 254 $ (Canada)
+</td><td>1051
+</td><td>1 254 Sk (Slovakia)
+</td></tr><tr><td>4105
+</td><td>$1,254 (Canada)
+</td><td>1060
+</td><td>1.254 SIT (Slovenia)
+</td></tr><tr><td>13322
+</td><td>$ 1.254 (Chile)
+</td><td>7177
+</td><td>R 1,254 (South Africa)
+</td></tr><tr><td>9226
+</td><td>$ 1.254 (Colombia)
+</td><td>1053
+</td><td>1.254 kr (Sweden)
+</td></tr><tr><td>5130
+</td><td>C1.254 (Costa Rica)
+</td><td>2055
+</td><td>SFr. 1'254 (Switzerland)
+</td></tr><tr><td>1029
+</td><td>1 254 Kč (Czech Republic)
+</td><td>1028
+</td><td>NT$1,254 (Taiwan)
+</td></tr><tr><td>1030
+</td><td>kr 1.254 (Denmark)
+</td><td>1054
+</td><td>฿1,254 (Thai)
+</td></tr><tr><td>7178
+</td><td>RD$1,254 (Dominican Republic)
+</td><td>1055
+</td><td>1.254 TL (Turkey)
+</td></tr><tr><td>17418
+</td><td>C1254 (El Salvador)
+</td><td>2057
+</td><td>£1,254 (United Kingdom)
+</td></tr><tr><td>-2
+</td><td>1,254 € (European Union)
+</td><td>1033
+</td><td>$1,254 (United States)
+</td></tr><tr><td>-1
+</td><td>€ 1,254 (European Union)
+</td><td>14346
+</td><td>$U 1.254 (Uruguay)
+</td></tr><tr><td>1065
+</td><td>1,254 ريال (Farsi)
+</td><td>8202
+</td><td>Bs 1.254 (Venezuela)
+</td></tr><tr><td>1032
+</td><td>1.254 Δρχ (Greece)
+</td><td>1066
+</td><td>1,254 ₫ (Vietnamese)
+</td></tr></tbody></table><center><a href="http://www.greatwesthealthcare.com/_vti_bin/help/1033/sps/html/SPSAdmincopyright.htm">©2003 Microsoft Corporation. All rights reserved.</a></center></body></html>
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Visual Leak Detector - CRT and MFC IAT Patch Functions Header\r
-// Copyright (c) 2009 Dan Moulding\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU Lesser General Public\r
-// License along with this library; if not, write to the Free Software\r
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\r
-//\r
-// See COPYING.txt for the full terms of the GNU Lesser General Public License.\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-#pragma once\r
-\r
-#ifndef VLDBUILD\r
-#error \\r
-"This header should only be included by Visual Leak Detector when building it from source. \\r
-Applications should never include this header."\r
-#endif\r
-\r
-#include "vldint.h"\r
-extern __declspec(dllexport) VisualLeakDetector vld;\r
-\r
-#define TEMPLATE_HEADER \\r
-template<wchar_t const *crtddll, wchar_t const *mfcddll, wchar_t const *mfcuddll,\\r
- char const *crtd_vector_new_name, char const *crtd_vector_new_dbg_name,\\r
- char const *crtd_scalar_new_name, char const *crtd_scalar_new_dbg_name,\\r
- int mfcd_vector_new_ordinal, int mfcd_vector_new_dbg_4p_ordinal, int mfcd_vector_new_dbg_3p_ordinal,\\r
- int mfcd_scalar_new_ordinal, int mfcd_scalar_new_dbg_4p_ordinal, int mfcd_scalar_new_dbg_3p_ordinal,\\r
- int mfcud_vector_new_ordinal, int mfcud_vector_new_dbg_4p_ordinal, int mfcud_vector_new_dbg_3p_ordinal,\\r
- int mfcud_scalar_new_ordinal, int mfcud_scalar_new_dbg_4p_ordinal, int mfcud_scalar_new_dbg_3p_ordinal>\r
-\r
-#define TEMPLATE_ARGS \\r
- crtddll, mfcddll, mfcuddll,\\r
- crtd_vector_new_name, crtd_vector_new_dbg_name,\\r
- crtd_scalar_new_name, crtd_scalar_new_dbg_name,\\r
- mfcd_vector_new_ordinal, mfcd_vector_new_dbg_4p_ordinal, mfcd_vector_new_dbg_3p_ordinal,\\r
- mfcd_scalar_new_ordinal, mfcd_scalar_new_dbg_4p_ordinal, mfcd_scalar_new_dbg_3p_ordinal,\\r
- mfcud_vector_new_ordinal, mfcud_vector_new_dbg_4p_ordinal, mfcud_vector_new_dbg_3p_ordinal,\\r
- mfcud_scalar_new_ordinal, mfcud_scalar_new_dbg_4p_ordinal, mfcud_scalar_new_dbg_3p_ordinal\r
-\r
-TEMPLATE_HEADER\r
-class CrtMfcPatch\r
-{\r
-public:\r
- static void* __cdecl crtd__calloc_dbg (size_t num, size_t size, int type, char const *file, int line);\r
- static void* __cdecl crtd__malloc_dbg (size_t size, int type, const char *file, int line);\r
- static void* __cdecl crtd__realloc_dbg (void *mem, size_t size, int type, char const *file, int line);\r
- static void* __cdecl crtd__scalar_new_dbg (size_t size, int type, char const *file, int line);\r
- static void* __cdecl crtd__vector_new_dbg (size_t size, int type, char const *file, int line);\r
- static void* __cdecl crtd_calloc (size_t num, size_t size);\r
- static void* __cdecl crtd_malloc (size_t size);\r
- static void* __cdecl crtd_realloc (void *mem, size_t size);\r
- static void* __cdecl crtd_scalar_new (size_t size);\r
- static void* __cdecl crtd_vector_new (size_t size);\r
-\r
- template<char const *procname>\r
- static void* __cdecl crtd_new_dbg (SIZE_T fp, size_t size, int type, char const *file, int line);\r
- template<char const *procname>\r
- static void* __cdecl crtd_new (SIZE_T fp, size_t size);\r
-\r
- static void* __cdecl mfcd_vector_new (size_t size);\r
- static void* __cdecl mfcd__vector_new_dbg_4p (size_t size, int type, char const *file, int line);\r
- static void* __cdecl mfcd__vector_new_dbg_3p (size_t size, char const *file, int line);\r
- static void* __cdecl mfcd_scalar_new (size_t size);\r
- static void* __cdecl mfcd__scalar_new_dbg_4p (size_t size, int type, char const *file, int line);\r
- static void* __cdecl mfcd__scalar_new_dbg_3p (size_t size, char const *file, int line);\r
- static void* __cdecl mfcud_vector_new (size_t size);\r
- static void* __cdecl mfcud__vector_new_dbg_4p (size_t size, int type, char const *file, int line);\r
- static void* __cdecl mfcud__vector_new_dbg_3p (size_t size, char const *file, int line);\r
- static void* __cdecl mfcud_scalar_new (size_t size);\r
- static void* __cdecl mfcud__scalar_new_dbg_4p (size_t size, int type, char const *file, int line);\r
- static void* __cdecl mfcud__scalar_new_dbg_3p (size_t size, char const *file, int line);\r
-\r
- template<wchar_t const *mfcdll, int ordinal>\r
- static void* __cdecl mfcd_new_dbg (SIZE_T fp, size_t size, int type, char const *file, int line);\r
- template<wchar_t const *mfcdll, int ordinal>\r
- static void* __cdecl mfcd_new_dbg (SIZE_T fp, size_t size, char const *file, int line);\r
- template<wchar_t const *mfcdll, int ordinal>\r
- static void* __cdecl mfcd_new (SIZE_T fp, size_t size);\r
-};\r
-\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Visual Studio DLLs\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// crtd__calloc_dbg - Calls to _calloc_dbg from msvcrXXd.dll are patched\r
-// through to this function.\r
-//\r
-// - mem (IN): Pointer to the memory block to be reallocated.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by _calloc_dbg.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__calloc_dbg (size_t num,\r
- size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- static _calloc_dbg_t pcrtxxd__calloc_dbg = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd__calloc_dbg == NULL) {\r
- // This is the first call to this function. Link to the real\r
- // _calloc_dbg.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd__calloc_dbg = (_calloc_dbg_t)GetProcAddress(msvcrxxd, "_calloc_dbg");\r
- }\r
-\r
- return vld.__calloc_dbg(pcrtxxd__calloc_dbg, fp, num, size, type, file, line);\r
-}\r
-\r
-// crtd__malloc_dbg - Calls to _malloc_dbg from msvcrXXd.dll are patched\r
-// through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by _malloc_dbg.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__malloc_dbg (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- static _malloc_dbg_t pcrtxxd__malloc_dbg = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd__malloc_dbg == NULL) {\r
- // This is the first call to this function. Link to the real\r
- // _malloc_dbg.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd__malloc_dbg = (_malloc_dbg_t)GetProcAddress(msvcrxxd, "_malloc_dbg");\r
- }\r
-\r
- return vld.__malloc_dbg(pcrtxxd__malloc_dbg, fp, size, type, file, line);\r
-}\r
-\r
-// crtd__realloc_dbg - Calls to _realloc_dbg from msvcrXXd.dll are patched\r
-// through to this function.\r
-//\r
-// - mem (IN): Pointer to the memory block to be reallocated.\r
-//\r
-// - size (IN): The size of the memory block to reallocate.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be reallocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by _realloc_dbg.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__realloc_dbg (void *mem,\r
- size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- static _realloc_dbg_t pcrtxxd__realloc_dbg = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd__realloc_dbg == NULL) {\r
- // This is the first call to this function. Link to the real\r
- // _realloc_dbg.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd__realloc_dbg = (_realloc_dbg_t)GetProcAddress(msvcrxxd, "_realloc_dbg");\r
- }\r
-\r
- return vld.__realloc_dbg(pcrtxxd__realloc_dbg, fp, mem, size, type, file, line);\r
-}\r
-\r
-// crtd__scalar_new_dbg - Calls to the CRT's debug scalar new operator from\r
-// msvcrXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT debug scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__scalar_new_dbg (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return crtd_new_dbg<crtd_scalar_new_dbg_name>(fp, size, type, file, line);\r
-}\r
-\r
-// crtd__vector_new_dbg - Calls to the CRT's debug vector new operator from\r
-// msvcrXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT debug vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__vector_new_dbg (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return crtd_new_dbg<crtd_vector_new_dbg_name>(fp, size, type, file, line);\r
-}\r
-\r
-// crtd_calloc - Calls to calloc from msvcrXXd.dll are patched through to\r
-// this function.\r
-//\r
-// - dll (IN): The name of the dll\r
-//\r
-// - num (IN): The number of blocks, of size 'size', to be allocated.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the valued returned from calloc.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_calloc (size_t num, size_t size)\r
-{\r
- static calloc_t pcrtxxd_calloc = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd_calloc == NULL) {\r
- // This is the first call to this function. Link to the real malloc.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd_calloc = (calloc_t)GetProcAddress(msvcrxxd, "calloc");\r
- }\r
-\r
- return vld._calloc(pcrtxxd_calloc, fp, num, size);\r
-}\r
-\r
-// crtd_malloc - Calls to malloc from msvcrXXd.dll are patched through to\r
-// this function.\r
-//\r
-// - dll (IN): The name of the dll\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the valued returned from malloc.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_malloc (size_t size)\r
-{\r
- static malloc_t pcrtxxd_malloc = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd_malloc == NULL) {\r
- // This is the first call to this function. Link to the real malloc.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd_malloc = (malloc_t)GetProcAddress(msvcrxxd, "malloc");\r
- }\r
-\r
- return vld._malloc(pcrtxxd_malloc, fp, size);\r
-}\r
-\r
-// crtd_realloc - Calls to realloc from msvcrXXd.dll are patched through to\r
-// this function.\r
-//\r
-// - dll (IN): The name of the dll\r
-//\r
-// - mem (IN): Pointer to the memory block to reallocate.\r
-//\r
-// - size (IN): Size of the memory block to reallocate.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned from realloc.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_realloc (void *mem, size_t size)\r
-{\r
- static realloc_t pcrtxxd_realloc = NULL;\r
-\r
- SIZE_T fp;\r
- HMODULE msvcrxxd;\r
-\r
- FRAMEPOINTER(fp);\r
-\r
- if (pcrtxxd_realloc == NULL) {\r
- // This is the first call to this function. Link to the real realloc.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd_realloc = (realloc_t)GetProcAddress(msvcrxxd, "realloc");\r
- }\r
-\r
- return vld._realloc(pcrtxxd_realloc, fp, mem, size);\r
-}\r
-\r
-// crtd_scalar_new - Calls to the CRT's scalar new operator from msvcrXXd.dll\r
-// are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_scalar_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return crtd_new<crtd_scalar_new_name>(fp, size);\r
-}\r
-\r
-// crtd_vector_new - Calls to the CRT's vector new operator from msvcrXXd.dll\r
-// are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_vector_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return crtd_new<crtd_vector_new_name>(fp, size);\r
-}\r
-\r
-// crtd_new_dbg - A template function for implementation of patch functions to\r
-// the CRT's debug new operator from msvcrXXd.dll\r
-//\r
-// - procname (IN): The debug new operator's name\r
-//\r
-// - fp (IN): Frame pointer from the call that initiated this allocation.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The CRT "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT debug new operator.\r
-//\r
-TEMPLATE_HEADER\r
-template<char const *procname>\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_new_dbg (SIZE_T fp,\r
- size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- static new_dbg_crt_t pcrtxxd_new_dbg = NULL;\r
-\r
- HMODULE msvcrxxd;\r
-\r
- if (pcrtxxd_new_dbg == NULL) {\r
- // This is the first call to this function. Link to the real CRT debug\r
- // new operator.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd_new_dbg = (new_dbg_crt_t)GetProcAddress(msvcrxxd, procname);\r
- }\r
-\r
- return vld.new_dbg_crt(pcrtxxd_new_dbg, fp, size, type, file, line);\r
-}\r
-\r
-// crt_new - A template function for implementing patch functions to the\r
-// CRT's new operator from msvcrXXd.dll\r
-//\r
-// - dll (IN): The name of the dll\r
-//\r
-// - procname (IN): The debug new operator's name\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the CRT new operator.\r
-//\r
-TEMPLATE_HEADER\r
-template<char const *procname>\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_new (SIZE_T fp, size_t size)\r
-{\r
- static new_t pcrtxxd_scalar_new = NULL;\r
-\r
- HMODULE msvcrxxd;\r
-\r
- if (pcrtxxd_scalar_new == NULL) {\r
- // This is the first call to this function. Link to the real CRT new\r
- // operator.\r
- msvcrxxd = GetModuleHandle(crtddll);\r
- pcrtxxd_scalar_new = (new_t)GetProcAddress(msvcrxxd, procname);\r
- }\r
-\r
- return vld._new(pcrtxxd_scalar_new, fp, size);\r
-}\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// MFC DLLs\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// mfcd__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from\r
-// mfcXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__scalar_new_dbg_4p (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcddll, mfcd_scalar_new_dbg_4p_ordinal>\r
- (fp, size, type, file, line);\r
-}\r
-\r
-// mfcd__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from\r
-// mfcXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__scalar_new_dbg_3p (size_t size,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcddll, mfcd_scalar_new_dbg_3p_ordinal>\r
- (fp, size, file, line);\r
-}\r
-\r
-// mfcd__vector_new_dbg_4p - Calls to the MFC debug vector new operator from\r
-// mfcXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__vector_new_dbg_4p (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcddll, mfcd_vector_new_dbg_4p_ordinal>\r
- (fp, size, type, file, line);\r
-}\r
-\r
-// mfcd__vector_new_dbg_3p - Calls to the MFC debug vector new operator from\r
-// mfcXXd.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__vector_new_dbg_3p (size_t size,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcddll, mfcd_vector_new_dbg_3p_ordinal>\r
- (fp, size, file, line);\r
-}\r
-\r
-// mfcd_scalar_new - Calls to the MFC scalar new operator from mfcXXd.dll are\r
-// patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_scalar_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new<mfcddll, mfcd_scalar_new_ordinal>(fp, size);\r
-}\r
-\r
-// mfcd_vector_new - Calls to the MFC vector new operator from mfcXXd.dll are\r
-// patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_vector_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new<mfcddll, mfcd_vector_new_ordinal>(fp, size);\r
-}\r
-\r
-// mfcud__scalar_new_dbg_4p - Calls to the MFC debug scalar new operator from\r
-// mfcXXud.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__scalar_new_dbg_4p (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcuddll, mfcud_scalar_new_dbg_4p_ordinal>\r
- (fp, size, type, file, line);\r
-}\r
-\r
-// mfcud__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from\r
-// mfcXXud.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__scalar_new_dbg_3p (size_t size,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcuddll, mfcud_scalar_new_dbg_3p_ordinal>\r
- (fp, size, file, line);\r
-}\r
-\r
-// mfcud__vector_new_dbg_4p - Calls to the MFC debug vector new operator from\r
-// mfcXXud.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - type (IN): The "use type" of the block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__vector_new_dbg_4p (size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcuddll, mfcud_vector_new_dbg_4p_ordinal>\r
- (fp, size, type, file, line);\r
-}\r
-\r
-// mfcud__vector_new_dbg_3p - Calls to the MFC debug vector new operator from\r
-// mfcXXud.dll are patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__vector_new_dbg_3p (size_t size,\r
- char const *file,\r
- int line)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new_dbg<mfcuddll, mfcud_vector_new_dbg_3p_ordinal>\r
- (fp, size, file, line);\r
-}\r
-\r
-// mfcud_scalar_new - Calls to the MFC scalar new operator from mfcXXud.dll are\r
-// patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC scalar new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud_scalar_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new<mfcuddll, mfcud_scalar_new_ordinal>(fp, size);\r
-}\r
-\r
-// mfcud_vector_new - Calls to the MFC vector new operator from mfcXXud.dll are\r
-// patched through to this function.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC vector new operator.\r
-//\r
-TEMPLATE_HEADER\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud_vector_new (size_t size)\r
-{\r
- SIZE_T fp;\r
- FRAMEPOINTER(fp);\r
-\r
- return mfcd_new<mfcuddll, mfcud_vector_new_ordinal>(fp, size);\r
-}\r
-\r
-// mfcd_new_dbg - A generic function for implementing patch functions to the MFC\r
-// debug new operators:\r
-// void* __cdecl operator new[](size_t size, int type, char const *file, int line)\r
-// void* __cdecl operator new(size_t size, int type, char const *file, int line)\r
-//\r
-// - mfcdll (IN): The name of the MFC DLL\r
-//\r
-// - ordinal (IN): The debug new operator's ordinal value\r
-//\r
-// - type (IN): The "use type" of the block to be allocated.\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug new operator.\r
-//\r
-TEMPLATE_HEADER\r
-template<wchar_t const *mfcdll, int ordinal>\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new_dbg (SIZE_T fp,\r
- size_t size,\r
- int type,\r
- char const *file,\r
- int line)\r
-{\r
- static new_dbg_crt_t pmfcxxd__new_dbg = NULL;\r
-\r
- HMODULE mfcxxd;\r
-\r
- if (pmfcxxd__new_dbg == NULL) {\r
- // This is the first call to this function. Link to the real MFC debug\r
- // new operator.\r
- mfcxxd = GetModuleHandle(mfcdll);\r
- pmfcxxd__new_dbg = (new_dbg_crt_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);\r
- }\r
-\r
- return vld.new_dbg_mfc(pmfcxxd__new_dbg, fp, size, type, file, line);\r
-}\r
-\r
-// mfcd_new_dbg - A generic function for implementing patch functions to the MFC\r
-// debug new operators:\r
-// void* __cdecl operator new[](size_t size, char const *file, int line)\r
-// void* __cdecl operator new(size_t size, char const *file, int line)\r
-//\r
-// - mfcdll (IN): The name of the MFC DLL\r
-//\r
-// - ordinal (IN): The debug new operator's ordinal value\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// - file (IN): The name of the file from which this function is being called.\r
-//\r
-// - line (IN): The line number, in the above file, at which this function is\r
-// being called.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC debug new operator.\r
-//\r
-TEMPLATE_HEADER\r
-template<wchar_t const *mfcdll, int ordinal>\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new_dbg (SIZE_T fp,\r
- size_t size,\r
- char const *file,\r
- int line)\r
-{\r
- static new_dbg_mfc_t pmfcxxd__new_dbg = NULL;\r
-\r
- HMODULE mfcxxd;\r
-\r
- if (pmfcxxd__new_dbg == NULL) {\r
- // This is the first call to this function. Link to the real MFC debug\r
- // new operator.\r
- mfcxxd = GetModuleHandle(mfcdll);\r
- pmfcxxd__new_dbg = (new_dbg_mfc_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);\r
- }\r
-\r
- return vld.new_dbg_mfc(pmfcxxd__new_dbg, fp, size, file, line);\r
-}\r
-\r
-// mfcd_new - A generic function for implementing patch functions to the MFC new\r
-// operators.\r
-//\r
-// - mfcdll (IN): The name of the MFC DLL\r
-//\r
-// - ordinal (IN): The new operator's ordinal value\r
-//\r
-// - size (IN): The size, in bytes, of the memory block to be allocated.\r
-//\r
-// Return Value:\r
-//\r
-// Returns the value returned by the MFC new operator.\r
-//\r
-TEMPLATE_HEADER\r
-template<wchar_t const *mfcdll, int ordinal>\r
-void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new (SIZE_T fp, size_t size)\r
-{\r
- static new_t pmfcxxd_new = NULL;\r
-\r
- HMODULE mfcxxd;\r
-\r
- if (pmfcxxd_new == NULL) {\r
- // This is the first call to this function. Link to the real CRT new\r
- // operator.\r
- mfcxxd = GetModuleHandle(mfcdll);\r
- pmfcxxd_new = (new_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);\r
- }\r
-\r
- return vld._new(pmfcxxd_new, fp, size);\r
-}\r
-\r
-#undef TEMPLATE_HEADER\r
-#undef TEMPLATE_ARGS\r
-\r
-const extern char scalar_new_dbg_name[] = "??2@YAPAXIHPBDH@Z";\r
-const extern char vector_new_dbg_name[] = "??_U@YAPAXIHPBDH@Z";\r
-const extern char scalar_new_name[] = "??2@YAPAXI@Z";\r
-const extern char vector_new_name[] = "??_U@YAPAXI@Z";\r
-const extern wchar_t msvcrtd_dll[] = L"msvcrtd.dll";\r
-const extern wchar_t mfc42d_dll[] = L"mfc42d.dll";\r
-const extern wchar_t mfc42ud_dll[] = L"mfc42ud.dll";\r
-const extern wchar_t msvcr70d_dll[] = L"msvcr70d.dll";\r
-const extern wchar_t mfc70d_dll[] = L"mfc70d.dll";\r
-const extern wchar_t mfc70ud_dll[] = L"mfc70ud.dll";\r
-const extern wchar_t msvcr71d_dll[] = L"msvcr71d.dll";\r
-const extern wchar_t mfc71d_dll[] = L"mfc71d.dll";\r
-const extern wchar_t mfc71ud_dll[] = L"mfc71ud.dll";\r
-const extern wchar_t msvcr80d_dll[] = L"msvcr80d.dll";\r
-const extern wchar_t mfc80d_dll[] = L"mfc80d.dll";\r
-const extern wchar_t mfc80ud_dll[] = L"mfc80ud.dll";\r
-const extern wchar_t msvcr90d_dll[] = L"msvcr90d.dll";\r
-const extern wchar_t mfc90d_dll[] = L"mfc90d.dll";\r
-const extern wchar_t mfc90ud_dll[] = L"mfc90ud.dll";\r
-const extern wchar_t msvcr100d_dll[] = L"msvcr100d.dll";\r
-const extern wchar_t mfc100d_dll[] = L"mfc100d.dll";\r
-const extern wchar_t mfc100ud_dll[] = L"mfc100ud.dll";\r
-\r
-// Visual Studio 6.0\r
-typedef CrtMfcPatch<msvcrtd_dll, mfc42d_dll, mfc42ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 0, 0, 0, 711, 712, 714,\r
- 0, 0, 0, 711, 712, 714>\r
- VS60;\r
-// Visual Studio .NET 2002\r
-typedef CrtMfcPatch<msvcr70d_dll, mfc70d_dll, mfc70ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 257, 258, 259, 832, 833, 834,\r
- 258, 259, 260, 833, 834, 835>\r
- VS70;\r
-// Visual Studio .NET 2003\r
-typedef CrtMfcPatch<msvcr71d_dll, mfc71d_dll, mfc71ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 267, 268, 269, 893, 894, 895,\r
- 267, 268, 269, 893, 894, 895>\r
- VS71;\r
-// Visual Studio 2005\r
-typedef CrtMfcPatch<msvcr80d_dll, mfc80d_dll, mfc80ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 267, 268, 269, 893, 894, 895,\r
- 267, 268, 269, 893, 894, 895>\r
- VS80;\r
-// Visual Studio 2008\r
-typedef CrtMfcPatch<msvcr90d_dll, mfc90d_dll, mfc90ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 267, 268, 269, 931, 932, 933,\r
- 267, 268, 269, 935, 936, 937>\r
- VS90;\r
-\r
-// Visual Studio 2010\r
-typedef CrtMfcPatch<msvcr100d_dll, mfc100d_dll, mfc100ud_dll,\r
- vector_new_name, vector_new_dbg_name,\r
- scalar_new_name, scalar_new_dbg_name,\r
- 267, 268, 269, 1405, 1406, 1407,\r
- 267, 268, 269, 1412, 1413, 1414>\r
- VS100;
\ No newline at end of file
+////////////////////////////////////////////////////////////////////////////////
+//
+// Visual Leak Detector - CRT and MFC IAT Patch Functions Header
+// Copyright (c) 2009 Dan Moulding
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+// See COPYING.txt for the full terms of the GNU Lesser General Public License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+#ifndef VLDBUILD
+#error \
+"This header should only be included by Visual Leak Detector when building it from source. \
+Applications should never include this header."
+#endif
+
+#include "vldint.h"
+extern __declspec(dllexport) VisualLeakDetector vld;
+
+#define TEMPLATE_HEADER \
+template<wchar_t const *crtddll, wchar_t const *mfcddll, wchar_t const *mfcuddll,\
+ char const *crtd_vector_new_name, char const *crtd_vector_new_dbg_name,\
+ char const *crtd_scalar_new_name, char const *crtd_scalar_new_dbg_name,\
+ int mfcd_vector_new_ordinal, int mfcd_vector_new_dbg_4p_ordinal, int mfcd_vector_new_dbg_3p_ordinal,\
+ int mfcd_scalar_new_ordinal, int mfcd_scalar_new_dbg_4p_ordinal, int mfcd_scalar_new_dbg_3p_ordinal,\
+ int mfcud_vector_new_ordinal, int mfcud_vector_new_dbg_4p_ordinal, int mfcud_vector_new_dbg_3p_ordinal,\
+ int mfcud_scalar_new_ordinal, int mfcud_scalar_new_dbg_4p_ordinal, int mfcud_scalar_new_dbg_3p_ordinal>
+
+#define TEMPLATE_ARGS \
+ crtddll, mfcddll, mfcuddll,\
+ crtd_vector_new_name, crtd_vector_new_dbg_name,\
+ crtd_scalar_new_name, crtd_scalar_new_dbg_name,\
+ mfcd_vector_new_ordinal, mfcd_vector_new_dbg_4p_ordinal, mfcd_vector_new_dbg_3p_ordinal,\
+ mfcd_scalar_new_ordinal, mfcd_scalar_new_dbg_4p_ordinal, mfcd_scalar_new_dbg_3p_ordinal,\
+ mfcud_vector_new_ordinal, mfcud_vector_new_dbg_4p_ordinal, mfcud_vector_new_dbg_3p_ordinal,\
+ mfcud_scalar_new_ordinal, mfcud_scalar_new_dbg_4p_ordinal, mfcud_scalar_new_dbg_3p_ordinal
+
+TEMPLATE_HEADER
+class CrtMfcPatch
+{
+public:
+ static void* __cdecl crtd__calloc_dbg (size_t num, size_t size, int type, char const *file, int line);
+ static void* __cdecl crtd__malloc_dbg (size_t size, int type, const char *file, int line);
+ static void* __cdecl crtd__realloc_dbg (void *mem, size_t size, int type, char const *file, int line);
+ static void* __cdecl crtd__scalar_new_dbg (size_t size, int type, char const *file, int line);
+ static void* __cdecl crtd__vector_new_dbg (size_t size, int type, char const *file, int line);
+ static void* __cdecl crtd_calloc (size_t num, size_t size);
+ static void* __cdecl crtd_malloc (size_t size);
+ static void* __cdecl crtd_realloc (void *mem, size_t size);
+ static void* __cdecl crtd_scalar_new (size_t size);
+ static void* __cdecl crtd_vector_new (size_t size);
+
+ template<char const *procname>
+ static void* __cdecl crtd_new_dbg (SIZE_T fp, size_t size, int type, char const *file, int line);
+ template<char const *procname>
+ static void* __cdecl crtd_new (SIZE_T fp, size_t size);
+
+ static void* __cdecl mfcd_vector_new (size_t size);
+ static void* __cdecl mfcd__vector_new_dbg_4p (size_t size, int type, char const *file, int line);
+ static void* __cdecl mfcd__vector_new_dbg_3p (size_t size, char const *file, int line);
+ static void* __cdecl mfcd_scalar_new (size_t size);
+ static void* __cdecl mfcd__scalar_new_dbg_4p (size_t size, int type, char const *file, int line);
+ static void* __cdecl mfcd__scalar_new_dbg_3p (size_t size, char const *file, int line);
+ static void* __cdecl mfcud_vector_new (size_t size);
+ static void* __cdecl mfcud__vector_new_dbg_4p (size_t size, int type, char const *file, int line);
+ static void* __cdecl mfcud__vector_new_dbg_3p (size_t size, char const *file, int line);
+ static void* __cdecl mfcud_scalar_new (size_t size);
+ static void* __cdecl mfcud__scalar_new_dbg_4p (size_t size, int type, char const *file, int line);
+ static void* __cdecl mfcud__scalar_new_dbg_3p (size_t size, char const *file, int line);
+
+ template<wchar_t const *mfcdll, int ordinal>
+ static void* __cdecl mfcd_new_dbg (SIZE_T fp, size_t size, int type, char const *file, int line);
+ template<wchar_t const *mfcdll, int ordinal>
+ static void* __cdecl mfcd_new_dbg (SIZE_T fp, size_t size, char const *file, int line);
+ template<wchar_t const *mfcdll, int ordinal>
+ static void* __cdecl mfcd_new (SIZE_T fp, size_t size);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Visual Studio DLLs
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// crtd__calloc_dbg - Calls to _calloc_dbg from msvcrXXd.dll are patched
+// through to this function.
+//
+// - mem (IN): Pointer to the memory block to be reallocated.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The CRT "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by _calloc_dbg.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__calloc_dbg (size_t num,
+ size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ static _calloc_dbg_t pcrtxxd__calloc_dbg = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd__calloc_dbg == NULL) {
+ // This is the first call to this function. Link to the real
+ // _calloc_dbg.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd__calloc_dbg = (_calloc_dbg_t)GetProcAddress(msvcrxxd, "_calloc_dbg");
+ }
+
+ return vld.__calloc_dbg(pcrtxxd__calloc_dbg, fp, num, size, type, file, line);
+}
+
+// crtd__malloc_dbg - Calls to _malloc_dbg from msvcrXXd.dll are patched
+// through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The CRT "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by _malloc_dbg.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__malloc_dbg (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ static _malloc_dbg_t pcrtxxd__malloc_dbg = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd__malloc_dbg == NULL) {
+ // This is the first call to this function. Link to the real
+ // _malloc_dbg.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd__malloc_dbg = (_malloc_dbg_t)GetProcAddress(msvcrxxd, "_malloc_dbg");
+ }
+
+ return vld.__malloc_dbg(pcrtxxd__malloc_dbg, fp, size, type, file, line);
+}
+
+// crtd__realloc_dbg - Calls to _realloc_dbg from msvcrXXd.dll are patched
+// through to this function.
+//
+// - mem (IN): Pointer to the memory block to be reallocated.
+//
+// - size (IN): The size of the memory block to reallocate.
+//
+// - type (IN): The CRT "use type" of the block to be reallocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by _realloc_dbg.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__realloc_dbg (void *mem,
+ size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ static _realloc_dbg_t pcrtxxd__realloc_dbg = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd__realloc_dbg == NULL) {
+ // This is the first call to this function. Link to the real
+ // _realloc_dbg.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd__realloc_dbg = (_realloc_dbg_t)GetProcAddress(msvcrxxd, "_realloc_dbg");
+ }
+
+ return vld.__realloc_dbg(pcrtxxd__realloc_dbg, fp, mem, size, type, file, line);
+}
+
+// crtd__scalar_new_dbg - Calls to the CRT's debug scalar new operator from
+// msvcrXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The CRT "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT debug scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__scalar_new_dbg (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return crtd_new_dbg<crtd_scalar_new_dbg_name>(fp, size, type, file, line);
+}
+
+// crtd__vector_new_dbg - Calls to the CRT's debug vector new operator from
+// msvcrXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The CRT "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT debug vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd__vector_new_dbg (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return crtd_new_dbg<crtd_vector_new_dbg_name>(fp, size, type, file, line);
+}
+
+// crtd_calloc - Calls to calloc from msvcrXXd.dll are patched through to
+// this function.
+//
+// - dll (IN): The name of the dll
+//
+// - num (IN): The number of blocks, of size 'size', to be allocated.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the valued returned from calloc.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_calloc (size_t num, size_t size)
+{
+ static calloc_t pcrtxxd_calloc = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd_calloc == NULL) {
+ // This is the first call to this function. Link to the real malloc.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd_calloc = (calloc_t)GetProcAddress(msvcrxxd, "calloc");
+ }
+
+ return vld._calloc(pcrtxxd_calloc, fp, num, size);
+}
+
+// crtd_malloc - Calls to malloc from msvcrXXd.dll are patched through to
+// this function.
+//
+// - dll (IN): The name of the dll
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the valued returned from malloc.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_malloc (size_t size)
+{
+ static malloc_t pcrtxxd_malloc = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd_malloc == NULL) {
+ // This is the first call to this function. Link to the real malloc.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd_malloc = (malloc_t)GetProcAddress(msvcrxxd, "malloc");
+ }
+
+ return vld._malloc(pcrtxxd_malloc, fp, size);
+}
+
+// crtd_realloc - Calls to realloc from msvcrXXd.dll are patched through to
+// this function.
+//
+// - dll (IN): The name of the dll
+//
+// - mem (IN): Pointer to the memory block to reallocate.
+//
+// - size (IN): Size of the memory block to reallocate.
+//
+// Return Value:
+//
+// Returns the value returned from realloc.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_realloc (void *mem, size_t size)
+{
+ static realloc_t pcrtxxd_realloc = NULL;
+
+ SIZE_T fp;
+ HMODULE msvcrxxd;
+
+ FRAMEPOINTER(fp);
+
+ if (pcrtxxd_realloc == NULL) {
+ // This is the first call to this function. Link to the real realloc.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd_realloc = (realloc_t)GetProcAddress(msvcrxxd, "realloc");
+ }
+
+ return vld._realloc(pcrtxxd_realloc, fp, mem, size);
+}
+
+// crtd_scalar_new - Calls to the CRT's scalar new operator from msvcrXXd.dll
+// are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_scalar_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return crtd_new<crtd_scalar_new_name>(fp, size);
+}
+
+// crtd_vector_new - Calls to the CRT's vector new operator from msvcrXXd.dll
+// are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_vector_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return crtd_new<crtd_vector_new_name>(fp, size);
+}
+
+// crtd_new_dbg - A template function for implementation of patch functions to
+// the CRT's debug new operator from msvcrXXd.dll
+//
+// - procname (IN): The debug new operator's name
+//
+// - fp (IN): Frame pointer from the call that initiated this allocation.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The CRT "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT debug new operator.
+//
+TEMPLATE_HEADER
+template<char const *procname>
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_new_dbg (SIZE_T fp,
+ size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ static new_dbg_crt_t pcrtxxd_new_dbg = NULL;
+
+ HMODULE msvcrxxd;
+
+ if (pcrtxxd_new_dbg == NULL) {
+ // This is the first call to this function. Link to the real CRT debug
+ // new operator.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd_new_dbg = (new_dbg_crt_t)GetProcAddress(msvcrxxd, procname);
+ }
+
+ return vld.new_dbg_crt(pcrtxxd_new_dbg, fp, size, type, file, line);
+}
+
+// crt_new - A template function for implementing patch functions to the
+// CRT's new operator from msvcrXXd.dll
+//
+// - dll (IN): The name of the dll
+//
+// - procname (IN): The debug new operator's name
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the CRT new operator.
+//
+TEMPLATE_HEADER
+template<char const *procname>
+void* CrtMfcPatch<TEMPLATE_ARGS>::crtd_new (SIZE_T fp, size_t size)
+{
+ static new_t pcrtxxd_scalar_new = NULL;
+
+ HMODULE msvcrxxd;
+
+ if (pcrtxxd_scalar_new == NULL) {
+ // This is the first call to this function. Link to the real CRT new
+ // operator.
+ msvcrxxd = GetModuleHandle(crtddll);
+ pcrtxxd_scalar_new = (new_t)GetProcAddress(msvcrxxd, procname);
+ }
+
+ return vld._new(pcrtxxd_scalar_new, fp, size);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MFC DLLs
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// mfcd__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from
+// mfcXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__scalar_new_dbg_4p (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcddll, mfcd_scalar_new_dbg_4p_ordinal>
+ (fp, size, type, file, line);
+}
+
+// mfcd__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from
+// mfcXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__scalar_new_dbg_3p (size_t size,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcddll, mfcd_scalar_new_dbg_3p_ordinal>
+ (fp, size, file, line);
+}
+
+// mfcd__vector_new_dbg_4p - Calls to the MFC debug vector new operator from
+// mfcXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__vector_new_dbg_4p (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcddll, mfcd_vector_new_dbg_4p_ordinal>
+ (fp, size, type, file, line);
+}
+
+// mfcd__vector_new_dbg_3p - Calls to the MFC debug vector new operator from
+// mfcXXd.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd__vector_new_dbg_3p (size_t size,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcddll, mfcd_vector_new_dbg_3p_ordinal>
+ (fp, size, file, line);
+}
+
+// mfcd_scalar_new - Calls to the MFC scalar new operator from mfcXXd.dll are
+// patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_scalar_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new<mfcddll, mfcd_scalar_new_ordinal>(fp, size);
+}
+
+// mfcd_vector_new - Calls to the MFC vector new operator from mfcXXd.dll are
+// patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_vector_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new<mfcddll, mfcd_vector_new_ordinal>(fp, size);
+}
+
+// mfcud__scalar_new_dbg_4p - Calls to the MFC debug scalar new operator from
+// mfcXXud.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__scalar_new_dbg_4p (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcuddll, mfcud_scalar_new_dbg_4p_ordinal>
+ (fp, size, type, file, line);
+}
+
+// mfcud__scalar_new_dbg_3p - Calls to the MFC debug scalar new operator from
+// mfcXXud.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__scalar_new_dbg_3p (size_t size,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcuddll, mfcud_scalar_new_dbg_3p_ordinal>
+ (fp, size, file, line);
+}
+
+// mfcud__vector_new_dbg_4p - Calls to the MFC debug vector new operator from
+// mfcXXud.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - type (IN): The "use type" of the block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__vector_new_dbg_4p (size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcuddll, mfcud_vector_new_dbg_4p_ordinal>
+ (fp, size, type, file, line);
+}
+
+// mfcud__vector_new_dbg_3p - Calls to the MFC debug vector new operator from
+// mfcXXud.dll are patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud__vector_new_dbg_3p (size_t size,
+ char const *file,
+ int line)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new_dbg<mfcuddll, mfcud_vector_new_dbg_3p_ordinal>
+ (fp, size, file, line);
+}
+
+// mfcud_scalar_new - Calls to the MFC scalar new operator from mfcXXud.dll are
+// patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC scalar new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud_scalar_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new<mfcuddll, mfcud_scalar_new_ordinal>(fp, size);
+}
+
+// mfcud_vector_new - Calls to the MFC vector new operator from mfcXXud.dll are
+// patched through to this function.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC vector new operator.
+//
+TEMPLATE_HEADER
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcud_vector_new (size_t size)
+{
+ SIZE_T fp;
+ FRAMEPOINTER(fp);
+
+ return mfcd_new<mfcuddll, mfcud_vector_new_ordinal>(fp, size);
+}
+
+// mfcd_new_dbg - A generic function for implementing patch functions to the MFC
+// debug new operators:
+// void* __cdecl operator new[](size_t size, int type, char const *file, int line)
+// void* __cdecl operator new(size_t size, int type, char const *file, int line)
+//
+// - mfcdll (IN): The name of the MFC DLL
+//
+// - ordinal (IN): The debug new operator's ordinal value
+//
+// - type (IN): The "use type" of the block to be allocated.
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug new operator.
+//
+TEMPLATE_HEADER
+template<wchar_t const *mfcdll, int ordinal>
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new_dbg (SIZE_T fp,
+ size_t size,
+ int type,
+ char const *file,
+ int line)
+{
+ static new_dbg_crt_t pmfcxxd__new_dbg = NULL;
+
+ HMODULE mfcxxd;
+
+ if (pmfcxxd__new_dbg == NULL) {
+ // This is the first call to this function. Link to the real MFC debug
+ // new operator.
+ mfcxxd = GetModuleHandle(mfcdll);
+ pmfcxxd__new_dbg = (new_dbg_crt_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);
+ }
+
+ return vld.new_dbg_mfc(pmfcxxd__new_dbg, fp, size, type, file, line);
+}
+
+// mfcd_new_dbg - A generic function for implementing patch functions to the MFC
+// debug new operators:
+// void* __cdecl operator new[](size_t size, char const *file, int line)
+// void* __cdecl operator new(size_t size, char const *file, int line)
+//
+// - mfcdll (IN): The name of the MFC DLL
+//
+// - ordinal (IN): The debug new operator's ordinal value
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// - file (IN): The name of the file from which this function is being called.
+//
+// - line (IN): The line number, in the above file, at which this function is
+// being called.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC debug new operator.
+//
+TEMPLATE_HEADER
+template<wchar_t const *mfcdll, int ordinal>
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new_dbg (SIZE_T fp,
+ size_t size,
+ char const *file,
+ int line)
+{
+ static new_dbg_mfc_t pmfcxxd__new_dbg = NULL;
+
+ HMODULE mfcxxd;
+
+ if (pmfcxxd__new_dbg == NULL) {
+ // This is the first call to this function. Link to the real MFC debug
+ // new operator.
+ mfcxxd = GetModuleHandle(mfcdll);
+ pmfcxxd__new_dbg = (new_dbg_mfc_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);
+ }
+
+ return vld.new_dbg_mfc(pmfcxxd__new_dbg, fp, size, file, line);
+}
+
+// mfcd_new - A generic function for implementing patch functions to the MFC new
+// operators.
+//
+// - mfcdll (IN): The name of the MFC DLL
+//
+// - ordinal (IN): The new operator's ordinal value
+//
+// - size (IN): The size, in bytes, of the memory block to be allocated.
+//
+// Return Value:
+//
+// Returns the value returned by the MFC new operator.
+//
+TEMPLATE_HEADER
+template<wchar_t const *mfcdll, int ordinal>
+void* CrtMfcPatch<TEMPLATE_ARGS>::mfcd_new (SIZE_T fp, size_t size)
+{
+ static new_t pmfcxxd_new = NULL;
+
+ HMODULE mfcxxd;
+
+ if (pmfcxxd_new == NULL) {
+ // This is the first call to this function. Link to the real CRT new
+ // operator.
+ mfcxxd = GetModuleHandle(mfcdll);
+ pmfcxxd_new = (new_t)GetProcAddress(mfcxxd, (LPCSTR)ordinal);
+ }
+
+ return vld._new(pmfcxxd_new, fp, size);
+}
+
+#undef TEMPLATE_HEADER
+#undef TEMPLATE_ARGS
+
+const extern char scalar_new_dbg_name[] = "??2@YAPAXIHPBDH@Z";
+const extern char vector_new_dbg_name[] = "??_U@YAPAXIHPBDH@Z";
+const extern char scalar_new_name[] = "??2@YAPAXI@Z";
+const extern char vector_new_name[] = "??_U@YAPAXI@Z";
+const extern wchar_t msvcrtd_dll[] = L"msvcrtd.dll";
+const extern wchar_t mfc42d_dll[] = L"mfc42d.dll";
+const extern wchar_t mfc42ud_dll[] = L"mfc42ud.dll";
+const extern wchar_t msvcr70d_dll[] = L"msvcr70d.dll";
+const extern wchar_t mfc70d_dll[] = L"mfc70d.dll";
+const extern wchar_t mfc70ud_dll[] = L"mfc70ud.dll";
+const extern wchar_t msvcr71d_dll[] = L"msvcr71d.dll";
+const extern wchar_t mfc71d_dll[] = L"mfc71d.dll";
+const extern wchar_t mfc71ud_dll[] = L"mfc71ud.dll";
+const extern wchar_t msvcr80d_dll[] = L"msvcr80d.dll";
+const extern wchar_t mfc80d_dll[] = L"mfc80d.dll";
+const extern wchar_t mfc80ud_dll[] = L"mfc80ud.dll";
+const extern wchar_t msvcr90d_dll[] = L"msvcr90d.dll";
+const extern wchar_t mfc90d_dll[] = L"mfc90d.dll";
+const extern wchar_t mfc90ud_dll[] = L"mfc90ud.dll";
+const extern wchar_t msvcr100d_dll[] = L"msvcr100d.dll";
+const extern wchar_t mfc100d_dll[] = L"mfc100d.dll";
+const extern wchar_t mfc100ud_dll[] = L"mfc100ud.dll";
+
+// Visual Studio 6.0
+typedef CrtMfcPatch<msvcrtd_dll, mfc42d_dll, mfc42ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 0, 0, 0, 711, 712, 714,
+ 0, 0, 0, 711, 712, 714>
+ VS60;
+// Visual Studio .NET 2002
+typedef CrtMfcPatch<msvcr70d_dll, mfc70d_dll, mfc70ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 257, 258, 259, 832, 833, 834,
+ 258, 259, 260, 833, 834, 835>
+ VS70;
+// Visual Studio .NET 2003
+typedef CrtMfcPatch<msvcr71d_dll, mfc71d_dll, mfc71ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 267, 268, 269, 893, 894, 895,
+ 267, 268, 269, 893, 894, 895>
+ VS71;
+// Visual Studio 2005
+typedef CrtMfcPatch<msvcr80d_dll, mfc80d_dll, mfc80ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 267, 268, 269, 893, 894, 895,
+ 267, 268, 269, 893, 894, 895>
+ VS80;
+// Visual Studio 2008
+typedef CrtMfcPatch<msvcr90d_dll, mfc90d_dll, mfc90ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 267, 268, 269, 931, 932, 933,
+ 267, 268, 269, 935, 936, 937>
+ VS90;
+
+// Visual Studio 2010
+typedef CrtMfcPatch<msvcr100d_dll, mfc100d_dll, mfc100ud_dll,
+ vector_new_name, vector_new_dbg_name,
+ scalar_new_name, scalar_new_dbg_name,
+ 267, 268, 269, 1405, 1406, 1407,
+ 267, 268, 269, 1412, 1413, 1414>
+ VS100;