Changeset 3243 for trunk/src/shell32/shellord.cpp
- Timestamp:
- Mar 26, 2000, 6:34:57 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/shellord.cpp
r2258 r3243 1 /* $Id: shellord.cpp,v 1. 5 1999-12-30 00:21:33 phallerExp $ */1 /* $Id: shellord.cpp,v 1.6 2000-03-26 16:34:51 cbratschi Exp $ */ 2 2 /* 3 3 * The parameters of many functions changes between different OS versions … … 6 6 * Copyright 1997 Marcus Meissner 7 7 * 1998 Jürgen Schmied 8 * 9 * Corel WINE 20000324 level 8 10 */ 9 11 … … 49 51 50 52 /************************************************************************* 51 * SHChangeNotifyRegister 53 * SHChangeNotifyRegister [SHELL32.2] 52 54 * 53 55 * NOTES … … 63 65 int count, 64 66 IDSTRUCT *idlist) 65 { 66 67 68 69 } 70 /************************************************************************* 71 * SHChangeNotifyDeregister 67 { 68 FIXME("SHChangeNotifyRegister: (0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n", 69 hwnd,events1,events2,msg,count,idlist); 70 return 0; 71 } 72 /************************************************************************* 73 * SHChangeNotifyDeregister [SHELL32.4] 72 74 */ 73 75 DWORD WINAPI 74 76 SHChangeNotifyDeregister(LONG x1) 75 { 76 77 } 78 /************************************************************************* 79 * NTSHChangeNotifyRegister 77 { FIXME("(0x%08lx):stub.\n",x1); 78 return 0; 79 } 80 /************************************************************************* 81 * NTSHChangeNotifyRegister [SHELL32.640] 80 82 * NOTES 81 83 * Idlist is an array of structures and Count specifies how many items in the array … … 89 91 int count, 90 92 IDSTRUCT *idlist) 91 { 92 93 94 } 95 /************************************************************************* 96 * NTSHChangeNotifyDeregister 93 { FIXME("(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n", 94 hwnd,events1,events2,msg,count,idlist); 95 return 0; 96 } 97 /************************************************************************* 98 * NTSHChangeNotifyDeregister [SHELL32.641] 97 99 */ 98 100 DWORD WINAPI NTSHChangeNotifyDeregister(LONG x1) 99 { 100 101 } 102 103 /************************************************************************* 104 * ParseField 101 { FIXME("(0x%08lx):stub.\n",x1); 102 return 0; 103 } 104 105 /************************************************************************* 106 * ParseField [SHELL32.58] 105 107 * 106 108 */ 107 109 DWORD WINAPI ParseFieldA(LPCSTR src, DWORD field, LPSTR dst, DWORD len) 108 { 109 110 111 112 113 114 { field--; 115 116 117 118 119 120 121 122 123 124 125 126 127 128 } 129 130 /************************************************************************* 131 * PickIconDlg 110 { WARN("('%s',0x%08lx,%p,%ld) semi-stub.\n",src,field,dst,len); 111 112 if (!src || !src[0] || !dst || !len) 113 return 0; 114 115 if (field >1) 116 { field--; 117 while (field) 118 { if (*src==0x0) return FALSE; 119 if (*src==',') field--; 120 src++; 121 } 122 } 123 124 while (*src!=0x00 && *src!=',' && len>0) 125 { *dst=*src; dst++, src++; len--; 126 } 127 *dst=0x0; 128 129 return TRUE; 130 } 131 132 /************************************************************************* 133 * PickIconDlg [SHELL32.62] 132 134 * 133 135 */ 134 136 DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a) 135 { 136 137 } 138 139 /************************************************************************* 140 * GetFileNameFromBrowse 137 { FIXME("PickIconDlg(%08lx,%08lx,%08lx,%08lx):stub.\n",x,y,z,a); 138 return 0xffffffff; 139 } 140 141 /************************************************************************* 142 * GetFileNameFromBrowse [SHELL32.63] 141 143 * 142 144 */ 143 145 DWORD WINAPI GetFileNameFromBrowse(HWND howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) 144 { 145 146 { FIXME("(%04x,%p,%ld,%08lx,%s,%s,%s):stub.\n", 147 howner,targetbuf,len,x,suffix,y,cmd); 146 148 /* puts up a Open Dialog and requests input into targetbuf */ 147 149 /* OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST|OFN_unknown */ … … 151 153 152 154 /************************************************************************* 153 * SHGetSettings 155 * SHGetSettings [SHELL32.68] 154 156 * 155 157 * NOTES … … 159 161 void WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask, DWORD dwx) 160 162 { 161 HKEYhKey;162 DWORDdwData;163 DWORDdwDataSize = sizeof (DWORD);164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;192 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;193 194 195 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 1;196 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;197 198 199 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;200 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 1;201 202 203 204 205 206 } 207 208 /************************************************************************* 209 * SHShellFolderView_Message 163 HKEY hKey; 164 DWORD dwData; 165 DWORD dwDataSize = sizeof (DWORD); 166 167 TRACE("(%p 0x%08lx 0x%08lx)\n",lpsfs,dwMask, dwx); 168 169 if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 170 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0)) 171 return; 172 173 if ( (SSF_SHOWEXTENSIONS & dwMask) && !RegQueryValueExA(hKey, "HideFileExt", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 174 lpsfs->fShowExtensions = ((dwData == 0) ? 0 : 1); 175 176 if ( (SSF_SHOWINFOTIP & dwMask) && !RegQueryValueExA(hKey, "ShowInfoTip", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 177 lpsfs->fShowInfoTip = ((dwData == 0) ? 0 : 1); 178 179 if ( (SSF_DONTPRETTYPATH & dwMask) && !RegQueryValueExA(hKey, "DontPrettyPath", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 180 lpsfs->fDontPrettyPath = ((dwData == 0) ? 0 : 1); 181 182 if ( (SSF_HIDEICONS & dwMask) && !RegQueryValueExA(hKey, "HideIcons", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 183 lpsfs->fHideIcons = ((dwData == 0) ? 0 : 1); 184 185 if ( (SSF_MAPNETDRVBUTTON & dwMask) && !RegQueryValueExA(hKey, "MapNetDrvBtn", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 186 lpsfs->fMapNetDrvBtn = ((dwData == 0) ? 0 : 1); 187 188 if ( (SSF_SHOWATTRIBCOL & dwMask) && !RegQueryValueExA(hKey, "ShowAttribCol", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 189 lpsfs->fShowAttribCol = ((dwData == 0) ? 0 : 1); 190 191 if (((SSF_SHOWALLOBJECTS | SSF_SHOWSYSFILES) & dwMask) && !RegQueryValueExA(hKey, "Hidden", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 192 { if (dwData == 0) 193 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 194 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 195 } 196 else if (dwData == 1) 197 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 1; 198 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 199 } 200 else if (dwData == 2) 201 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 202 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 1; 203 } 204 } 205 RegCloseKey (hKey); 206 207 TRACE("-- 0x%04x\n", *(WORD*)lpsfs); 208 } 209 210 /************************************************************************* 211 * SHShellFolderView_Message [SHELL32.73] 210 212 * 211 213 * PARAMETERS … … 227 229 228 230 /************************************************************************* 229 * OleStrToStrN 231 * OleStrToStrN [SHELL32.78] 230 232 */ 231 233 BOOL WINAPI OleStrToStrNA (LPSTR lpStr, INT nStr, LPCWSTR lpOle, INT nOle) 232 234 { 233 234 235 TRACE("%p %x %s %x\n", lpStr, nStr, debugstr_w(lpOle), nOle); 236 return WideCharToMultiByte (0, 0, lpOle, nOle, lpStr, nStr, NULL, NULL); 235 237 } 236 238 237 239 BOOL WINAPI OleStrToStrNW (LPWSTR lpwStr, INT nwStr, LPCWSTR lpOle, INT nOle) 238 240 { 239 240 241 242 243 244 241 TRACE("%p %x %s %x\n", lpwStr, nwStr, debugstr_w(lpOle), nOle); 242 243 if (lstrcpynW ( lpwStr, lpOle, nwStr)) 244 { return lstrlenW (lpwStr); 245 } 246 return 0; 245 247 } 246 248 247 249 BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn) 248 250 { 249 250 251 252 } 253 254 /************************************************************************* 255 * StrToOleStrN 251 if (VERSION_OsIsUnicode()) 252 return OleStrToStrNW ((LPWSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); 253 return OleStrToStrNA ((LPSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); 254 } 255 256 /************************************************************************* 257 * StrToOleStrN [SHELL32.79] 256 258 * lpMulti, nMulti, nWide [IN] 257 259 * lpWide [OUT] … … 259 261 BOOL WINAPI StrToOleStrNA (LPWSTR lpWide, INT nWide, LPCSTR lpStrA, INT nStr) 260 262 { 261 262 263 TRACE("%p %x %s %x\n", lpWide, nWide, lpStrA, nStr); 264 return MultiByteToWideChar (0, 0, lpStrA, nStr, lpWide, nWide); 263 265 } 264 266 BOOL WINAPI StrToOleStrNW (LPWSTR lpWide, INT nWide, LPCWSTR lpStrW, INT nStr) 265 267 { 266 267 268 269 270 271 268 TRACE("%p %x %s %x\n", lpWide, nWide, debugstr_w(lpStrW), nStr); 269 270 if (lstrcpynW (lpWide, lpStrW, nWide)) 271 { return lstrlenW (lpWide); 272 } 273 return 0; 272 274 } 273 275 274 276 BOOL WINAPI StrToOleStrNAW (LPWSTR lpWide, INT nWide, LPCVOID lpStr, INT nStr) 275 277 { 276 277 278 279 } 280 281 /************************************************************************* 282 * RegisterShellHook 278 if (VERSION_OsIsUnicode()) 279 return StrToOleStrNW (lpWide, nWide, (LPWSTR)lpStr, nStr); 280 return StrToOleStrNA (lpWide, nWide, (LPSTR)lpStr, nStr); 281 } 282 283 /************************************************************************* 284 * RegisterShellHook [SHELL32.181] 283 285 * 284 286 * PARAMS … … 293 295 } 294 296 /************************************************************************* 295 * ShellMessageBoxW 297 * ShellMessageBoxW [SHELL32.182] 296 298 * 297 299 * Format and output errormessage. 298 300 * 299 * idText 300 * idTitle 301 * idText resource ID of title or LPSTR 302 * idTitle resource ID of title or LPSTR 301 303 * 302 304 * NOTES … … 305 307 INT __cdecl 306 308 ShellMessageBoxW(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,LPCVOID arglist) 307 { WCHARszText[100],szTitle[100],szTemp[256];308 309 LPVOIDargs = &arglist;310 311 312 313 314 315 316 317 318 319 320 321 322 323 309 { WCHAR szText[100],szTitle[100],szTemp[256]; 310 LPWSTR pszText = &szText[0], pszTitle = &szTitle[0]; 311 LPVOID args = &arglist; 312 313 TRACE("(%08lx,%08lx,%08lx,%08lx,%08lx,%p)\n",(DWORD)hmod,(DWORD)hwnd,idText,idTitle,uType,arglist); 314 315 if (!HIWORD (idTitle)) 316 LoadStringW(hmod,idTitle,pszTitle,100); 317 else 318 pszTitle = (LPWSTR)idTitle; 319 320 if (! HIWORD (idText)) 321 LoadStringW(hmod,idText,pszText,100); 322 else 323 pszText = (LPWSTR)idText; 324 325 FormatMessageW(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY, 324 326 szText, 325 327 0, … … 328 330 256, 329 331 (LPDWORD)args); 330 331 } 332 333 /************************************************************************* 334 * ShellMessageBoxA 332 return MessageBoxW(hwnd,szTemp,szTitle,uType); 333 } 334 335 /************************************************************************* 336 * ShellMessageBoxA [SHELL32.183] 335 337 */ 336 338 INT __cdecl 337 339 ShellMessageBoxA(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,LPCVOID arglist) 338 { charszText[100],szTitle[100],szTemp[256];339 340 LPVOIDargs = &arglist;341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 } 357 358 /************************************************************************* 359 * SHRestricted 340 { char szText[100],szTitle[100],szTemp[256]; 341 LPSTR pszText = &szText[0], pszTitle = &szTitle[0]; 342 LPVOID args = &arglist; 343 344 TRACE("(%08lx,%08lx,%08lx,%08lx,%08lx,%p)\n", (DWORD)hmod,(DWORD)hwnd,idText,idTitle,uType,arglist); 345 346 if (!HIWORD (idTitle)) 347 LoadStringA(hmod,idTitle,pszTitle,100); 348 else 349 pszTitle = (LPSTR)idTitle; 350 351 if (! HIWORD (idText)) 352 LoadStringA(hmod,idText,pszText,100); 353 else 354 pszText = (LPSTR)idText; 355 356 FormatMessageA(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY ,pszText,0,0,szTemp,256,(LPDWORD)args); 357 return MessageBoxA(hwnd,szTemp,pszTitle,uType); 358 } 359 360 /************************************************************************* 361 * SHRestricted [SHELL32.100] 360 362 * 361 363 * walks through policy table, queries <app> key, <type> value, returns … … 373 375 DWORD WINAPI SHRestricted (DWORD pol) { 374 376 char regstr[256]; 375 HKEYxhkey;376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 } 420 421 377 HKEY xhkey; 378 DWORD retval, polidx, i, datsize = 4; 379 380 TRACE("(%08lx)\n",pol); 381 382 polidx = -1; 383 384 /* scan to see if we know this policy ID */ 385 for (i = 0; i < SHELL_MAX_POLICIES; i++) 386 { 387 if (pol == sh32_policy_table[i].polflags) 388 { 389 polidx = i; 390 break; 391 } 392 } 393 394 if (polidx == -1) 395 { 396 /* we don't know this policy, return 0 */ 397 TRACE("unknown policy: (%08lx)\n", pol); 398 return 0; 399 } 400 401 /* we have a known policy */ 402 lstrcpyA(regstr, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\"); 403 lstrcatA(regstr, sh32_policy_table[polidx].appstr); 404 405 /* first check if this policy has been cached, return it if so */ 406 if (sh32_policy_table[polidx].cache != SHELL_NO_POLICY) 407 { 408 return sh32_policy_table[polidx].cache; 409 } 410 411 /* return 0 and don't set the cache if any registry errors occur */ 412 retval = 0; 413 if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS) 414 { 415 if (RegQueryValueExA(xhkey, sh32_policy_table[polidx].keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS) 416 { 417 sh32_policy_table[polidx].cache = retval; 418 } 419 420 RegCloseKey(xhkey); 421 } 422 423 return retval; 422 424 } 423 425 … … 460 462 { 461 463 if (lstrcmpiA(inpRegKey, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies")) 462 463 464 465 464 { 465 /* doesn't match, fail */ 466 return 0; 467 } 466 468 } 467 469 … … 476 478 477 479 /************************************************************************* 478 * SHCreateDirectory 480 * SHCreateDirectory [SHELL32.165] 479 481 * 480 482 * NOTES … … 483 485 */ 484 486 DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) { 485 486 487 488 489 487 TRACE("(%p,%s):stub.\n",sec,path); 488 if (CreateDirectoryA(path,sec)) 489 return TRUE; 490 /* SHChangeNotify(8,1,path,0); */ 491 return FALSE; 490 492 #if 0 491 492 493 494 493 if (SHELL32_79(path,(LPVOID)x)) 494 return 0; 495 FIXME("(%08lx,%s):stub.\n",x,path); 496 return 0; 495 497 #endif 496 498 } 497 499 498 500 /************************************************************************* 499 * SHFree 501 * SHFree [SHELL32.195] 500 502 * 501 503 * NOTES … … 503 505 * exported by ordinal 504 506 */ 505 /*#define MEM_DEBUG 1*/ 507 #define MEM_DEBUG 0 506 508 DWORD WINAPI SHFree(LPVOID x) 507 509 { 508 #if defMEM_DEBUG509 510 511 512 513 514 515 516 517 518 519 520 521 510 #if MEM_DEBUG 511 WORD len = *(LPWORD)(x-2); 512 513 if ( *(LPWORD)(x+len) != 0x7384) 514 ERR("MAGIC2!\n"); 515 516 if ( (*(LPWORD)(x-4)) != 0x8271) 517 ERR("MAGIC1!\n"); 518 else 519 memset(x-4, 0xde, len+6); 520 521 TRACE("%p len=%u\n",x, len); 522 523 x -= 4; 522 524 #else 523 525 TRACE("%p\n",x); 524 526 #endif 525 526 } 527 528 /************************************************************************* 529 * SHAlloc 527 return HeapFree(GetProcessHeap(), 0, x); 528 } 529 530 /************************************************************************* 531 * SHAlloc [SHELL32.196] 530 532 * 531 533 * NOTES … … 535 537 LPVOID WINAPI SHAlloc(DWORD len) 536 538 { 537 538 539 #if defMEM_DEBUG540 539 LPBYTE ret; 540 541 #if MEM_DEBUG 542 ret = (LPBYTE) HeapAlloc(GetProcessHeap(),0,len+6); 541 543 #else 542 544 ret = (LPBYTE) HeapAlloc(GetProcessHeap(),0,len); 543 545 #endif 544 546 545 #if defMEM_DEBUG546 547 548 549 550 547 #if MEM_DEBUG 548 *(LPWORD)(ret) = 0x8271; 549 *(LPWORD)(ret+2) = (WORD)len; 550 *(LPWORD)(ret+4+len) = 0x7384; 551 ret += 4; 552 memset(ret, 0xdf, len); 551 553 #endif 552 553 554 } 555 556 /************************************************************************* 557 * SHRegisterDragDrop 554 TRACE("%lu bytes at %p\n",len, ret); 555 return (LPVOID)ret; 556 } 557 558 /************************************************************************* 559 * SHRegisterDragDrop [SHELL32.86] 558 560 * 559 561 * NOTES … … 562 564 DWORD WINAPI SHRegisterDragDrop(HWND hWnd,IDropTarget * pDropTarget) 563 565 { 564 565 566 } 567 568 /************************************************************************* 569 * SHRevokeDragDrop 566 FIXME("(0x%08x,%p):stub.\n", hWnd, pDropTarget); 567 return RegisterDragDrop(hWnd, pDropTarget); 568 } 569 570 /************************************************************************* 571 * SHRevokeDragDrop [SHELL32.87] 570 572 * 571 573 * NOTES … … 578 580 579 581 /************************************************************************* 580 * SHDoDragDrop 582 * SHDoDragDrop [SHELL32.88] 581 583 * 582 584 * NOTES … … 589 591 590 592 /************************************************************************* 591 * RunFileDlg 593 * RunFileDlg [SHELL32.61] 592 594 * 593 595 * NOTES … … 596 598 DWORD WINAPI 597 599 RunFileDlg (HWND hwndOwner, DWORD dwParam1, DWORD dwParam2, 598 600 LPSTR lpszTitle, LPSTR lpszPrompt, UINT uFlags) 599 601 { 600 602 FIXME("(0x%08x 0x%lx 0x%lx \"%s\" \"%s\" 0x%x):stub.\n", 601 603 hwndOwner, dwParam1, dwParam2, lpszTitle, lpszPrompt, uFlags); 602 604 return 0; 603 605 } 604 606 605 607 /************************************************************************* 606 * ExitWindowsDialog 608 * ExitWindowsDialog [SHELL32.60] 607 609 * 608 610 * NOTES … … 611 613 void WINAPI ExitWindowsDialog (HWND hWndOwner) 612 614 { 613 614 615 616 617 } 618 619 /************************************************************************* 620 * ArrangeWindows 615 TRACE("(0x%08x)\n", hWndOwner); 616 if (MessageBoxA( hWndOwner, "Do you want to exit WINE?", "Shutdown", MB_YESNO|MB_ICONQUESTION) == IDOK) 617 { SendMessageA ( hWndOwner, WM_QUIT, 0, 0); 618 } 619 } 620 621 /************************************************************************* 622 * ArrangeWindows [SHELL32.184] 621 623 * 622 624 */ 623 625 DWORD WINAPI 624 626 ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, 625 627 DWORD dwParam4, DWORD dwParam5) 626 628 { 627 629 FIXME("(0x%lx 0x%lx 0x%lx 0x%lx 0x%lx):stub.\n", 628 630 dwParam1, dwParam2, dwParam3, dwParam4, dwParam5); 629 631 return 0; 630 632 } 631 633 632 634 /************************************************************************* 633 * SignalFileOpen 635 * SignalFileOpen [SHELL32.103] 634 636 * 635 637 * NOTES … … 645 647 646 648 /************************************************************************* 647 * SHAddToRecentDocs 649 * SHAddToRecentDocs [SHELL32.234] 648 650 * 649 651 * PARAMETERS … … 657 659 { if (SHARD_PIDL==uFlags) 658 660 { FIXME("(0x%08x,pidl=%p):stub.\n", uFlags,pv); 659 660 661 662 661 } 662 else 663 { FIXME("(0x%08x,%s):stub.\n", uFlags,(char*)pv); 664 } 663 665 return 0; 664 666 } 665 667 /************************************************************************* 666 * SHFileOperation 668 * SHFileOperation [SHELL32.242] 667 669 * 668 670 */ 669 671 DWORD WINAPI SHFileOperationAW(DWORD x) 670 { 671 672 673 } 674 675 /************************************************************************* 676 * SHFileOperationA 672 { FIXME("0x%08lx stub\n",x); 673 return 0; 674 675 } 676 677 /************************************************************************* 678 * SHFileOperationA [SHELL32.243] 677 679 * 678 680 * NOTES … … 684 686 } 685 687 /************************************************************************* 686 * SHFileOperationW 688 * SHFileOperationW [SHELL32.244] 687 689 * 688 690 * NOTES … … 695 697 696 698 /************************************************************************* 697 * SHChangeNotify 699 * SHChangeNotify [SHELL32.239] 698 700 * 699 701 * NOTES … … 703 705 INT wEventId, /* [IN] flags that specifies the event*/ 704 706 UINT uFlags, /* [IN] the meaning of dwItem[1|2]*/ 705 706 707 LPCVOID dwItem1, 708 LPCVOID dwItem2) 707 709 { FIXME("(0x%08x,0x%08ux,%p,%p):stub.\n", wEventId,uFlags,dwItem1,dwItem2); 708 710 return 0; 709 711 } 710 712 /************************************************************************* 711 * SHCreateShellFolderViewEx 713 * SHCreateShellFolderViewEx [SHELL32.174] 712 714 * 713 715 * NOTES … … 718 720 LPVOID* ppv) /*[out] IShellView pointer*/ 719 721 { 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 } 737 /************************************************************************* 738 * SHWinHelp 722 IShellView * psf; 723 HRESULT hRes; 724 725 TRACE("sf=%p pidl=%p cb=%p mode=0x%08lx parm=0x%08lx\n", 726 psvcbi->pShellFolder, psvcbi->pidl, psvcbi->pCallBack, psvcbi->viewmode, psvcbi->dwUserParam); 727 728 psf = IShellView_Constructor(psvcbi->pShellFolder); 729 730 if (!psf) 731 return E_OUTOFMEMORY; 732 733 IShellView_AddRef(psf); 734 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv); 735 IShellView_Release(psf); 736 737 return hRes; 738 } 739 /************************************************************************* 740 * SHWinHelp [SHELL32.127] 739 741 * 740 742 */ 741 743 HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z) 742 { 743 744 { FIXME("0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z); 745 return 0; 744 746 } 745 747 /************************************************************************* … … 748 750 */ 749 751 HRESULT WINAPI SHRunControlPanel (DWORD x, DWORD z) 750 { 751 752 } 753 /************************************************************************* 754 * ShellExecuteEx 752 { FIXME("0x%08lx 0x%08lx stub\n",x,z); 753 return 0; 754 } 755 /************************************************************************* 756 * ShellExecuteEx [SHELL32.291] 755 757 * 756 758 */ 757 759 BOOL WINAPI ShellExecuteExAW (LPVOID sei) 758 { 759 760 761 } 762 /************************************************************************* 763 * ShellExecuteExA 760 { if (VERSION_OsIsUnicode()) 761 return ShellExecuteExW ((LPSHELLEXECUTEINFOW)sei); 762 return ShellExecuteExA ((LPSHELLEXECUTEINFOA)sei); 763 } 764 /************************************************************************* 765 * ShellExecuteExA [SHELL32.292] 764 766 * 765 767 */ 766 768 BOOL WINAPI ShellExecuteExA (LPSHELLEXECUTEINFOA sei) 767 { 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 { HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256); 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 pos = strstr(szCommandline, ",%L");/* dunno what it means: kill it*/821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 } 839 /************************************************************************* 840 * ShellExecuteExW 769 { CHAR szApplicationName[MAX_PATH],szCommandline[MAX_PATH],szPidl[20]; 770 LPSTR pos; 771 int gap, len; 772 STARTUPINFOA startupinfo; 773 PROCESS_INFORMATION processinformation; 774 775 WARN("mask=0x%08lx hwnd=0x%04x verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s incomplete\n", 776 sei->fMask, sei->hwnd, sei->lpVerb, sei->lpFile, 777 sei->lpParameters, sei->lpDirectory, sei->nShow, 778 (sei->fMask & SEE_MASK_CLASSNAME) ? sei->lpClass : "not used"); 779 780 ZeroMemory(szApplicationName,MAX_PATH); 781 if (sei->lpFile) 782 strcpy(szApplicationName, sei->lpFile); 783 784 ZeroMemory(szCommandline,MAX_PATH); 785 if (sei->lpParameters) 786 strcpy(szCommandline, sei->lpParameters); 787 788 if (sei->fMask & (SEE_MASK_CLASSKEY | SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | 789 SEE_MASK_NOCLOSEPROCESS | SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | 790 SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI | SEE_MASK_UNICODE | 791 SEE_MASK_NO_CONSOLE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR )) 792 { FIXME("flags ignored: 0x%08lx\n", sei->fMask); 793 } 794 795 if (sei->fMask & SEE_MASK_CLASSNAME) 796 { HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256); 797 } 798 799 /* process the IDList */ 800 if ( (sei->fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/ 801 { SHGetPathFromIDListA ((LPCITEMIDLIST)sei->lpIDList,szApplicationName); 802 TRACE("-- idlist=%p (%s)\n", sei->lpIDList, szApplicationName); 803 } 804 else 805 { if (sei->fMask & SEE_MASK_IDLIST ) 806 { /* %I is the adress of a global item ID*/ 807 pos = strstr(szCommandline, "%I"); 808 if (pos) 809 { HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize((LPCITEMIDLIST)sei->lpIDList), 0); 810 sprintf(szPidl,":%li",(DWORD)SHLockShared(hmem,0) ); 811 SHUnlockShared(hmem); 812 813 gap = strlen(szPidl); 814 len = strlen(pos)-2; 815 memmove(pos+gap,pos+2,len); 816 memcpy(pos,szPidl,gap); 817 818 } 819 } 820 } 821 822 pos = strstr(szCommandline, ",%L"); /* dunno what it means: kill it*/ 823 if (pos) 824 { len = strlen(pos)-2; 825 *pos=0x0; 826 memmove(pos,pos+3,len); 827 } 828 829 TRACE("execute: %s %s\n",szApplicationName, szCommandline); 830 831 ZeroMemory(&startupinfo,sizeof(STARTUPINFOA)); 832 startupinfo.cb = sizeof(STARTUPINFOA); 833 834 return CreateProcessA(szApplicationName[0] ? szApplicationName:NULL, 835 szCommandline[0] ? szCommandline : NULL, 836 NULL, NULL, FALSE, 0, 837 NULL, NULL, &startupinfo, &processinformation); 838 839 840 } 841 /************************************************************************* 842 * ShellExecuteExW [SHELL32.293] 841 843 * 842 844 */ 843 845 BOOL WINAPI ShellExecuteExW (LPSHELLEXECUTEINFOW sei) 844 { 845 846 847 848 849 850 846 { SHELLEXECUTEINFOA seiA; 847 DWORD ret; 848 849 TRACE("%p\n", sei); 850 851 memcpy(&seiA, sei, sizeof(SHELLEXECUTEINFOA)); 852 851 853 if (sei->lpVerb) 852 854 seiA.lpVerb = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpVerb); 853 855 854 856 if (sei->lpFile) 855 857 seiA.lpFile = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpFile); 856 858 857 859 if (sei->lpParameters) 858 859 860 861 860 seiA.lpParameters = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpParameters); 861 862 if (sei->lpDirectory) 863 seiA.lpDirectory = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpDirectory); 862 864 863 865 if ((sei->fMask & SEE_MASK_CLASSNAME) && sei->lpClass) 864 865 866 867 868 869 870 if (seiA.lpVerb) 871 if (seiA.lpFile)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile );872 if (seiA.lpParameters)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters );873 if (seiA.lpDirectory)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory );874 if (seiA.lpClass)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass );875 876 866 seiA.lpClass = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpClass); 867 else 868 seiA.lpClass = NULL; 869 870 ret = ShellExecuteExA(&seiA); 871 872 if (seiA.lpVerb) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpVerb ); 873 if (seiA.lpFile) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile ); 874 if (seiA.lpParameters) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters ); 875 if (seiA.lpDirectory) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory ); 876 if (seiA.lpClass) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass ); 877 878 return ret; 877 879 } 878 880 879 881 static LPUNKNOWN SHELL32_IExplorerInterface=0; 880 882 /************************************************************************* 881 * SHSetInstanceExplorer 883 * SHSetInstanceExplorer [SHELL32.176] 882 884 * 883 885 * NOTES … … 885 887 */ 886 888 HRESULT WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown) 887 { 888 889 890 } 891 /************************************************************************* 892 * SHGetInstanceExplorer 889 { TRACE("%p\n", lpUnknown); 890 SHELL32_IExplorerInterface = lpUnknown; 891 return (HRESULT) lpUnknown; 892 } 893 /************************************************************************* 894 * SHGetInstanceExplorer [SHELL32.256] 893 895 * 894 896 * NOTES … … 896 898 */ 897 899 HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown) 898 { 899 900 901 902 903 904 905 906 907 } 908 /************************************************************************* 909 * SHFreeUnusedLibraries 900 { TRACE("%p\n", lpUnknown); 901 902 *lpUnknown = SHELL32_IExplorerInterface; 903 904 if (!SHELL32_IExplorerInterface) 905 return E_FAIL; 906 907 IUnknown_AddRef(SHELL32_IExplorerInterface); 908 return NOERROR; 909 } 910 /************************************************************************* 911 * SHFreeUnusedLibraries [SHELL32.123] 910 912 * 911 913 * NOTES … … 913 915 */ 914 916 HRESULT WINAPI SHFreeUnusedLibraries (void) 915 { 916 917 } 918 /************************************************************************* 919 * DAD_SetDragImage 917 { FIXME("stub\n"); 918 return TRUE; 919 } 920 /************************************************************************* 921 * DAD_SetDragImage [SHELL32.136] 920 922 * 921 923 * NOTES … … 927 929 } 928 930 /************************************************************************* 929 * DAD_ShowDragImage 931 * DAD_ShowDragImage [SHELL32.137] 930 932 * 931 933 * NOTES … … 937 939 } 938 940 /************************************************************************* 939 * SHRegCloseKey 941 * SHRegCloseKey [NT4.0:SHELL32.505] 940 942 * 941 943 */ 942 944 HRESULT WINAPI SHRegCloseKey (HKEY hkey) 943 { 944 945 } 946 /************************************************************************* 947 * SHRegOpenKeyA 945 { TRACE("0x%04x\n",hkey); 946 return RegCloseKey( hkey ); 947 } 948 /************************************************************************* 949 * SHRegOpenKeyA [SHELL32.506] 948 950 * 949 951 */ 950 952 HRESULT WINAPI SHRegOpenKeyA(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult) 951 953 { 952 953 954 } 955 956 /************************************************************************* 957 * SHRegOpenKeyW 954 TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult); 955 return RegOpenKeyA(hKey, lpSubKey, phkResult); 956 } 957 958 /************************************************************************* 959 * SHRegOpenKeyW [NT4.0:SHELL32.507] 958 960 * 959 961 */ 960 962 HRESULT WINAPI SHRegOpenKeyW (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey) 961 { 962 963 } 964 /************************************************************************* 965 * SHRegQueryValueExA 963 { WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey); 964 return RegOpenKeyW( hkey, lpszSubKey, retkey ); 965 } 966 /************************************************************************* 967 * SHRegQueryValueExA [SHELL32.509] 966 968 * 967 969 */ 968 970 HRESULT WINAPI SHRegQueryValueExA( 969 970 971 972 973 974 975 { 976 977 978 } 979 /************************************************************************* 980 * SHRegQueryValueW 971 HKEY hkey, 972 LPSTR lpValueName, 973 LPDWORD lpReserved, 974 LPDWORD lpType, 975 LPBYTE lpData, 976 LPDWORD lpcbData) 977 { 978 TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); 979 return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); 980 } 981 /************************************************************************* 982 * SHRegQueryValueW [NT4.0:SHELL32.510] 981 983 * 982 984 */ 983 985 HRESULT WINAPI SHRegQueryValueW (HKEY hkey, LPWSTR lpszSubKey, 984 985 { 986 987 988 } 989 990 /************************************************************************* 991 * SHRegQueryValueExW 986 LPWSTR lpszData, LPDWORD lpcbData ) 987 { WARN("0x%04x %s %p %p semi-stub\n", 988 hkey, debugstr_w(lpszSubKey), lpszData, lpcbData); 989 return RegQueryValueW( hkey, lpszSubKey, lpszData, (LPLONG)lpcbData ); 990 } 991 992 /************************************************************************* 993 * SHRegQueryValueExW [NT4.0:SHELL32.511] 992 994 * 993 995 * FIXME … … 996 998 */ 997 999 HRESULT WINAPI SHRegQueryValueExW (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved, 998 999 { 1000 1001 1002 1003 1004 } 1005 1006 /************************************************************************* 1007 * ReadCabinetState 1000 LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData) 1001 { DWORD ret; 1002 WARN("0x%04x %s %p %p %p %p semi-stub\n", 1003 hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData); 1004 ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, (LPBYTE)pvData, pcbData); 1005 return ret; 1006 } 1007 1008 /************************************************************************* 1009 * ReadCabinetState [NT 4.0:SHELL32.651] 1008 1010 * 1009 1011 */ 1010 1012 HRESULT WINAPI ReadCabinetState(DWORD u, DWORD v) 1011 { 1012 1013 } 1014 /************************************************************************* 1015 * WriteCabinetState 1013 { FIXME("0x%04lx 0x%04lx stub\n",u,v); 1014 return 0; 1015 } 1016 /************************************************************************* 1017 * WriteCabinetState [NT 4.0:SHELL32.652] 1016 1018 * 1017 1019 */ 1018 1020 HRESULT WINAPI WriteCabinetState(DWORD u) 1019 { 1020 1021 } 1022 /************************************************************************* 1023 * FileIconInit 1021 { FIXME("0x%04lx stub\n",u); 1022 return 0; 1023 } 1024 /************************************************************************* 1025 * FileIconInit [SHELL32.660] 1024 1026 * 1025 1027 */ 1026 1028 BOOL WINAPI FileIconInit(BOOL bFullInit) 1027 { 1028 1029 } 1030 /************************************************************************* 1031 * IsUserAdmin 1029 { FIXME("(%s)\n", bFullInit ? "true" : "false"); 1030 return 0; 1031 } 1032 /************************************************************************* 1033 * IsUserAdmin [NT 4.0:SHELL32.680] 1032 1034 * 1033 1035 */ 1034 1036 HRESULT WINAPI IsUserAdmin(void) 1035 { 1036 1037 } 1038 /************************************************************************* 1039 * StrRetToStrN 1037 { FIXME("stub\n"); 1038 return TRUE; 1039 } 1040 /************************************************************************* 1041 * StrRetToStrN [SHELL32.96] 1040 1042 * 1041 1043 * converts a STRRET to a normal string … … 1046 1048 HRESULT WINAPI StrRetToBufA (LPSTRRET src, LPITEMIDLIST pidl, LPSTR dest, DWORD len) 1047 1049 { 1048 1050 return StrRetToStrNA(dest, len, src, pidl); 1049 1051 } 1050 1052 1051 1053 HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1052 1054 { 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1055 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl); 1056 1057 switch (src->uType) 1058 { 1059 case STRRET_WSTR: 1060 WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL); 1061 SHFree(src->u.pOleStr); 1062 break; 1063 1064 case STRRET_CSTRA: 1065 lstrcpynA((LPSTR)dest, src->u.cStr, len); 1066 break; 1067 1068 case STRRET_OFFSETA: 1069 lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); 1070 break; 1071 1072 default: 1073 FIXME("unknown type!\n"); 1074 if (len) 1075 { 1076 *(LPSTR)dest = '\0'; 1077 } 1078 return(FALSE); 1079 } 1080 return S_OK; 1079 1081 } 1080 1082 1081 1083 HRESULT WINAPI StrRetToBufW (LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest, DWORD len) 1082 1084 { 1083 1085 return StrRetToStrNW(dest, len, src, pidl); 1084 1086 } 1085 1087 1086 1088 HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1087 1089 { 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1090 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl); 1091 1092 switch (src->uType) 1093 { 1094 case STRRET_WSTR: 1095 lstrcpynW((LPWSTR)dest, src->u.pOleStr, len); 1096 SHFree(src->u.pOleStr); 1097 break; 1098 1099 case STRRET_CSTRA: 1100 lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len); 1101 break; 1102 1103 case STRRET_OFFSETA: 1104 if (pidl) 1105 { 1106 lstrcpynAtoW((LPWSTR)dest, ((LPSTR)&pidl->mkid)+src->u.uOffset, len); 1107 } 1108 break; 1109 1110 default: 1111 FIXME("unknown type!\n"); 1112 if (len) 1113 { *(LPSTR)dest = '\0'; 1114 } 1115 return(FALSE); 1116 } 1117 return S_OK; 1116 1118 } 1117 1119 HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1118 1120 { 1119 1120 1121 1122 } 1123 1124 /************************************************************************* 1125 * StrChrA 1121 if(VERSION_OsIsUnicode()) 1122 return StrRetToStrNW (dest, len, src, pidl); 1123 return StrRetToStrNA (dest, len, src, pidl); 1124 } 1125 1126 /************************************************************************* 1127 * StrChrA [NT 4.0:SHELL32.651] 1126 1128 * 1127 1129 */ 1128 1130 LPSTR WINAPI StrChrA (LPSTR str, CHAR x ) 1129 { 1130 1131 1132 1133 1134 1135 1136 1137 1138 } 1139 1140 /************************************************************************* 1141 * StrChrW 1131 { LPSTR ptr=str; 1132 1133 do 1134 { if (*ptr==x) 1135 { return ptr; 1136 } 1137 ptr++; 1138 } while (*ptr); 1139 return NULL; 1140 } 1141 1142 /************************************************************************* 1143 * StrChrW [NT 4.0:SHELL32.651] 1142 1144 * 1143 1145 */ 1144 1146 LPWSTR WINAPI StrChrW (LPWSTR str, WCHAR x ) 1145 { 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 } 1156 1157 /************************************************************************* 1158 * StrCmpNIW 1147 { LPWSTR ptr=str; 1148 1149 TRACE("%s 0x%04x\n",debugstr_w(str),x); 1150 do 1151 { if (*ptr==x) 1152 { return ptr; 1153 } 1154 ptr++; 1155 } while (*ptr); 1156 return NULL; 1157 } 1158 1159 /************************************************************************* 1160 * StrCmpNIW [NT 4.0:SHELL32.*] 1159 1161 * 1160 1162 */ 1161 1163 INT WINAPI StrCmpNIW ( LPWSTR wstr1, LPWSTR wstr2, INT len) 1162 { 1163 1164 } 1165 1166 /************************************************************************* 1167 * StrCmpNIA 1164 { FIXME("%s %s %i stub\n", debugstr_w(wstr1),debugstr_w(wstr2),len); 1165 return 0; 1166 } 1167 1168 /************************************************************************* 1169 * StrCmpNIA [NT 4.0:SHELL32.*] 1168 1170 * 1169 1171 */ 1170 1172 INT WINAPI StrCmpNIA ( LPSTR wstr1, LPSTR wstr2, INT len) 1171 { 1172 1173 } 1174 1175 /************************************************************************* 1176 * SHAllocShared 1173 { FIXME("%s %s %i stub\n", wstr1,wstr2,len); 1174 return 0; 1175 } 1176 1177 /************************************************************************* 1178 * SHAllocShared [SHELL32.520] 1177 1179 * 1178 1180 * NOTES … … 1186 1188 */ 1187 1189 HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID) 1188 { 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 } 1205 /************************************************************************* 1206 * SHLockShared 1190 { HGLOBAL hmem; 1191 LPVOID pmem; 1192 1193 TRACE("ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID); 1194 hmem = GlobalAlloc(GMEM_FIXED, size); 1195 if (!hmem) 1196 return 0; 1197 1198 pmem = GlobalLock (hmem); 1199 1200 if (! pmem) 1201 return 0; 1202 1203 memcpy (pmem, psrc, size); 1204 GlobalUnlock(hmem); 1205 return hmem; 1206 } 1207 /************************************************************************* 1208 * SHLockShared [SHELL32.521] 1207 1209 * 1208 1210 * NOTES … … 1213 1215 */ 1214 1216 LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID) 1215 { 1216 1217 } 1218 /************************************************************************* 1219 * SHUnlockShared 1217 { TRACE("handle=0x%04x procID=0x%04lx\n",hmem,procID); 1218 return GlobalLock(hmem); 1219 } 1220 /************************************************************************* 1221 * SHUnlockShared [SHELL32.522] 1220 1222 * 1221 1223 * NOTES … … 1223 1225 */ 1224 1226 BOOL WINAPI SHUnlockShared(HANDLE pmem) 1225 { 1226 1227 } 1228 /************************************************************************* 1229 * SHFreeShared 1227 { TRACE("handle=0x%04x\n",pmem); 1228 return GlobalUnlock(pmem); 1229 } 1230 /************************************************************************* 1231 * SHFreeShared [SHELL32.523] 1230 1232 * 1231 1233 * NOTES … … 1234 1236 */ 1235 1237 HANDLE WINAPI SHFreeShared(HANDLE hmem, DWORD procID) 1236 { 1237 1238 } 1239 1240 /************************************************************************* 1241 * SetAppStartingCursor 1238 { TRACE("handle=0x%04x 0x%04lx\n",hmem,procID); 1239 return GlobalFree(hmem); 1240 } 1241 1242 /************************************************************************* 1243 * SetAppStartingCursor [SHELL32.99] 1242 1244 * 1243 1245 */ 1244 1246 HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v) 1245 { 1246 1247 } 1248 /************************************************************************* 1249 * SHLoadOLE 1247 { FIXME("hwnd=0x%04x 0x%04lx stub\n",u,v ); 1248 return 0; 1249 } 1250 /************************************************************************* 1251 * SHLoadOLE [SHELL32.151] 1250 1252 * 1251 1253 */ 1252 1254 HRESULT WINAPI SHLoadOLE(DWORD u) 1253 { 1254 1255 } 1256 /************************************************************************* 1257 * DriveType 1255 { FIXME("0x%04lx stub\n",u); 1256 return S_OK; 1257 } 1258 /************************************************************************* 1259 * DriveType [SHELL32.64] 1258 1260 * 1259 1261 */ 1260 1262 HRESULT WINAPI DriveType(DWORD u) 1261 { 1262 1263 } 1264 /************************************************************************* 1265 * SHAbortInvokeCommand 1263 { FIXME("0x%04lx stub\n",u); 1264 return 0; 1265 } 1266 /************************************************************************* 1267 * SHAbortInvokeCommand [SHELL32.198] 1266 1268 * 1267 1269 */ 1268 1270 HRESULT WINAPI SHAbortInvokeCommand(void) 1269 { 1270 1271 } 1272 /************************************************************************* 1273 * SHOutOfMemoryMessageBox 1271 { FIXME("stub\n"); 1272 return 1; 1273 } 1274 /************************************************************************* 1275 * SHOutOfMemoryMessageBox [SHELL32.126] 1274 1276 * 1275 1277 */ 1276 1278 HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w) 1277 { 1278 1279 } 1280 /************************************************************************* 1281 * SHFlushClipboard 1279 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1280 return 0; 1281 } 1282 /************************************************************************* 1283 * SHFlushClipboard [SHELL32.121] 1282 1284 * 1283 1285 */ 1284 1286 HRESULT WINAPI SHFlushClipboard(void) 1285 { 1286 1287 } 1288 /************************************************************************* 1289 * StrRChrA 1287 { FIXME("stub\n"); 1288 return 1; 1289 } 1290 /************************************************************************* 1291 * StrRChrA [SHELL32.346] 1290 1292 * 1291 1293 */ 1292 1294 LPSTR WINAPI StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, DWORD wMatch) 1293 1295 { 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 } 1310 /************************************************************************* 1311 * StrRChrW 1296 if (!lpStart) 1297 return NULL; 1298 1299 /* if the end not given, search*/ 1300 if (!lpEnd) 1301 { lpEnd=lpStart; 1302 while (*lpEnd) 1303 lpEnd++; 1304 } 1305 1306 for (--lpEnd;lpStart <= lpEnd; lpEnd--) 1307 if (*lpEnd==(char)wMatch) 1308 return (LPSTR)lpEnd; 1309 1310 return NULL; 1311 } 1312 /************************************************************************* 1313 * StrRChrW [SHELL32.320] 1312 1314 * 1313 1315 */ 1314 1316 LPWSTR WINAPI StrRChrW(LPWSTR lpStart, LPWSTR lpEnd, DWORD wMatch) 1315 { 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 } 1332 /************************************************************************* 1333 * StrFormatByteSize 1317 { LPWSTR wptr=NULL; 1318 TRACE("%s %s 0x%04x\n",debugstr_w(lpStart),debugstr_w(lpEnd), (WCHAR)wMatch ); 1319 1320 /* if the end not given, search*/ 1321 if (!lpEnd) 1322 { lpEnd=lpStart; 1323 while (*lpEnd) 1324 lpEnd++; 1325 } 1326 1327 do 1328 { if (*lpStart==(WCHAR)wMatch) 1329 wptr = lpStart; 1330 lpStart++; 1331 } while ( lpStart<=lpEnd ); 1332 return wptr; 1333 } 1334 /************************************************************************* 1335 * StrFormatByteSize [SHLWAPI] 1334 1336 */ 1335 1337 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf ) 1336 { 1337 1338 1339 { sprintf (buf,"%3.1f bytes", (FLOAT)dw);1340 1341 1342 { sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);1343 1344 1345 { sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);1346 1347 1348 { sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);1349 1350 1351 return pszBuf; 1338 { char buf[64]; 1339 TRACE("%lx %p %i\n", dw, pszBuf, cchBuf); 1340 if ( dw<1024L ) 1341 { sprintf (buf,"%3.0f bytes", (FLOAT)dw); 1342 } 1343 else if ( dw<1048576L) 1344 { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024); 1345 } 1346 else if ( dw < 1073741824L) 1347 { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L); 1348 } 1349 else 1350 { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L); 1351 } 1352 lstrcpynA (pszBuf, buf, cchBuf); 1353 return pszBuf; 1352 1354 } 1353 1355 LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf ) 1354 { 1355 1356 1357 { sprintf (buf,"%3.1f bytes", (FLOAT)dw);1358 1359 1360 { sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);1361 1362 1363 { sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);1364 1365 1366 { sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);1367 1368 1369 return pszBuf; 1370 } 1371 /************************************************************************* 1372 * SHWaitForFileToOpen 1356 { char buf[64]; 1357 TRACE("%lx %p %i\n", dw, pszBuf, cchBuf); 1358 if ( dw<1024L ) 1359 { sprintf (buf,"%3.0f bytes", (FLOAT)dw); 1360 } 1361 else if ( dw<1048576L) 1362 { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024); 1363 } 1364 else if ( dw < 1073741824L) 1365 { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L); 1366 } 1367 else 1368 { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L); 1369 } 1370 lstrcpynAtoW (pszBuf, buf, cchBuf); 1371 return pszBuf; 1372 } 1373 /************************************************************************* 1374 * SHWaitForFileToOpen [SHELL32.97] 1373 1375 * 1374 1376 */ 1375 1377 HRESULT WINAPI SHWaitForFileToOpen(DWORD u, DWORD v, DWORD w) 1376 { 1377 1378 } 1379 /************************************************************************* 1380 * Control_FillCache_RunDLL 1378 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1379 return 0; 1380 } 1381 /************************************************************************* 1382 * Control_FillCache_RunDLL [SHELL32.8] 1381 1383 * 1382 1384 */ 1383 1385 HRESULT WINAPI Control_FillCache_RunDLL(HWND hWnd, HANDLE hModule, DWORD w, DWORD x) 1384 { 1385 1386 } 1387 /************************************************************************* 1388 * RunDLL_CallEntry16 1386 { FIXME("0x%04x 0x%04x 0x%04lx 0x%04lx stub\n",hWnd, hModule,w,x); 1387 return 0; 1388 } 1389 /************************************************************************* 1390 * RunDLL_CallEntry16 [SHELL32.122] 1389 1391 * the name is propably wrong 1390 1392 */ 1391 1393 HRESULT WINAPI RunDLL_CallEntry16(DWORD v, DWORD w, DWORD x, DWORD y, DWORD z) 1392 { 1393 1394 { FIXME("0x%04lx 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",v,w,x,y,z); 1395 return 0; 1394 1396 } 1395 1397 1396 1398 /************************************************************************ 1397 * shell32_654[SHELL32.654]1399 * shell32_654 [SHELL32.654] 1398 1400 * 1399 1401 * NOTES: first parameter seems to be a pointer (same as passed to WriteCabinetState) … … 1403 1405 */ 1404 1406 HRESULT WINAPI shell32_654 (DWORD x, DWORD y) 1405 { 1406 1407 { FIXME("0x%08lx 0x%08lx stub\n",x,y); 1408 return 0; 1407 1409 } 1408 1410 1409 1411 /************************************************************************ 1410 * RLBuildListOfPaths[SHELL32.146]1412 * RLBuildListOfPaths [SHELL32.146] 1411 1413 * 1412 1414 * NOTES … … 1414 1416 */ 1415 1417 DWORD WINAPI RLBuildListOfPaths (void) 1416 { 1417 1418 { FIXME("stub\n"); 1419 return 0; 1418 1420 } 1419 1421 /************************************************************************ 1420 * StrToOleStr[SHELL32.163]1422 * StrToOleStr [SHELL32.163] 1421 1423 * 1422 1424 */ 1423 1425 int WINAPI StrToOleStrA (LPWSTR lpWideCharStr, LPCSTR lpMultiByteString) 1424 1426 { 1425 1426 1427 1428 1427 TRACE("%p %p(%s)\n", 1428 lpWideCharStr, lpMultiByteString, lpMultiByteString); 1429 1430 return MultiByteToWideChar(0, 0, lpMultiByteString, -1, lpWideCharStr, MAX_PATH); 1429 1431 1430 1432 } 1431 1433 int WINAPI StrToOleStrW (LPWSTR lpWideCharStr, LPCWSTR lpWString) 1432 1434 { 1433 1434 1435 1436 1437 1438 1439 1435 TRACE("%p %p(%s)\n", 1436 lpWideCharStr, lpWString, debugstr_w(lpWString)); 1437 1438 if (lstrcpyW (lpWideCharStr, lpWString )) 1439 { return lstrlenW (lpWideCharStr); 1440 } 1441 return 0; 1440 1442 } 1441 1443 1442 1444 BOOL WINAPI StrToOleStrAW (LPWSTR lpWideCharStr, LPCVOID lpString) 1443 1445 { 1444 1445 1446 1446 if (VERSION_OsIsUnicode()) 1447 return StrToOleStrW (lpWideCharStr, (LPCWSTR)lpString); 1448 return StrToOleStrA (lpWideCharStr, (LPCSTR)lpString); 1447 1449 } 1448 1450 1449 1451 /************************************************************************ 1450 * SHValidateUNC[SHELL32.173]1452 * SHValidateUNC [SHELL32.173] 1451 1453 * 1452 1454 */ 1453 1455 HRESULT WINAPI SHValidateUNC (DWORD x, DWORD y, DWORD z) 1454 1456 { 1455 1456 1457 FIXME("0x%08lx 0x%08lx 0x%08lx stub\n",x,y,z); 1458 return 0; 1457 1459 } 1458 1460 1459 1461 /************************************************************************ 1460 * DoEnvironmentSubstW[SHELL32.53]1462 * DoEnvironmentSubstW [SHELL32.53] 1461 1463 * 1462 1464 */ 1463 1465 HRESULT WINAPI DoEnvironmentSubstA(LPSTR x, LPSTR y) 1464 1466 { 1465 1466 1467 FIXME("%p(%s) %p(%s) stub\n", x, x, y, y); 1468 return 0; 1467 1469 } 1468 1470 1469 1471 HRESULT WINAPI DoEnvironmentSubstW(LPWSTR x, LPWSTR y) 1470 1472 { 1471 1472 1473 FIXME("%p(%s) %p(%s) stub\n", x, debugstr_w(x), y, debugstr_w(y)); 1474 return 0; 1473 1475 } 1474 1476 1475 1477 HRESULT WINAPI DoEnvironmentSubstAW(LPVOID x, LPVOID y) 1476 1478 { 1477 1478 1479 1479 if (VERSION_OsIsUnicode()) 1480 return DoEnvironmentSubstW((LPWSTR)x, (LPWSTR)y); 1481 return DoEnvironmentSubstA((LPSTR)x, (LPSTR)y); 1480 1482 } 1481 1483
Note:
See TracChangeset
for help on using the changeset viewer.