Changeset 8584 for trunk/src/shlwapi/ordinal_odin.cpp
- Timestamp:
- Jun 7, 2002, 10:02:20 AM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shlwapi/ordinal_odin.cpp
r7820 r8584 1 /* $Id: ordinal_odin.cpp,v 1. 5 2002-02-06 20:18:27 sandervl Exp $ */1 /* $Id: ordinal_odin.cpp,v 1.6 2002-06-07 08:02:17 sandervl Exp $ */ 2 2 3 3 /* … … 55 55 #include "shellapi.h" 56 56 #include "shlobj.h" 57 #include "wine/undocshell.h"58 57 59 58 #include "shlwapi.h" … … 65 64 *****************************************************************************/ 66 65 67 ODINDEBUGCHANNEL(SHLWAPI-ORDINAL) 68 69 70 #if 0 71 /***************************************************************************** 72 * Prototypes * 73 *****************************************************************************/ 74 75 HANDLE WIN32API SHLWAPI_11(HANDLE, DWORD, DWORD, DWORD, DWORD); 66 67 68 69 70 71 /***************************************************************************** 72 * Name : ??? 73 * Purpose : Looks like a strdup() 74 * Parameters: Unknown (wrong) 75 * Variables : 76 * Result : Unknown 77 * Remark : 78 * Status : UNTESTED STUB 79 * 80 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 81 *****************************************************************************/ 82 83 DWORD WIN32API SHLWAPI_12(DWORD arg0, DWORD arg1) 84 { 85 dprintf(("not implemented, explorer.exe will trap now")); 86 87 return 0; 88 } 89 76 90 77 91 … … 86 100 * Status : UNTESTED STUB 87 101 * 88 * Author : Christoph Bratschi [Wed, 2000/03/29 19:47] 89 *****************************************************************************/ 90 91 // return characters in protocol part 92 static INT extractProtocolFromURL(LPSTR pszURL, 93 LPSTR* ppszColon) 94 { 95 int i = 0; // number of characters scanned 96 LPSTR s = pszURL; 97 98 *ppszColon = NULL; 99 100 if (*pszURL == 0) 101 return 0; 102 103 104 // scan through the string for the 1st colon 105 while(*s) 106 { 107 // filter non-printable characters 108 if (*s < ' ') 109 return 0; 110 else 111 if (*s > 0x80) 112 return 0; 113 114 // Note: actually, the original code has a table with 115 // "forbidden" characters, we don't reproduce this here yet. 116 117 if (*s == ':') 118 { 119 // yes, first colon found! 120 if ( (pszURL[0] == 'U' || pszURL[0] == 'u') && 121 (pszURL[1] == 'R' || pszURL[1] == 'r') && 122 (pszURL[2] == 'L' || pszURL[2] == 'l') ) 123 { 124 // restart scan! 125 pszURL = s+1; 126 i = 0; 127 } 128 else 129 { 130 // OK, protocol extracted 131 *ppszColon = s; 132 return i; 133 } 134 } 135 136 // skip to next character 137 i++; 138 s++; 139 } 102 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 103 *****************************************************************************/ 104 105 DWORD WIN32API SHLWAPI_17(DWORD arg0, DWORD arg1) 106 { 107 dprintf(("not implemented, explorer.exe will trap now")); 140 108 141 109 return 0; 142 110 } 143 111 144 typedef struct tabProtocolTableEntry 145 { 146 LPSTR pszName; // Note: original is unicode 147 DWORD ID; 148 DWORD dwNameLength; 149 DWORD dwCharacteristic; 150 } PROTOCOLTABLEENTRY, *LPPROTOCOLTABLEENTRY; 151 152 153 #define PROTOCOL_HTTP 2 154 #define PROTOCOL_FILE 9 155 156 static PROTOCOLTABLEENTRY tabProtocolTable[] = 157 { 158 { "http", PROTOCOL_HTTP, 4, 0x0a }, 159 { "file", PROTOCOL_FILE, 4, 0x08 }, 160 { "ftp", 1, 3, 0x0a }, 161 { "https", 11, 5, 0x0a }, 162 { "news", 5, 4, 0x0a }, 163 { "mailto", 0, 6, 0x01 }, 164 { "gopher", 3, 6, 0x0a }, 165 { "nntp", 6, 4, 0x0a }, 166 { "telnet", 7, 6, 0x0a }, 167 { "wais", 8, 4, 0x00 }, 168 { "mk", 10, 2, 0x04 }, 169 { "shell", 12, 5, 0x01 }, 170 { "local", 14, 5, 0x00 }, 171 { "javascript", 15, 10, 0x05 }, 172 { "vbscript", 16, 8, 0x05 }, 173 { "snews", 13, 5, 0x0a }, 174 { "about", 17, 5, 0x05 }, 175 { "res", 18, 3, 0x04 } 176 }; 177 #define END_OF_PROTOCOLTABLE (tabProtocolTable + (sizeof(tabProtocolTable) / sizeof(PROTOCOLTABLEENTRY)) ) 178 179 180 181 static DWORD getProtocolTableEntry(LPSTR pszProtocol, DWORD dwNameLength) 182 { 183 LPPROTOCOLTABLEENTRY lpEntry = tabProtocolTable; 184 185 for(;;) 186 { 187 if (lpEntry->dwNameLength == dwNameLength) 188 if (lstrncmpiA( lpEntry->pszName, pszProtocol, dwNameLength) == 0) 189 { 190 return lpEntry->ID; 191 } 192 193 lpEntry++; 194 195 // if scanning beyond end of the table, 196 // abort and return null 197 if (lpEntry > END_OF_PROTOCOLTABLE) 198 return 0; 199 } 200 } 201 202 typedef struct tagProtocolHandlerA 203 { 204 DWORD dwSize; 205 DWORD dwProtocolNameLength; 206 LPSTR lpszProtocolName; 207 LPSTR lpszURL; 208 DWORD dwURLNameLength; 209 DWORD ProtocolID; 210 } PROTOCOLHANDLERA, *LPPROTOCOLHANDLERA; 211 212 typedef struct tagProtocolHandlerW 213 { 214 DWORD dwSize; 215 DWORD dwProtocolNameLength; 216 LPWSTR lpszProtocolName; 217 LPWSTR lpszURL; 218 DWORD dwURLNameLength; 219 DWORD ProtocolID; 220 } PROTOCOLHANDLERW, *LPPROTOCOLHANDLERW; 221 222 223 ODINFUNCTION2(DWORD, SHLWAPI_1, 224 LPSTR, lpszURL, 225 LPPROTOCOLHANDLERA, lpHandler) 226 { 227 dprintf(("not implemented")); 228 229 if (NULL == lpszURL) 230 return E_INVALIDARG; 231 232 if (NULL == lpHandler) 233 return E_INVALIDARG; 234 235 if (lpHandler->dwSize != sizeof( PROTOCOLHANDLERA) ) 236 return E_INVALIDARG; 237 238 dprintf(("SHLWAPI-SHLWAPI1: URL=%s", 239 lpszURL)); 240 241 LPSTR lpszColon; 242 INT iProtocolLength = extractProtocolFromURL(lpszURL, 243 &lpszColon); 244 lpHandler->dwProtocolNameLength = iProtocolLength; 245 if (0 == iProtocolLength) 246 return 0x80041001; // unknown error constant 247 248 lpHandler->lpszProtocolName = lpszURL; 249 250 DWORD ID = getProtocolTableEntry(lpszURL, 251 iProtocolLength); 252 lpHandler->ProtocolID = ID; 253 lpHandler->lpszURL = (LPSTR)(lpszURL + iProtocolLength + 1); 254 255 if (ID == PROTOCOL_FILE) 256 { 257 // cut off leading slashes as required 258 if (lpHandler->lpszURL[0] == '/' && 259 lpHandler->lpszURL[1] == '/') 260 lpHandler->lpszURL = lpHandler->lpszURL + 2; 261 262 if (lpHandler->lpszURL[0] == '/') 263 lpHandler->lpszURL = lpHandler->lpszURL + 1; 264 } 265 266 lpHandler->dwURLNameLength = lstrlenA(lpHandler->lpszURL); 267 268 return NO_ERROR; 269 } 270 #endif 271 272 273 274 /***************************************************************************** 275 * Name : SHLWAPI_3 276 * Purpose : 277 * Parameters: 278 * Variables : 279 * Result : 280 * Remark : 281 * Status : STUB UNTESTED 282 * 283 * Author : Patrick Haller [Sun, 2000/06/10 04:02] 284 *****************************************************************************/ 285 286 ODINFUNCTION2(BOOL, SHLWAPI_3, 287 LPSTR, lpPath, 288 LPSTR, lpFile) 289 { 290 dprintf(("not properly implemented")); 291 292 return TRUE; 293 294 #if 0 295 if (lpPath == NULL) return FALSE; 296 if (PathIsUNCServerA(lpPath)) return FALSE; 297 if (PathIsUNCServerShareA(lpPath)) return FALSE; 298 299 if (lpFile == NULL) 300 return PathFileExistsA(lpPath); 301 else 302 { 303 // PathFindExtensionA 304 // lstrlenA 305 // lstrcpyA 306 // PathFileExistsA 307 return FALSE; 308 } 309 310 return FALSE; 311 #endif 312 } 313 314 315 /***************************************************************************** 316 * Name : SHLWAPI_4 317 * Purpose : 318 * Parameters: 319 * Variables : 320 * Result : 321 * Remark : 322 * Status : STUB UNTESTED 323 * 324 * Author : Patrick Haller [Sun, 2000/06/10 04:02] 325 *****************************************************************************/ 326 327 ODINFUNCTION2(BOOL, SHLWAPI_4, 328 LPWSTR, lpPath, 329 LPWSTR, lpFile) 330 { 331 dprintf(("not properly implemented")); 332 333 return TRUE; 334 335 #if 0 336 if (lpPath == NULL) return FALSE; 337 if (PathIsUNCServerW(lpPath)) return FALSE; 338 if (PathIsUNCServerShareW(lpPath)) return FALSE; 339 340 if (lpFile == NULL) 341 return PathFileExtensionW(lpPath); 342 else 343 { 344 // PathFindExtensionW 345 // lstrlenW 346 // lstrcpyW 347 // PathFileExistsW 348 return FALSE; 349 } 350 351 return FALSE; 352 #endif 353 } 112 354 113 355 114 356 115 /***************************************************************************** 357 116 * Name : ??? 358 * Purpose : extended version of PathFindOnPathA117 * Purpose : Unknown (used by explorer.exe) 359 118 * Parameters: Unknown (wrong) 360 119 * Variables : … … 366 125 *****************************************************************************/ 367 126 368 ODINFUNCTION3(DWORD, SHLWAPI_5, 369 LPSTR, lpFile, 370 LPSTR, lpDirectories, 371 DWORD, dwUnknown) 372 373 { 374 dprintf(("not implemented")); 375 376 return 0; 377 } 378 379 380 /***************************************************************************** 381 * Name : ??? 382 * Purpose : extended version of PathFindOnPathA 383 * Parameters: Unknown (wrong) 384 * Variables : 385 * Result : Unknown 386 * Remark : 387 * Status : UNTESTED STUB 388 * 389 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 390 *****************************************************************************/ 391 392 ODINFUNCTION3(DWORD, SHLWAPI_6, 393 DWORD, arg0, 394 DWORD, arg1, 395 DWORD, arg2) 396 397 { 398 dprintf(("not implemented")); 399 400 return 0; 401 } 402 403 404 405 406 407 /***************************************************************************** 408 * Name : ??? 409 * Purpose : Looks like a strdup() 410 * Parameters: Unknown (wrong) 411 * Variables : 412 * Result : Unknown 413 * Remark : 414 * Status : UNTESTED STUB 415 * 416 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 417 *****************************************************************************/ 418 419 ODINFUNCTION2(DWORD,SHLWAPI_12, 420 DWORD,arg0, 421 DWORD,arg1) 422 { 423 dprintf(("not implemented, explorer.exe will trap now")); 424 425 return 0; 426 } 427 428 429 430 431 /***************************************************************************** 432 * Name : ??? 433 * Purpose : Unknown (used by explorer.exe) 434 * Parameters: Unknown (wrong) 435 * Variables : 436 * Result : Unknown 437 * Remark : 438 * Status : UNTESTED STUB 439 * 440 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 441 *****************************************************************************/ 442 443 ODINFUNCTION2(DWORD,SHLWAPI_17, 444 DWORD, arg0, 445 DWORD, arg1) 446 { 447 dprintf(("not implemented, explorer.exe will trap now")); 448 449 return 0; 450 } 451 452 453 454 455 /***************************************************************************** 456 * Name : ??? 457 * Purpose : Unknown (used by explorer.exe) 458 * Parameters: Unknown (wrong) 459 * Variables : 460 * Result : Unknown 461 * Remark : 462 * Status : UNTESTED STUB 463 * 464 * Author : Patrick Haller [Sun, 2000/06/09 04:47] 465 *****************************************************************************/ 466 467 ODINFUNCTION2(DWORD,SHLWAPI_20, 468 DWORD, arg0, 469 DWORD, arg1) 127 DWORD WIN32API SHLWAPI_20(DWORD arg0, DWORD arg1) 470 128 { 471 129 dprintf(("not implemented, explorer.exe will trap now")); … … 493 151 *****************************************************************************/ 494 152 495 ODINFUNCTION2(DWORD, SHLWAPI_160, 496 DWORD, arg0, 497 DWORD, arg1) 153 DWORD WIN32API SHLWAPI_160(DWORD arg0, DWORD arg1) 498 154 { 499 155 dprintf(("not implemented.\n")); … … 517 173 *****************************************************************************/ 518 174 519 ODINFUNCTION6(DWORD, SHLWAPI_185, 520 DWORD, arg0, 521 LPSTR, lpStr1, 522 LPSTR, lpStr2, 523 DWORD, arg3, 524 DWORD, dwDefault, 525 LPSTR, lpstrValueName) 175 DWORD WIN32API SHLWAPI_185(DWORD arg0, LPSTR lpStr1, LPSTR lpStr2, 176 DWORD arg3, DWORD dwDefault, LPSTR lpstrValueName) 526 177 { 527 178 BOOL fDontShow; … … 587 238 *****************************************************************************/ 588 239 589 ODINFUNCTION6(DWORD, SHLWAPI_191, 590 HWND, hwndParent, 591 DWORD, arg1, 592 DWORD, arg2, 593 DWORD, arg3, 594 DWORD, dwDefault, 595 LPWSTR, lpstrDialog) 240 DWORD WIN32API SHLWAPI_191(HWND hwndParent, DWORD arg1, DWORD arg2, 241 DWORD arg3, DWORD dwDefault, LPWSTR lpstrDialog) 596 242 { 597 243 BOOL rc = SHRegGetBoolUSValueW((LPCWSTR)L"Software\\Microsoft\\Windows\\CurrentVersion" … … 644 290 *****************************************************************************/ 645 291 646 ODINFUNCTION3(BOOL, SHLWAPI_197, 647 HDC, hdc, 648 CONST RECT*, lprc, 649 COLORREF, crColor) 292 BOOL WIN32API SHLWAPI_197(HDC hdc, CONST RECT*lprc, COLORREF crColor) 650 293 { 651 294 COLORREF crOld; … … 680 323 *****************************************************************************/ 681 324 682 ODINFUNCTION5(DWORD, SHLWAPI_243, 683 DWORD, arg0, 684 DWORD, arg1, 685 DWORD, arg2, 686 DWORD, arg3, 687 DWORD, arg4) 325 DWORD WIN32API SHLWAPI_243(DWORD arg0, DWORD arg1, DWORD arg2, DWORD arg3, 326 DWORD arg4) 688 327 { 689 328 dprintf(("not implementes.\n")); … … 708 347 #define REG_OPTIONS_DATACENTER "DataCenter" 709 348 710 ODINFUNCTION1(DWORD, SHLWAPI_437, 711 DWORD, nFunction) 349 DWORD WIN32API SHLWAPI_437(DWORD nFunction) 712 350 { 713 351 static BOOL flagProductOptionsInitialized = FALSE; … … 868 506 869 507 870 /*****************************************************************************871 * Name : SHIsLowMemoryMachine872 * Purpose :873 * Parameters: BOOL fRetest - TRUE if testing shall be repeated874 * - FALSE if cached result is to be used875 * Variables :876 * Result : 0 - machine is not memory-constrained877 * 1 - machine is memory-constrained878 * Remark : SHLWAPI.584879 * Status : COMPLETELY IMPLEMENTED ? UNTESTED880 *881 * Author : Patrick Haller [Mon, 2000/06/11 02:02]882 *****************************************************************************/883 884 ODINFUNCTION1(int, SHIsLowMemoryMachine,885 BOOL, fRetest)886 {887 MEMORYSTATUS memBuffer;888 static int flagIsLowMemoryMachine = -1;889 ULONG ulMem;890 891 // use cached result?892 if ( (fRetest == TRUE) ||893 (flagIsLowMemoryMachine == -1) )894 {895 // determine and store result896 GlobalMemoryStatus(&memBuffer);897 if (VERSION_OsIsUnicode())898 ulMem = 0x1000000; // unicode operation mode899 else900 ulMem = 0x0800000; // ascii operation mode901 902 // enough memory?903 if (memBuffer.dwTotalPhys <= ulMem)904 flagIsLowMemoryMachine = 1;905 else906 flagIsLowMemoryMachine = 0;907 }908 909 return flagIsLowMemoryMachine;910 }911
Note:
See TracChangeset
for help on using the changeset viewer.