From e7c09b326e26c6b58ec9f8c086429328453d0ff1 Mon Sep 17 00:00:00 2001 From: Jan Zerebecki Date: Mon, 6 Aug 2007 16:25:49 +0200 Subject: [PATCH] push 4764fdcba48f6a6df3263056e605233f2bb574ff --- .gitignore | 1 + dlls/avifil32/avifile_Pl.rc | 2 +- dlls/comdlg32/cdlg_Pl.rc | 50 +- dlls/crypt32/cert.c | 2 +- dlls/crypt32/main.c | 2 +- dlls/d3d8/tests/device.c | 38 +- dlls/d3d8/tests/surface.c | 2 +- dlls/d3d8/tests/texture.c | 2 +- dlls/d3d8/tests/visual.c | 8 +- dlls/d3d8/tests/volume.c | 2 +- dlls/d3d9/tests/device.c | 26 +- dlls/d3d9/tests/query.c | 8 +- dlls/d3d9/tests/shader.c | 2 +- dlls/d3d9/tests/surface.c | 9 +- dlls/d3d9/tests/texture.c | 2 +- dlls/d3d9/tests/visual.c | 196 ++++++- dlls/dinput/device.c | 2 +- dlls/dinput/device_private.h | 15 + dlls/dinput/joystick_linux.c | 152 ++---- dlls/dinput/joystick_linuxinput.c | 199 ++++--- dlls/dnsapi/main.c | 12 +- dlls/dnsapi/query.c | 6 +- dlls/dsound/capture.c | 18 +- dlls/dsound/dsound.c | 32 +- dlls/dsound/primary.c | 12 +- dlls/dwmapi/dwmapi_main.c | 1 + dlls/gdiplus/gdiplus.c | 39 +- dlls/gdiplus/gdiplus.spec | 10 +- dlls/gdiplus/gdiplus_private.h | 1 + dlls/gdiplus/image.c | 94 +++- dlls/hhctrl.ocx/Pl.rc | 2 +- dlls/imagehlp/access.c | 4 +- dlls/imagehlp/modify.c | 26 +- dlls/inkobj/inkobj.c | 1 - dlls/kernel32/tests/loader.c | 5 +- dlls/mapi32/mapi32_main.c | 1 + dlls/mpr/mpr_Pl.rc | 4 +- dlls/mscoree/mscoree_main.c | 11 +- dlls/mshtml/main.c | 2 +- dlls/msi/custom.c | 3 +- dlls/msi/msi.c | 14 +- dlls/msi/registry.c | 4 +- dlls/msvcrt/mbcs.c | 2 +- dlls/msvfw32/msvfw32_Pl.rc | 2 +- dlls/netapi32/access.c | 1 + dlls/ntdll/ntdll.spec | 12 +- dlls/oleaut32/olepicture.c | 3 +- dlls/oleaut32/vartype.c | 19 +- dlls/oledlg/oledlg_Pl.rc | 18 +- dlls/oledlg/pastespl.c | 6 +- dlls/opengl32/tests/opengl.c | 38 ++ dlls/shell32/shres.rc | 3 + dlls/shell32/shresdef.h | 1 + dlls/urlmon/tests/url.c | 9 +- dlls/winealsa.drv/wavein.c | 4 +- dlls/wined3d/basetexture.c | 22 +- dlls/wined3d/device.c | 5 +- dlls/wined3d/directx.c | 12 +- dlls/wined3d/swapchain.c | 2 +- dlls/winex11.drv/opengl.c | 61 +-- include/Makefile.in | 5 + include/advpub.h | 2 +- include/{lmuse.h => cor.h} | 32 +- include/dbghelp.h | 3 + include/{gdipluspixelformats.h => dwmapi.h} | 26 +- include/gdiplusflat.h | 5 + include/gdiplusinit.h | 6 +- include/gdipluspixelformats.h | 26 + include/imagehlp.h | 723 ++++++++++++++++++++++++-- include/lm.h | 11 +- include/lmuse.h | 38 +- include/{gdipluspixelformats.h => lmuseflg.h} | 13 +- include/mapidefs.h | 1 + include/{lmuse.h => mapiform.h} | 36 +- include/mapival.h | 2 + include/mapix.h | 4 + include/{lmuse.h => mscoree.idl} | 32 +- include/msi.h | 16 +- include/wincrypt.h | 2 +- include/windns.h | 20 +- programs/winecfg/winecfg.c | 10 +- programs/winetest/main.c | 21 +- tools/winapi/win32.api | 48 +- 83 files changed, 1701 insertions(+), 623 deletions(-) copy include/{lmuse.h => cor.h} (58%) copy include/{gdipluspixelformats.h => dwmapi.h} (68%) copy include/{gdipluspixelformats.h => lmuseflg.h} (77%) copy include/{lmuse.h => mapiform.h} (62%) copy include/{lmuse.h => mscoree.idl} (53%) diff --git a/.gitignore b/.gitignore index 2fdb222b871..94a13c9e9a6 100644 --- a/.gitignore +++ b/.gitignore @@ -725,6 +725,7 @@ include/mediaobj.h include/mimeinfo.h include/mlang.h include/mmstream.h +include/mscoree.h include/mshtmhst.h include/mshtml.h include/msinkaut.h diff --git a/dlls/avifil32/avifile_Pl.rc b/dlls/avifil32/avifile_Pl.rc index dbd35001d4f..7fe0ca2d70a 100644 --- a/dlls/avifil32/avifile_Pl.rc +++ b/dlls/avifil32/avifile_Pl.rc @@ -32,7 +32,7 @@ BEGIN EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL LTEXT "klatek",-1,104,43,36,9 LTEXT "Wybrany format:",-1,2,56,53,9 - LTEXT "Zarezerwownae miejsce",IDC_FORMATTEXT,55,56,90,26 + LTEXT "Zarezerwowane miejsce",IDC_FORMATTEXT,55,56,90,26 DEFPUSHBUTTON "OK",IDOK,145,42,45,14 PUSHBUTTON "Anuluj",IDCANCEL,145,61,45,14 END diff --git a/dlls/comdlg32/cdlg_Pl.rc b/dlls/comdlg32/cdlg_Pl.rc index 4e2b8f37044..7376fb74642 100644 --- a/dlls/comdlg32/cdlg_Pl.rc +++ b/dlls/comdlg32/cdlg_Pl.rc @@ -86,19 +86,19 @@ FONT 8, "MS Shell Dlg" LTEXT "&Do:", 1091, 120, 80, 30, 9 LTEXT "Jakoœæ &wydruku:", 1092, 6, 100, 76, 9 COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - CHECKBOX "Drukuj do Pli&ku", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Drukuj do pli&ku", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Sortuj kopie", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Ustawienia Wydruku" +CAPTION "Ustawienia wydruku" FONT 8, "MS Shell Dlg" { GROUPBOX "Drukarka", grp1, 6, 10, 180, 65, BS_GROUPBOX RADIOBUTTON "&Domyœlna drukarka", rad1, 16, 20, 80, 12 - LTEXT "[none]", 1088, 35, 35, 120, 9 + LTEXT "[brak]", 1088, 35, 35, 120, 9 RADIOBUTTON "&Inna drukarka", rad2, 16, 50, 80, 12 COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP @@ -178,7 +178,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Anuluj", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Pomoc", pshHelp,100,166, 44, 14 PUSHBUTTON "&Dodaj do dowolnych", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Z&definiuj Kolor >>", 719/*1025*/, 4, 150, 140, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Z&definiuj kolor >>", 719/*1025*/, 4, 150, 140, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ } @@ -209,7 +209,7 @@ FONT 8, "MS Shell Dlg" { LTEXT "&ZnajdŸ:", -1, 4, 9, 48, 8 EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "Zanieñ &na:", -1, 4, 26, 48, 8 + LTEXT "Zamieñ &na:", -1, 4, 26, 48, 8 EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "Uwzglêdniaj &tylko ca³e wyrazy", chx1, 5, 46, 120, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Uwzglêdniaj wielkoœæ liter", chx2, 5, 62, 120, 12, BS_AUTOCHECKBOX | WS_TABSTOP @@ -238,13 +238,13 @@ FONT 8, "MS Shell Dlg" LTEXT "&Nazwa:", stc6, 16, 20, 36,8 COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Stan:", stc8, 16, 36, 36,10, SS_NOPREFIX - LTEXT "Symulowany Stan", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany stan", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX - LTEXT "Symulowany Typ", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany typ", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Gdzie:", stc10, 16, 60, 36,10, SS_NOPREFIX - LTEXT "Symulowana Lokalizacja", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowana lokalizacja", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Komentarz:", stc9, 16, 72, 36,10, SS_NOPREFIX - LTEXT "Symulowany Komentarz", stc13, 60, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany komentarz", stc13, 60, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Kopie", grp2, 160, 92, 120,64, WS_GROUP LTEXT "Lczba &kopii:",stc5,168,108,68,8 @@ -277,13 +277,13 @@ BEGIN LTEXT "&Nazwa:", stc6, 16, 20, 36,8 COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Stan:", stc8, 16, 36, 36,10, SS_NOPREFIX - LTEXT "Symulowany Stan", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany stan", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX - LTEXT "Symulowany Typ", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany typ", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Gdzie:", stc10, 16, 60, 36,10, SS_NOPREFIX - LTEXT "Symulowana Lokalizacja", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowana lokalizacja", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Komentarz:", stc9, 16, 72, 36,10, SS_NOPREFIX - LTEXT "Symulowany Komentarz", stc13, 60, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Symulowany komentarz", stc13, 60, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Papier", grp2, 8, 92, 164,56, WS_GROUP LTEXT "&Rozmiar:", stc2, 16,108, 36, 8 @@ -357,15 +357,15 @@ STRINGTABLE DISCARDABLE IDS_DOCUMENTFOLDERS "Katalog Dokumentów" IDS_PERSONAL "Moje Dokumenty" IDS_FAVORITES "Moje Ulubione" - IDS_PATH "Œcie¿ka Systemowa" + IDS_PATH "Œcie¿ka systemowa" IDS_DESKTOP "Pulpit" IDS_FONTS "Czcionki" - IDS_MYCOMPUTER "Mój Komputer" + IDS_MYCOMPUTER "Mój komputer" } STRINGTABLE DISCARDABLE { - IDS_SYSTEMFOLDERS "Katalogi Systemowe" + IDS_SYSTEMFOLDERS "Katalogi systemowe" IDS_LOCALHARDRIVES "Lokalne dyski twarde" IDS_FILENOTFOUND "Nie znaleziono pliku" IDS_VERIFYFILE "SprawdŸ, czy podana nazwa pliku jest prawid³owa." @@ -380,7 +380,7 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { IDS_UPFOLDER "Poziom w górê" - IDS_NEWFOLDER "Utwórz nowy folded" + IDS_NEWFOLDER "Utwórz nowy folder" IDS_LISTVIEW "Lista" IDS_REPORTVIEW "Szczegó³y" IDS_TODESKTOP "Przegl¹daj pulpit" @@ -391,7 +391,7 @@ STRINGTABLE DISCARDABLE PD32_PRINT_TITLE "Drukuj" PD32_VALUE_UREADABLE "Sk³adnia zakresu stron jest nieprawid³owa." - PD32_INVALID_PAGE_RANGE "Ta wartoœæ nie mieœci siê w zakresie strony.\nWprowadŸ liczbê pomiêdzy 'od' a 'do'" + PD32_INVALID_PAGE_RANGE "Ta wartoœæ nie mieœci siê w zakresie stron.\nWprowadŸ liczbê pomiêdzy %d a %d." PD32_FROM_NOT_ABOVE_TO "Wartoœæ „od” nie mo¿e byæ wiêksza ni¿ wartoœæ „do”." PD32_MARGINS_OVERLAP "Marginesy znajduj¹ siê poza stron¹.\nWprowadŸ inn¹ wielkoœæ marginesu." PD32_NR_OF_COPIES_EMPTY "Wartoœæ „liczba kopii” nie mo¿e byæ pusta." @@ -402,11 +402,11 @@ STRINGTABLE DISCARDABLE PD32_OUT_OF_MEMORY "Za ma³o pamiêci dla tej operacji." PD32_GENERIC_ERROR "Podczas tej operacji wyst¹pi³ b³¹d." PD32_DRIVER_UNKNOWN "Nieznany sterownik drukarki." - PD32_NO_DEVICES "Zanim bêdzie mo¿na wykonywaæ czynnoœci zwi¹zane \ -z drukowaniem takie jak ustawienie strony lub wydruk dokumentu nale¿y zainstalowaæ drukarkê. \ + PD32_NO_DEVICES "Zanim bêdzie mo¿na wykonywaæ czynnoœci zwi¹zane \ +z drukowaniem, takie jak ustawienie strony lub wydruk dokumentu, nale¿y zainstalowaæ drukarkê. \ Po zainstalowaniu spróbuj ponownie." - PD32_DEFAULT_PRINTER "Domyœlna Drukarka; " + PD32_DEFAULT_PRINTER "Domyœlna drukarka; " PD32_NR_OF_DOCUMENTS_IN_QUEUE "W kolejce znajduj¹ siê %d dokumenty" PD32_MARGINS_IN_INCHES "Marginesy [cale]" PD32_MARGINS_IN_MILIMETERS "Marginesy [mm]" @@ -417,19 +417,19 @@ Po zainstalowaniu spr PD32_PRINTER_STATUS_PENDING_DELETION "Kasowanie" PD32_PRINTER_STATUS_PAPER_JAM "Problemy z papierem; " PD32_PRINTER_STATUS_PAPER_OUT "Koniec papieru; " - PD32_PRINTER_STATUS_MANUAL_FEED "W³ó¿ papierl; " + PD32_PRINTER_STATUS_MANUAL_FEED "W³ó¿ papier; " PD32_PRINTER_STATUS_PAPER_PROBLEM "Problemy z papierem; " PD32_PRINTER_STATUS_OFFLINE "Drukarka jest offline; " PD32_PRINTER_STATUS_IO_ACTIVE "Aktywnoœæ I/O; " PD32_PRINTER_STATUS_BUSY "Zajêta; " PD32_PRINTER_STATUS_PRINTING "Drukuje; " PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Pojemnik jest zape³niony; " - PD32_PRINTER_STATUS_NOT_AVAILABLE "Nie osi¹gala; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Nie osi¹galna; " PD32_PRINTER_STATUS_WAITING "Oczekuje; " PD32_PRINTER_STATUS_PROCESSING "Zajêta; " PD32_PRINTER_STATUS_INITIALIZING "Inicjuje; " PD32_PRINTER_STATUS_WARMING_UP "Uruchamianie; " - PD32_PRINTER_STATUS_TONER_LOW "Mo³o toneru; " + PD32_PRINTER_STATUS_TONER_LOW "Ma³o toneru; " PD32_PRINTER_STATUS_NO_TONER "Brak toneru; " PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " PD32_PRINTER_STATUS_USER_INTERVENTION "Przerwane przez u¿ytkownika; " @@ -446,7 +446,7 @@ STRINGTABLE DISCARDABLE IDS_SAVE_IN "Zapisz &w:" IDS_SAVE "Zapisz" IDS_SAVE_AS "Zapisz jako" - IDS_OPEN_FILE "Otwórz Plik" + IDS_OPEN_FILE "Otwórz plik" } STRINGTABLE DISCARDABLE /* Color names */ diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index 7fbfd2264e3..cc9de4b813f 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -1338,7 +1338,7 @@ BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - const void *pvHashAuxInfo, PBYTE pbEncoded, DWORD *pcbEncoded) + const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded) { BOOL ret; DWORD encodedSize, hashSize; diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c index a377b24e7f4..c311ce9094a 100644 --- a/dlls/crypt32/main.c +++ b/dlls/crypt32/main.c @@ -186,7 +186,7 @@ BOOL WINAPI I_CryptReadTrustedPublisherDWORDValueFromRegistry(LPCWSTR name, return ret; } -int WINAPI I_CryptInstallOssGlobal(DWORD x, DWORD y, DWORD z) +DWORD WINAPI I_CryptInstallOssGlobal(DWORD x, DWORD y, DWORD z) { static int ret = 8; ret++; diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index c32eedd4be7..fb9d5dab099 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -136,7 +136,7 @@ static void test_mipmap_levels(void) D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); goto cleanup; } @@ -181,7 +181,7 @@ static void test_swapchain(void) D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); goto cleanup; } @@ -324,7 +324,7 @@ static void test_refcount(void) D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); goto cleanup; } IDirect3DDevice8_GetDeviceCaps(pDevice, &caps); @@ -638,7 +638,7 @@ static void test_cursor(void) D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); goto cleanup; } @@ -717,7 +717,7 @@ static void test_states(void) D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); goto cleanup; } @@ -741,10 +741,12 @@ static void test_shader_versions(void) ok(pD3d != NULL, "Failed to create IDirect3D8 object\n"); if (pD3d != NULL) { hr = IDirect3D8_GetDeviceCaps(pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dcaps); - ok(SUCCEEDED(hr), "Failed to get D3D8 caps (%s)\n", DXGetErrorString8(hr)); + ok(SUCCEEDED(hr) || hr == D3DERR_NOTAVAILABLE, "Failed to get D3D8 caps (%08x)\n", hr); if (SUCCEEDED(hr)) { ok(d3dcaps.VertexShaderVersion <= D3DVS_VERSION(1,1), "Unexpected VertexShaderVersion (%#x > %#x)\n", d3dcaps.VertexShaderVersion, D3DVS_VERSION(1,1)); ok(d3dcaps.PixelShaderVersion <= D3DPS_VERSION(1,4), "Unexpected PixelShaderVersion (%#x > %#x)\n", d3dcaps.PixelShaderVersion, D3DPS_VERSION(1,4)); + } else { + skip("No Direct3D support\n"); } IDirect3D8_Release(pD3d); } @@ -805,8 +807,12 @@ static void test_scene(void) hr = IDirect3D8_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D8_CreateDevice failed with %s\n", DXGetErrorString8(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "IDirect3D8_CreateDevice failed with %08x\n", hr); + if(!pDevice) + { + skip("could not create device, IDirect3D8_CreateDevice returned %08x\n", hr); + goto cleanup; + } /* Test an EndScene without beginscene. Should return an error */ hr = IDirect3DDevice8_EndScene(pDevice); @@ -885,8 +891,12 @@ static void test_shader(void) hr = IDirect3D8_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D8_CreateDevice failed with %s\n", DXGetErrorString8(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "IDirect3D8_CreateDevice failed with %08x\n", hr); + if(!pDevice) + { + skip("could not create device, IDirect3D8_CreateDevice returned %08x\n", hr); + goto cleanup; + } IDirect3DDevice8_GetDeviceCaps(pDevice, &caps); /* First create a vertex shader */ @@ -1053,8 +1063,12 @@ static void test_limits(void) hr = IDirect3D8_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D8_CreateDevice failed with %s\n", DXGetErrorString8(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "IDirect3D8_CreateDevice failed with %08x\n", hr); + if(!pDevice) + { + skip("could not create device, IDirect3D8_CreateDevice returned %08x\n", hr); + goto cleanup; + } hr = IDirect3DDevice8_CreateTexture(pDevice, 16, 16, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTexture); ok(hr == D3D_OK, "IDirect3DDevice8_CreateTexture failed with %s\n", DXGetErrorString8(hr)); diff --git a/dlls/d3d8/tests/surface.c b/dlls/d3d8/tests/surface.c index 1503581d0cd..71dce2f70d2 100644 --- a/dlls/d3d8/tests/surface.c +++ b/dlls/d3d8/tests/surface.c @@ -59,7 +59,7 @@ static IDirect3DDevice8 *init_d3d8(HMODULE d3d8_handle) if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); return NULL; } diff --git a/dlls/d3d8/tests/texture.c b/dlls/d3d8/tests/texture.c index df7da8b568f..5c92271c5de 100644 --- a/dlls/d3d8/tests/texture.c +++ b/dlls/d3d8/tests/texture.c @@ -59,7 +59,7 @@ static IDirect3DDevice8 *init_d3d8(HMODULE d3d8_handle) if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); return NULL; } diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c index a23c322b3fa..d2c832719e6 100644 --- a/dlls/d3d8/tests/visual.c +++ b/dlls/d3d8/tests/visual.c @@ -120,7 +120,7 @@ static IDirect3DDevice8 *init_d3d8(void) present_parameters.AutoDepthStencilFormat = D3DFMT_D16; hr = IDirect3D8_CreateDevice(d3d8_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, present_parameters.hDeviceWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device_ptr); - ok(hr == D3D_OK, "IDirect3D_CreateDevice returned: %s\n", DXGetErrorString8(hr)); + ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "IDirect3D_CreateDevice returned: %s\n", DXGetErrorString8(hr)); return device_ptr; } @@ -625,7 +625,11 @@ START_TEST(visual) } device_ptr = init_d3d8(); - if (!device_ptr) return; + if (!device_ptr) + { + skip("Could not initialize direct3d\n"); + return; + } IDirect3DDevice8_GetDeviceCaps(device_ptr, &caps); diff --git a/dlls/d3d8/tests/volume.c b/dlls/d3d8/tests/volume.c index 09767c292de..66f5a3cd412 100644 --- a/dlls/d3d8/tests/volume.c +++ b/dlls/d3d8/tests/volume.c @@ -59,7 +59,7 @@ static IDirect3DDevice8 *init_d3d8(HMODULE d3d8_handle) if(FAILED(hr)) { - trace("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D8_CreateDevice returned %#x\n", hr); return NULL; } diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index ec54ea4ecee..c2012fceefe 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -739,7 +739,7 @@ static void test_reset(void) if(FAILED(hr)) { - trace("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); goto cleanup; } @@ -975,8 +975,12 @@ static void test_scene(void) hr = IDirect3D9_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); + if(!pDevice) + { + skip("Failed to create a d3d device\n"); + goto cleanup; + } /* Get the caps, they will be needed to tell if an operation is supposed to be valid */ memset(&caps, 0, sizeof(caps)); @@ -1124,8 +1128,12 @@ static void test_limits(void) hr = IDirect3D9_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); + if(!pDevice) + { + skip("Failed to create a d3d device\n"); + goto cleanup; + } hr = IDirect3DDevice9_CreateTexture(pDevice, 16, 16, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTexture, NULL); ok(hr == D3D_OK, "IDirect3DDevice9_CreateTexture failed with %s\n", DXGetErrorString9(hr)); @@ -1187,8 +1195,12 @@ static void test_depthstenciltest(void) hr = IDirect3D9_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(hr == D3D_OK, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); - if(!pDevice) goto cleanup; + ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D9_CreateDevice failed with %s\n", DXGetErrorString9(hr)); + if(!pDevice) + { + skip("Failed to create a d3d device\n"); + goto cleanup; + } hr = IDirect3DDevice9_GetDepthStencilSurface(pDevice, &pDepthStencil); ok(hr == D3D_OK && pDepthStencil != NULL, "IDirect3DDevice9_GetDepthStencilSurface failed with %s\n", DXGetErrorString9(hr)); diff --git a/dlls/d3d9/tests/query.c b/dlls/d3d9/tests/query.c index 72e1018b9b3..9f2b5b3a33c 100644 --- a/dlls/d3d9/tests/query.c +++ b/dlls/d3d9/tests/query.c @@ -96,8 +96,12 @@ static void test_query_support(IDirect3D9 *pD3d, HWND hwnd) hr = IDirect3D9_CreateDevice( pD3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ); - ok(SUCCEEDED(hr), "Failed to create IDirect3D9Device (%s)\n", DXGetErrorString9(hr)); - if (FAILED(hr)) goto cleanup; + ok(SUCCEEDED(hr) || hr == D3DERR_NOTAVAILABLE, "Failed to create IDirect3D9Device (%s)\n", DXGetErrorString9(hr)); + if (FAILED(hr)) + { + skip("Failed to create a d3d device\n"); + goto cleanup; + } for(i = 0; i < sizeof(queries) / sizeof(queries[0]); i++) { diff --git a/dlls/d3d9/tests/shader.c b/dlls/d3d9/tests/shader.c index 9c340431a7c..0465cee82c7 100644 --- a/dlls/d3d9/tests/shader.c +++ b/dlls/d3d9/tests/shader.c @@ -58,7 +58,7 @@ static IDirect3DDevice9 *init_d3d9(void) if(FAILED(hres)) { - trace("could not create device, IDirect3D9_CreateDevice returned %#x\n", hres); + skip("could not create device, IDirect3D9_CreateDevice returned %#x\n", hres); return NULL; } diff --git a/dlls/d3d9/tests/surface.c b/dlls/d3d9/tests/surface.c index 8c823233d2a..c84e9332bd0 100644 --- a/dlls/d3d9/tests/surface.c +++ b/dlls/d3d9/tests/surface.c @@ -57,7 +57,7 @@ static IDirect3DDevice9 *init_d3d9(HMODULE d3d9_handle) if(FAILED(hr)) { - trace("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); return NULL; } @@ -150,8 +150,11 @@ static void test_surface_alignment(IDirect3DDevice9 *device_ptr) hr = IDirect3DDevice9_CreateTexture(device_ptr, 64, 64, 0, 0, MAKEFOURCC('D', 'X', 'T', '1'+i), D3DPOOL_MANAGED, &pTexture, NULL); - ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateTexture: %s\n", DXGetErrorString9(hr)); - if (FAILED(hr)) continue; + ok(SUCCEEDED(hr) || hr == D3DERR_INVALIDCALL, "IDirect3DDevice9_CreateTexture: %s\n", DXGetErrorString9(hr)); + if (FAILED(hr)) { + skip("DXT%d surfaces are not supported\n", i + 1); + continue; + } for (j = IDirect3DBaseTexture9_GetLevelCount(pTexture) - 1; j >= 0; j--) { diff --git a/dlls/d3d9/tests/texture.c b/dlls/d3d9/tests/texture.c index 79d855dcc95..cb7b781d002 100644 --- a/dlls/d3d9/tests/texture.c +++ b/dlls/d3d9/tests/texture.c @@ -56,7 +56,7 @@ static IDirect3DDevice9 *init_d3d9(HMODULE d3d9_handle) if(FAILED(hr)) { - trace("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); + skip("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); return NULL; } diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 1d92d22e45a..0d90aafd436 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -120,7 +120,7 @@ static IDirect3DDevice9 *init_d3d9(void) present_parameters.AutoDepthStencilFormat = D3DFMT_D16; hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, present_parameters.hDeviceWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device_ptr); - ok(hr == D3D_OK, "IDirect3D_CreateDevice returned: %s\n", DXGetErrorString9(hr)); + ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D_CreateDevice returned: %s\n", DXGetErrorString9(hr)); return device_ptr; } @@ -1184,6 +1184,186 @@ static void present_test(IDirect3DDevice9 *device) ok(color == 0x00ff0000, "Present failed: Got color 0x%08x, expected 0x00ff0000.\n", color); } +static void fill_surface(IDirect3DSurface9 *surface, DWORD color) +{ + D3DSURFACE_DESC desc; + D3DLOCKED_RECT l; + HRESULT hr; + unsigned int x, y; + DWORD *mem; + + memset(&desc, 0, sizeof(desc)); + memset(&l, 0, sizeof(l)); + hr = IDirect3DSurface9_GetDesc(surface, &desc); + ok(hr == D3D_OK, "IDirect3DSurface9_GetDesc failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DSurface9_LockRect(surface, &l, NULL, D3DLOCK_DISCARD); + ok(hr == D3D_OK, "IDirect3DSurface9_LockRect failed with %s\n", DXGetErrorString9(hr)); + if(FAILED(hr)) return; + + for(y = 0; y < desc.Height; y++) + { + mem = (DWORD *) ((BYTE *) l.pBits + y * l.Pitch); + for(x = 0; x < l.Pitch / sizeof(DWORD); x++) + { + mem[x] = color; + } + } + hr = IDirect3DSurface9_UnlockRect(surface); + ok(hr == D3D_OK, "IDirect3DSurface9_UnlockRect failed with %s\n", DXGetErrorString9(hr)); +} + +static void maxmip_test(IDirect3DDevice9 *device) +{ + IDirect3DTexture9 *texture = NULL; + IDirect3DSurface9 *surface = NULL; + HRESULT hr; + DWORD color; + const float quads[] = { + -1.0, -1.0, 0.0, 0.0, 0.0, + -1.0, 0.0, 0.0, 0.0, 1.0, + 0.0, -1.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0, 1.0, + + 0.0, -1.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 1.0, + 1.0, -1.0, 0.0, 1.0, 0.0, + 1.0, 0.0, 0.0, 1.0, 1.0, + + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, 1.0, + 1.0, 0.0, 0.0, 1.0, 0.0, + 1.0, 1.0, 0.0, 1.0, 1.0, + + -1.0, 0.0, 0.0, 0.0, 0.0, + -1.0, 1.0, 0.0, 0.0, 1.0, + 0.0, 0.0, 0.0, 1.0, 0.0, + 0.0, 1.0, 0.0, 1.0, 1.0, + }; + + hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 0.0, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_Clear returned %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_CreateTexture(device, 128, 128, 3, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, + &texture, NULL); + ok(hr == D3D_OK, "IDirect3DDevice9_CreateTexture failed with %s\n", DXGetErrorString9(hr)); + if(!texture) + { + skip("Failed to create test texture\n"); + return; + } + + hr = IDirect3DTexture9_GetSurfaceLevel(texture, 0, &surface); + fill_surface(surface, 0xffff0000); + IDirect3DSurface9_Release(surface); + hr = IDirect3DTexture9_GetSurfaceLevel(texture, 1, &surface); + fill_surface(surface, 0xff00ff00); + IDirect3DSurface9_Release(surface); + hr = IDirect3DTexture9_GetSurfaceLevel(texture, 2, &surface); + fill_surface(surface, 0xff0000ff); + IDirect3DSurface9_Release(surface); + + hr = IDirect3DDevice9_SetTexture(device, 0, (IDirect3DBaseTexture9 *) texture); + ok(hr == D3D_OK, "IDirect3DDevice9_SetTexture failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_TEX1); + ok(hr == D3D_OK, "IDirect3DDevice9_SetFVF failed with %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MIPFILTER, D3DTEXF_NONE); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_BeginScene(device); + if(SUCCEEDED(hr)) + { + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[ 0], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 1); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[20], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 2); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[40], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 3); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[60], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + hr = IDirect3DDevice9_EndScene(device); + } + + hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL); + ok(SUCCEEDED(hr), "Present failed (0x%08x)\n", hr); + /* With mipmapping disabled, the max mip level is ignored, only level 0 is used */ + color = getPixelColor(device, 160, 360); + ok(color == 0x00FF0000, "MapMip 0, no mipfilter has color %08x\n", color); + color = getPixelColor(device, 160, 120); + ok(color == 0x00FF0000, "MapMip 3, no mipfilter has color %08x\n", color); + color = getPixelColor(device, 480, 120); + ok(color == 0x00FF0000, "MapMip 2, no mipfilter has color %08x\n", color); + color = getPixelColor(device, 480, 360); + ok(color == 0x00FF0000, "MapMip 1, no mipfilter has color %08x\n", color); + + hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 0.0, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_Clear returned %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_BeginScene(device); + if(SUCCEEDED(hr)) + { + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[ 0], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 1); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[20], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 2); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[40], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 3); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, &quads[60], 5 * sizeof(float)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr); + hr = IDirect3DDevice9_EndScene(device); + } + + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MIPFILTER, D3DTEXF_NONE); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL); + ok(SUCCEEDED(hr), "Present failed (0x%08x)\n", hr); + /* Max Mip level 0-2 sample from the specified texture level, Max Mip level 3(> levels in texture) + * samples from the highest level in the texture(level 2) + */ + color = getPixelColor(device, 160, 360); + ok(color == 0x00FF0000, "MapMip 0, point mipfilter has color %08x\n", color); + color = getPixelColor(device, 160, 120); + ok(color == 0x000000FF, "MapMip 3, point mipfilter has color %08x\n", color); + color = getPixelColor(device, 480, 120); + ok(color == 0x000000FF, "MapMip 2, point mipfilter has color %08x\n", color); + color = getPixelColor(device, 480, 360); + ok(color == 0x0000FF00, "MapMip 1, point mipfilter has color %08x\n", color); + + hr = IDirect3DDevice9_SetTexture(device, 0, NULL); + ok(hr == D3D_OK, "IDirect3DDevice9_SetTexture failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAXMIPLEVEL, 0); + ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %s\n", DXGetErrorString9(hr)); + IDirect3DTexture9_Release(texture); +} + START_TEST(visual) { IDirect3DDevice9 *device_ptr; @@ -1199,7 +1379,11 @@ START_TEST(visual) } device_ptr = init_d3d9(); - if (!device_ptr) return; + if (!device_ptr) + { + skip("Creating the device failed\n"); + return; + } IDirect3DDevice9_GetDeviceCaps(device_ptr, &caps); @@ -1245,6 +1429,14 @@ START_TEST(visual) skip("No cube texture support\n"); } present_test(device_ptr); + if(caps.TextureCaps & D3DPTEXTURECAPS_MIPMAP) + { + maxmip_test(device_ptr); + } + else + { + skip("No mipmap support\n"); + } if (caps.VertexShaderVersion >= D3DVS_VERSION(2, 0)) { diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index 1dc6e4ae78a..10e31cd412c 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -448,7 +448,7 @@ static int offset_to_object(const DataFormat *df, int offset) return -1; } -static int id_to_object(LPCDIDATAFORMAT df, int id) +int id_to_object(LPCDIDATAFORMAT df, int id) { int i; diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h index 27bccc778bc..6686577b13c 100644 --- a/dlls/dinput/device_private.h +++ b/dlls/dinput/device_private.h @@ -78,9 +78,24 @@ extern HRESULT create_DataFormat(LPCDIDATAFORMAT asked_format, DataFormat *forma extern void release_DataFormat(DataFormat *df) ; extern void queue_event(LPDIRECTINPUTDEVICE8A iface, int ofs, DWORD data, DWORD time, DWORD seq); /* Helper functions to work with data format */ +extern int id_to_object(LPCDIDATAFORMAT df, int id); extern int id_to_offset(const DataFormat *df, int id); extern int find_property(const DataFormat *df, LPCDIPROPHEADER ph); +/* Common joystick stuff */ +typedef struct +{ + LONG lDevMin; + LONG lDevMax; + LONG lMin; + LONG lMax; + LONG lDeadZone; + LONG lSaturation; +} ObjProps; + +extern DWORD joystick_map_pov(POINTL *p); +extern LONG joystick_map_axis(ObjProps *props, int val); + /** * Callback Data used by specific callback * for EnumObject on 'W' interfaces diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 67cc4935f6e..4b1165f4c35 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -76,18 +76,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(dinput); #define JOYDEV_NEW "/dev/input/js" #define JOYDEV_OLD "/dev/js" -typedef struct { - LONG lMin; - LONG lMax; - LONG lDeadZone; - LONG lSaturation; -} ObjProps; - -typedef struct { - LONG lX; - LONG lY; -} POV; - typedef struct JoystickImpl JoystickImpl; static const IDirectInputDevice8AVtbl JoystickAvt; static const IDirectInputDevice8WVtbl JoystickWvt; @@ -107,7 +95,7 @@ struct JoystickImpl int *axis_map; int axes; int buttons; - POV povs[4]; + POINTL povs[4]; }; static const GUID DInput_Wine_Joystick_GUID = { /* 9e573ed9-7734-11d2-8d4a-23903fb6bdf7 */ @@ -506,7 +494,10 @@ static HRESULT alloc_device(REFGUID rguid, const void *jvt, IDirectInputImpl *di if (wine_obj < 8) df->rgodf[idx++].dwType = DIDFT_MAKEINSTANCE(wine_obj) | DIDFT_ABSAXIS; else + { df->rgodf[idx++].dwType = DIDFT_MAKEINSTANCE(wine_obj - 8) | DIDFT_POV; + i++; /* POV takes 2 axes */ + } } for (i = 0; i < newDevice->buttons; i++) { @@ -522,6 +513,8 @@ static HRESULT alloc_device(REFGUID rguid, const void *jvt, IDirectInputImpl *di /* initialize default properties */ for (i = 0; i < c_dfDIJoystick2.dwNumObjs; i++) { + newDevice->props[i].lDevMin = -32767; + newDevice->props[i].lDevMax = +32767; newDevice->props[i].lMin = 0; newDevice->props[i].lMax = 0xffff; newDevice->props[i].lDeadZone = newDevice->deadzone; /* % * 1000 */ @@ -683,51 +676,6 @@ static HRESULT WINAPI JoystickAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface) return DI_NOEFFECT; } -static LONG map_axis(JoystickImpl * This, short val, short index) -{ - double fval = val; - double fmin = This->props[index].lMin; - double fmax = This->props[index].lMax; - double fret; - - fret = (((fval + 32767.0) * (fmax - fmin)) / (32767.0*2.0)) + fmin; - - if (fret >= 0.0) - fret += 0.5; - else - fret -= 0.5; - - return fret; -} - -static LONG calculate_pov(JoystickImpl *This, int index) -{ - if (This->povs[index].lX < -16384) { - if (This->povs[index].lY < -16384) - This->js.rgdwPOV[index] = 31500; - else if (This->povs[index].lY > 16384) - This->js.rgdwPOV[index] = 22500; - else - This->js.rgdwPOV[index] = 27000; - } else if (This->povs[index].lX > 16384) { - if (This->povs[index].lY < -16384) - This->js.rgdwPOV[index] = 4500; - else if (This->povs[index].lY > 16384) - This->js.rgdwPOV[index] = 13500; - else - This->js.rgdwPOV[index] = 9000; - } else { - if (This->povs[index].lY < -16384) - This->js.rgdwPOV[index] = 0; - else if (This->povs[index].lY > 16384) - This->js.rgdwPOV[index] = 18000; - else - This->js.rgdwPOV[index] = -1; - } - - return This->js.rgdwPOV[index]; -} - static void joy_polldev(JoystickImpl *This) { struct pollfd plfd; struct js_event jse; @@ -761,70 +709,36 @@ static void joy_polldev(JoystickImpl *This) { { int number = This->axis_map[jse.number]; /* wine format object index */ - if (number < 12) + if (number < 0) return; + inst_id = DIDFT_MAKEINSTANCE(number) | (number < 8 ? DIDFT_ABSAXIS : DIDFT_POV); + value = joystick_map_axis(&This->props[id_to_object(This->base.data_format.wine_df, inst_id)], jse.value); + + TRACE("changing axis %d => %d\n", jse.number, number); + switch (number) { - inst_id = DIDFT_MAKEINSTANCE(number) | (number < 8 ? DIDFT_ABSAXIS : DIDFT_POV); - value = map_axis(This, jse.value, number); - /* FIXME do deadzone and saturation here */ - - TRACE("changing axis %d => %d\n", jse.number, number); - switch (number) { - case 0: - This->js.lX = value; - break; - case 1: - This->js.lY = value; - break; - case 2: - This->js.lZ = value; - break; - case 3: - This->js.lRx = value; - break; - case 4: - This->js.lRy = value; - break; - case 5: - This->js.lRz = value; - break; - case 6: - This->js.rglSlider[0] = value; - break; - case 7: - This->js.rglSlider[1] = value; - break; - case 8: - /* FIXME don't go off array */ - if (This->axis_map[jse.number + 1] == number) - This->povs[0].lX = jse.value; - else if (This->axis_map[jse.number - 1] == number) - This->povs[0].lY = jse.value; - value = calculate_pov(This, 0); - break; - case 9: - if (This->axis_map[jse.number + 1] == number) - This->povs[1].lX = jse.value; - else if (This->axis_map[jse.number - 1] == number) - This->povs[1].lY = jse.value; - value = calculate_pov(This, 1); - break; - case 10: - if (This->axis_map[jse.number + 1] == number) - This->povs[2].lX = jse.value; - else if (This->axis_map[jse.number - 1] == number) - This->povs[2].lY = jse.value; - value = calculate_pov(This, 2); - break; - case 11: - if (This->axis_map[jse.number + 1] == number) - This->povs[3].lX = jse.value; - else if (This->axis_map[jse.number - 1] == number) - This->povs[3].lY = jse.value; - value = calculate_pov(This, 3); + case 0: This->js.lX = value; break; + case 1: This->js.lY = value; break; + case 2: This->js.lZ = value; break; + case 3: This->js.lRx = value; break; + case 4: This->js.lRy = value; break; + case 5: This->js.lRz = value; break; + case 6: This->js.rglSlider[0] = value; break; + case 7: This->js.rglSlider[1] = value; break; + case 8: case 9: case 10: case 11: + { + int idx = number - 8; + + if (jse.number % 2) + This->povs[idx].y = jse.value; + else + This->povs[idx].x = jse.value; + + This->js.rgdwPOV[idx] = value = joystick_map_pov(&This->povs[idx]); break; } - } else - WARN("axis %d not supported\n", number); + default: + WARN("axis %d not supported\n", number); + } } if (inst_id >= 0) queue_event((LPDIRECTINPUTDEVICE8A)This, diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index 6a8dd447319..5ef0ea74e55 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -65,6 +65,48 @@ WINE_DEFAULT_DEBUG_CHANNEL(dinput); + +/* + * Maps POV x & y event values to a DX "clock" position: + * 0 + * 31500 4500 + * 27000 -1 9000 + * 22500 13500 + * 18000 + */ +DWORD joystick_map_pov(POINTL *p) +{ + if (p->x > 0) + return p->y < 0 ? 4500 : !p->y ? 9000 : 13500; + else if (p->x < 0) + return p->y < 0 ? 31500 : !p->y ? 27000 : 22500; + else + return p->y < 0 ? 0 : !p->y ? -1 : 18000; +} + +/* + * This maps the read value (from the input event) to a value in the + * 'wanted' range. + */ +LONG joystick_map_axis(ObjProps *props, int val) +{ + LONG ret; + + /* map the value from the hmin-hmax range into the wmin-wmax range */ + ret = MulDiv( val - props->lDevMin, props->lMax - props->lMin, + props->lDevMax - props->lDevMin ) + props->lMin; + + if ((ret >= -props->lDeadZone / 2 ) && (ret <= props->lDeadZone / 2)) + ret = (props->lMax - props->lMin) / 2 + props->lMin; + + TRACE( "(%d %d) -> (%d <%d> %d): val=%d ret=%d\n", + props->lDevMin, props->lDevMax, + props->lMin, props->lDeadZone, props->lDevMax, + val, ret ); + + return ret; +} + #ifdef HAVE_CORRECT_LINUXINPUT_H #define EVDEVPREFIX "/dev/input/event" @@ -136,9 +178,10 @@ struct JoystickImpl DIJOYSTATE2 js; - struct ObjProps props[ABS_MAX]; + ObjProps props[ABS_MAX]; int axes[ABS_MAX]; + POINTL povs[4]; /* LUT for KEY_ to offset in rgbButtons */ BYTE buttons[KEY_MAX]; @@ -153,7 +196,6 @@ struct JoystickImpl }; static void fake_current_js_state(JoystickImpl *ji); -static DWORD map_pov(int event_value, int is_x); static void find_joydevs(void); /* This GUID is slightly different from the linux joystick one. Take note. */ @@ -385,11 +427,14 @@ static JoystickImpl *alloc_device(REFGUID rguid, const void *jvt, IDirectInputIm memcpy(&df->rgodf[idx], &c_dfDIJoystick2.rgodf[i], df->dwObjSize); newDevice->axes[i] = idx; - newDevice->props[idx].havemin = newDevice->joydev->axes[i][AXIS_ABSMIN]; - newDevice->props[idx].havemax = newDevice->joydev->axes[i][AXIS_ABSMAX]; - newDevice->props[idx].wantmin = 0; - newDevice->props[idx].wantmax = 0xffff; - newDevice->props[idx].deadzone = 0; + newDevice->props[idx].lDevMin = newDevice->joydev->axes[i][AXIS_ABSMIN]; + newDevice->props[idx].lDevMax = newDevice->joydev->axes[i][AXIS_ABSMAX]; + newDevice->props[idx].lMin = 0; + newDevice->props[idx].lMax = 0xffff; + newDevice->props[idx].lSaturation = 0; + newDevice->props[idx].lDeadZone = MulDiv(newDevice->joydev->axes[i][AXIS_ABSFLAT], 0xffff, + newDevice->props[idx].lDevMax - newDevice->props[idx].lDevMin); + df->rgodf[idx++].dwType = DIDFT_MAKEINSTANCE(newDevice->numAxes++) | DIDFT_ABSAXIS; } @@ -546,80 +591,32 @@ static HRESULT WINAPI JoystickAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface) return res; } -/* - * This maps the read value (from the input event) to a value in the - * 'wanted' range. It also autodetects the possible range of the axis and - * adapts values accordingly. - */ -static int -map_axis(JoystickImpl* This, int axis, int val) { - int hmax = This->props[axis].havemax; - int hmin = This->props[axis].havemin; - int wmin = This->props[axis].wantmin; - int wmax = This->props[axis].wantmax; - int ret; - - /* map the value from the hmin-hmax range into the wmin-wmax range */ - ret = MulDiv( val - hmin, wmax - wmin, hmax - hmin ) + wmin; - - TRACE("hmin=%d hmax=%d wmin=%d wmax=%d val=%d ret=%d\n", hmin, hmax, wmin, wmax, val, ret); - -#if 0 - /* deadzone doesn't work comfortably enough right now. needs more testing*/ - if ((ret > -deadz/2 ) && (ret < deadz/2)) { - FIXME("%d in deadzone, return mid.\n",val); - return (wmax-wmin)/2+wmin; - } -#endif - return ret; -} - /* * set the current state of the js device as it would be with the middle * values on the axes */ +#define CENTER_AXIS(a) \ + (ji->axes[a] == -1 ? 0 : joystick_map_axis( &ji->props[ji->axes[a]], \ + ji->joydev->axes[a][AXIS_ABS] )) static void fake_current_js_state(JoystickImpl *ji) { - int i; - /* center the axes */ - ji->js.lX = ji->axes[ABS_X]!=-1 ? map_axis(ji, ji->axes[ABS_X], ji->joydev->axes[ABS_X ][AXIS_ABS]) : 0; - ji->js.lY = ji->axes[ABS_Y]!=-1 ? map_axis(ji, ji->axes[ABS_Y], ji->joydev->axes[ABS_Y ][AXIS_ABS]) : 0; - ji->js.lZ = ji->axes[ABS_Z]!=-1 ? map_axis(ji, ji->axes[ABS_Z], ji->joydev->axes[ABS_Z ][AXIS_ABS]) : 0; - ji->js.lRx = ji->axes[ABS_RX]!=-1 ? map_axis(ji, ji->axes[ABS_RX], ji->joydev->axes[ABS_RX ][AXIS_ABS]) : 0; - ji->js.lRy = ji->axes[ABS_RY]!=-1 ? map_axis(ji, ji->axes[ABS_RY], ji->joydev->axes[ABS_RY ][AXIS_ABS]) : 0; - ji->js.lRz = ji->axes[ABS_RZ]!=-1 ? map_axis(ji, ji->axes[ABS_RZ], ji->joydev->axes[ABS_RZ ][AXIS_ABS]) : 0; - ji->js.rglSlider[0] = ji->axes[ABS_THROTTLE]!=-1 ? map_axis(ji, ji->axes[ABS_THROTTLE], ji->joydev->axes[ABS_THROTTLE][AXIS_ABS]) : 0; - ji->js.rglSlider[1] = ji->axes[ABS_RUDDER]!=-1 ? map_axis(ji, ji->axes[ABS_RUDDER], ji->joydev->axes[ABS_RUDDER ][AXIS_ABS]) : 0; - /* POV center is -1 */ - for (i=0; i<4; i++) { - ji->js.rgdwPOV[i] = -1; - } -} - -/* - * Maps an event value to a DX "clock" position: - * 0 - * 27000 -1 9000 - * 18000 - */ -static DWORD map_pov(int event_value, int is_x) -{ - DWORD ret = -1; - if (is_x) { - if (event_value<0) { - ret = 27000; - } else if (event_value>0) { - ret = 9000; - } - } else { - if (event_value<0) { - ret = 0; - } else if (event_value>0) { - ret = 18000; - } - } - return ret; + int i; + + /* center the axes */ + ji->js.lX = CENTER_AXIS(ABS_X); + ji->js.lY = CENTER_AXIS(ABS_Y); + ji->js.lZ = CENTER_AXIS(ABS_Z); + ji->js.lRx = CENTER_AXIS(ABS_RX); + ji->js.lRy = CENTER_AXIS(ABS_RY); + ji->js.lRz = CENTER_AXIS(ABS_RZ); + ji->js.rglSlider[0] = CENTER_AXIS(ABS_THROTTLE); + ji->js.rglSlider[1] = CENTER_AXIS(ABS_RUDDER); + + /* POV center is -1 */ + for (i = 0; i < 4; i++) + ji->js.rgdwPOV[i] = -1; } +#undef CENTER_AXIS /* convert wine format offset to user format object index */ static void joy_polldev(JoystickImpl *This) @@ -667,7 +664,7 @@ static void joy_polldev(JoystickImpl *This) break; } inst_id = DIDFT_MAKEINSTANCE(axis) | (ie.code < ABS_HAT0X ? DIDFT_ABSAXIS : DIDFT_POV); - value = map_axis(This, axis, ie.value); + value = joystick_map_axis(&This->props[id_to_object(This->base.data_format.wine_df, inst_id)], ie.value); switch (ie.code) { case ABS_X: This->js.lX = value; break; @@ -678,25 +675,21 @@ static void joy_polldev(JoystickImpl *This) case ABS_RZ: This->js.lRz = value; break; case ABS_THROTTLE: This->js.rglSlider[0] = value; break; case ABS_RUDDER: This->js.rglSlider[1] = value; break; - case ABS_HAT0X: - case ABS_HAT0Y: - This->js.rgdwPOV[0] = value = map_pov(ie.value, ie.code==ABS_HAT0X); - break; - case ABS_HAT1X: - case ABS_HAT1Y: - This->js.rgdwPOV[1] = value = map_pov(ie.value, ie.code==ABS_HAT1X); - break; - case ABS_HAT2X: - case ABS_HAT2Y: - This->js.rgdwPOV[2] = value = map_pov(ie.value, ie.code==ABS_HAT2X); - break; - case ABS_HAT3X: - case ABS_HAT3Y: - This->js.rgdwPOV[3] = value = map_pov(ie.value, ie.code==ABS_HAT3X); + case ABS_HAT0X: case ABS_HAT0Y: case ABS_HAT1X: case ABS_HAT1Y: + case ABS_HAT2X: case ABS_HAT2Y: case ABS_HAT3X: case ABS_HAT3Y: + { + int idx = (ie.code - ABS_HAT0X) / 2; + + if (ie.code % 2) + This->povs[idx].y = ie.value; + else + This->povs[idx].x = ie.value; + + This->js.rgdwPOV[idx] = value = joystick_map_pov(&This->povs[idx]); break; + } default: FIXME("unhandled joystick axis event (code %d, value %d)\n",ie.code,ie.value); - break; } break; } @@ -772,16 +765,22 @@ static HRESULT WINAPI JoystickAImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, int i; TRACE("proprange(%d,%d) all\n", pr->lMin, pr->lMax); for (i = 0; i < This->base.data_format.wine_df->dwNumObjs; i++) { - This->props[i].wantmin = pr->lMin; - This->props[i].wantmax = pr->lMax; + /* Scale dead-zone */ + This->props[i].lDeadZone = MulDiv(This->props[i].lDeadZone, pr->lMax - pr->lMin, + This->props[i].lMax - This->props[i].lMin); + This->props[i].lMin = pr->lMin; + This->props[i].lMax = pr->lMax; } } else { int obj = find_property(&This->base.data_format, ph); TRACE("proprange(%d,%d) obj=%d\n", pr->lMin, pr->lMax, obj); if (obj >= 0) { - This->props[obj].wantmin = pr->lMin; - This->props[obj].wantmax = pr->lMax; + /* Scale dead-zone */ + This->props[obj].lDeadZone = MulDiv(This->props[obj].lDeadZone, pr->lMax - pr->lMin, + This->props[obj].lMax - This->props[obj].lMin); + This->props[obj].lMin = pr->lMin; + This->props[obj].lMax = pr->lMax; } } fake_current_js_state(This); @@ -793,14 +792,14 @@ static HRESULT WINAPI JoystickAImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, int i; TRACE("deadzone(%d) all\n", pd->dwData); for (i = 0; i < This->base.data_format.wine_df->dwNumObjs; i++) { - This->props[i].deadzone = pd->dwData; + This->props[i].lDeadZone = pd->dwData; } } else { int obj = find_property(&This->base.data_format, ph); TRACE("deadzone(%d) obj=%d\n", pd->dwData, obj); if (obj >= 0) { - This->props[obj].deadzone = pd->dwData; + This->props[obj].lDeadZone = pd->dwData; } } fake_current_js_state(This); @@ -886,8 +885,8 @@ static HRESULT WINAPI JoystickAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, if (obj < 0) return DIERR_OBJECTNOTFOUND; - pr->lMin = This->props[obj].wantmin; - pr->lMax = This->props[obj].wantmax; + pr->lMin = This->props[obj].lMin; + pr->lMax = This->props[obj].lMax; TRACE("range(%d, %d) obj=%d\n", pr->lMin, pr->lMax, obj); break; } @@ -898,7 +897,7 @@ static HRESULT WINAPI JoystickAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, if (obj < 0) return DIERR_OBJECTNOTFOUND; - pd->dwData = This->props[obj].deadzone; + pd->dwData = This->props[obj].lDeadZone; TRACE("deadzone(%d) obj=%d\n", pd->dwData, obj); break; } diff --git a/dlls/dnsapi/main.c b/dlls/dnsapi/main.c index 10e3204e39f..2016d750f19 100644 --- a/dlls/dnsapi/main.c +++ b/dlls/dnsapi/main.c @@ -130,7 +130,7 @@ DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W( PDNS_MESSAGE_BUFFER buffer, */ DNS_STATUS WINAPI DnsModifyRecordsInSet_A( PDNS_RECORDA add, PDNS_RECORDA delete, DWORD options, HANDLE context, - PIP4_ARRAY servers, PVOID reserved ) + PVOID servers, PVOID reserved ) { FIXME( "(%p,%p,0x%08x,%p,%p,%p) stub\n", add, delete, options, context, servers, reserved ); @@ -143,7 +143,7 @@ DNS_STATUS WINAPI DnsModifyRecordsInSet_A( PDNS_RECORDA add, PDNS_RECORDA delete */ DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8( PDNS_RECORDA add, PDNS_RECORDA delete, DWORD options, HANDLE context, - PIP4_ARRAY servers, PVOID reserved ) + PVOID servers, PVOID reserved ) { FIXME( "(%p,%p,0x%08x,%p,%p,%p) stub\n", add, delete, options, context, servers, reserved ); @@ -156,7 +156,7 @@ DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8( PDNS_RECORDA add, PDNS_RECORDA del */ DNS_STATUS WINAPI DnsModifyRecordsInSet_W( PDNS_RECORDW add, PDNS_RECORDW delete, DWORD options, HANDLE context, - PIP4_ARRAY servers, PVOID reserved ) + PVOID servers, PVOID reserved ) { FIXME( "(%p,%p,0x%08x,%p,%p,%p) stub\n", add, delete, options, context, servers, reserved ); @@ -194,7 +194,7 @@ BOOL WINAPI DnsWriteQuestionToBuffer_W( PDNS_MESSAGE_BUFFER buffer, LPDWORD size * */ DNS_STATUS WINAPI DnsReplaceRecordSetA( PDNS_RECORDA set, DWORD options, - HANDLE context, PIP4_ARRAY servers, + HANDLE context, PVOID servers, PVOID reserved ) { FIXME( "(%p,0x%08x,%p,%p,%p) stub\n", set, options, context, @@ -207,7 +207,7 @@ DNS_STATUS WINAPI DnsReplaceRecordSetA( PDNS_RECORDA set, DWORD options, * */ DNS_STATUS WINAPI DnsReplaceRecordSetUTF8( PDNS_RECORDA set, DWORD options, - HANDLE context, PIP4_ARRAY servers, + HANDLE context, PVOID servers, PVOID reserved ) { FIXME( "(%p,0x%08x,%p,%p,%p) stub\n", set, options, context, @@ -220,7 +220,7 @@ DNS_STATUS WINAPI DnsReplaceRecordSetUTF8( PDNS_RECORDA set, DWORD options, * */ DNS_STATUS WINAPI DnsReplaceRecordSetW( PDNS_RECORDW set, DWORD options, - HANDLE context, PIP4_ARRAY servers, + HANDLE context, PVOID servers, PVOID reserved ) { FIXME( "(%p,0x%08x,%p,%p,%p) stub\n", set, options, context, diff --git a/dlls/dnsapi/query.c b/dlls/dnsapi/query.c index 608f496131f..5073b6af116 100644 --- a/dlls/dnsapi/query.c +++ b/dlls/dnsapi/query.c @@ -660,7 +660,7 @@ exit: * DnsQuery_A [DNSAPI.@] * */ -DNS_STATUS WINAPI DnsQuery_A( PCSTR name, WORD type, DWORD options, PIP4_ARRAY servers, +DNS_STATUS WINAPI DnsQuery_A( PCSTR name, WORD type, DWORD options, PVOID servers, PDNS_RECORDA *result, PVOID *reserved ) { WCHAR *nameW; @@ -695,7 +695,7 @@ DNS_STATUS WINAPI DnsQuery_A( PCSTR name, WORD type, DWORD options, PIP4_ARRAY s * DnsQuery_UTF8 [DNSAPI.@] * */ -DNS_STATUS WINAPI DnsQuery_UTF8( PCSTR name, WORD type, DWORD options, PIP4_ARRAY servers, +DNS_STATUS WINAPI DnsQuery_UTF8( PCSTR name, WORD type, DWORD options, PVOID servers, PDNS_RECORDA *result, PVOID *reserved ) { DNS_STATUS ret = DNS_ERROR_RCODE_NOT_IMPLEMENTED; @@ -737,7 +737,7 @@ DNS_STATUS WINAPI DnsQuery_UTF8( PCSTR name, WORD type, DWORD options, PIP4_ARRA * DnsQuery_W [DNSAPI.@] * */ -DNS_STATUS WINAPI DnsQuery_W( PCWSTR name, WORD type, DWORD options, PIP4_ARRAY servers, +DNS_STATUS WINAPI DnsQuery_W( PCWSTR name, WORD type, DWORD options, PVOID servers, PDNS_RECORDW *result, PVOID *reserved ) { char *nameU; diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c index 34c36dd0285..2ee27aeac05 100644 --- a/dlls/dsound/capture.c +++ b/dlls/dsound/capture.c @@ -1494,8 +1494,6 @@ HRESULT IDirectSoundCaptureBufferImpl_Create( } } else { DWORD flags = CALLBACK_FUNCTION; - if (ds_hw_accel != DS_HW_ACCEL_EMULATION) - flags |= WAVE_DIRECTSOUND; err = mmErr(waveInOpen(&(device->hwi), device->drvdesc.dnDevNode, device->pwfx, (DWORD_PTR)DSOUND_capture_callback, (DWORD)device, flags)); @@ -1584,16 +1582,18 @@ HRESULT DirectSoundCaptureDevice_Initialize( *ppDevice = device; device->guid = devGUID; - err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDIFACE,(DWORD_PTR)&(device->driver),0)); - if ( (err != DS_OK) && (err != DSERR_UNSUPPORTED) ) { - WARN("waveInMessage failed; err=%x\n",err); - return err; + /* Disable the direct sound driver to force emulation if requested. */ + device->driver = NULL; + if (ds_hw_accel > DS_HW_ACCEL_EMULATION) + { + err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDIFACE,(DWORD_PTR)&(device->driver),0)); + if ( (err != DS_OK) && (err != DSERR_UNSUPPORTED) ) { + WARN("waveInMessage failed; err=%x\n",err); + return err; + } } err = DS_OK; - /* Disable the direct sound driver to force emulation if requested. */ - if (ds_hw_accel == DS_HW_ACCEL_EMULATION) - device->driver = NULL; /* Get driver description */ if (device->driver) { diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c index 96809307849..cc693cb2383 100644 --- a/dlls/dsound/dsound.c +++ b/dlls/dsound/dsound.c @@ -1411,13 +1411,11 @@ HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcG *ppDevice = device; device->guid = devGUID; + device->driver = NULL; /* DRV_QUERYDSOUNDIFACE is a "Wine extension" to get the DSound interface */ - waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&device->driver, 0); - - /* Disable the direct sound driver to force emulation if requested. */ - if (ds_hw_accel == DS_HW_ACCEL_EMULATION) - device->driver = NULL; + if (ds_hw_accel > DS_HW_ACCEL_EMULATION) + waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&device->driver, 0); /* Get driver description */ if (device->driver) { @@ -1441,7 +1439,7 @@ HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcG DWORD flags = CALLBACK_FUNCTION; /* disable direct sound if requested */ - if (ds_hw_accel != DS_HW_ACCEL_EMULATION) + if (device->driver) flags |= WAVE_DIRECTSOUND; hr = mmErr(waveOutOpen(&(device->hwo), @@ -1516,10 +1514,26 @@ HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcG hr = DSOUND_PrimaryCreate(device); if (hr == DS_OK) { + UINT triggertime = DS_TIME_DEL, res = DS_TIME_RES, id; + TIMECAPS time; + DSOUND_renderer[device->drvdesc.dnDevNode] = device; - timeBeginPeriod(DS_TIME_RES); - DSOUND_renderer[device->drvdesc.dnDevNode]->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer, - (DWORD_PTR)DSOUND_renderer[device->drvdesc.dnDevNode], TIME_PERIODIC | TIME_CALLBACK_FUNCTION | TIME_KILL_SYNCHRONOUS); + timeGetDevCaps(&time, sizeof(TIMECAPS)); + TRACE("Minimum timer resolution: %u, max timer: %u\n", time.wPeriodMin, time.wPeriodMax); + if (triggertime < time.wPeriodMin) + triggertime = time.wPeriodMin; + if (res < time.wPeriodMin) + res = time.wPeriodMin; + if (timeBeginPeriod(res) == TIMERR_NOCANDO) + WARN("Could not set minimum resolution, don't expect sound\n"); + id = timeSetEvent(triggertime, res, DSOUND_timer, (DWORD_PTR)device, TIME_PERIODIC | TIME_KILL_SYNCHRONOUS); + if (!id) + { + WARN("Timer not created! Retrying without TIME_KILL_SYNCHRONOUS\n"); + id = timeSetEvent(triggertime, res, DSOUND_timer, (DWORD_PTR)device, TIME_PERIODIC); + if (!id) ERR("Could not create timer, sound playback will not occur\n"); + } + DSOUND_renderer[device->drvdesc.dnDevNode]->timerID = id; } else { WARN("DSOUND_PrimaryCreate failed\n"); } diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c index 557422ac6d8..3e75275cdb0 100644 --- a/dlls/dsound/primary.c +++ b/dlls/dsound/primary.c @@ -253,10 +253,8 @@ HRESULT DSOUND_PrimaryDestroy(DirectSoundDevice *device) if (IDsDriverBuffer_Release(device->hwbuf) == 0) device->hwbuf = 0; } - } else { - if (device->pwave) - HeapFree(GetProcessHeap(),0,device->pwave); - } + } else + HeapFree(GetProcessHeap(),0,device->pwave); HeapFree(GetProcessHeap(),0,device->pwfx); device->pwfx=NULL; @@ -292,9 +290,7 @@ HRESULT DSOUND_PrimaryStop(DirectSoundDevice *device) if (device->hwbuf) { err = IDsDriverBuffer_Stop(device->hwbuf); if (err == DSERR_BUFFERLOST) { - DWORD flags = CALLBACK_FUNCTION; - if (ds_hw_accel != DS_HW_ACCEL_EMULATION) - flags |= WAVE_DIRECTSOUND; + DWORD flags = CALLBACK_FUNCTION | WAVE_DIRECTSOUND; /* Wine-only: the driver wants us to reopen the device */ /* FIXME: check for errors */ IDsDriverBuffer_Release(device->hwbuf); @@ -417,7 +413,7 @@ HRESULT DSOUND_PrimarySetFormat(DirectSoundDevice *device, LPCWAVEFORMATEX wfex) if (device->drvdesc.dwFlags & DSDDESC_DOMMSYSTEMSETFORMAT) { DWORD flags = CALLBACK_FUNCTION; - if (ds_hw_accel != DS_HW_ACCEL_EMULATION) + if (device->driver) flags |= WAVE_DIRECTSOUND; /* FIXME: check for errors */ DSOUND_PrimaryClose(device); diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c index e4ebc3c50dd..009f1949973 100644 --- a/dlls/dwmapi/dwmapi_main.c +++ b/dlls/dwmapi/dwmapi_main.c @@ -29,6 +29,7 @@ #include "winbase.h" #include "wingdi.h" #include "winuser.h" +#include "dwmapi.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(dwmapi); diff --git a/dlls/gdiplus/gdiplus.c b/dlls/gdiplus/gdiplus.c index 9267b90d498..378783688bd 100644 --- a/dlls/gdiplus/gdiplus.c +++ b/dlls/gdiplus/gdiplus.c @@ -32,6 +32,20 @@ WINE_DEFAULT_DEBUG_CHANNEL(gdiplus); +static Status WINAPI NotificationHook(ULONG_PTR *token) +{ + TRACE("%p\n", token); + if(!token) + return InvalidParameter; + + return Ok; +} + +static void WINAPI NotificationUnhook(ULONG_PTR token) +{ + TRACE("%ld\n", token); +} + /***************************************************** * DllMain */ @@ -57,20 +71,27 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output) { - if(!token) + if(!token || !input) return InvalidParameter; - if(input->GdiplusVersion != 1) { + TRACE("%p %p %p\n", token, input, output); + TRACE("GdiplusStartupInput %d %p %d %d\n", input->GdiplusVersion, + input->DebugEventCallback, input->SuppressBackgroundThread, + input->SuppressExternalCodecs); + + if(input->GdiplusVersion != 1) return UnsupportedGdiplusVersion; - } else if ((input->DebugEventCallback) || - (input->SuppressBackgroundThread) || (input->SuppressExternalCodecs)){ - FIXME("Unimplemented for non-default GdiplusStartupInput\n"); - return NotImplemented; - } else if(output) { - FIXME("Unimplemented for non-null GdiplusStartupOutput\n"); - return NotImplemented; + + if(input->SuppressBackgroundThread){ + if(!output) + return InvalidParameter; + + output->NotificationHook = NotificationHook; + output->NotificationUnhook = NotificationUnhook; } + /* FIXME: DebugEventCallback ignored */ + return Ok; } diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index db227c1e158..e0ea275cbcc 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -79,7 +79,7 @@ @ stub GdipCreateBitmapFromHICON @ stub GdipCreateBitmapFromResource @ stdcall GdipCreateBitmapFromScan0(long long long long ptr ptr) -@ stub GdipCreateBitmapFromStream +@ stdcall GdipCreateBitmapFromStream(ptr ptr) @ stdcall GdipCreateBitmapFromStreamICM(ptr ptr) @ stub GdipCreateCachedBitmap @ stdcall GdipCreateCustomLineCap(ptr ptr long long ptr) @@ -293,7 +293,7 @@ @ stub GdipGetImageItemData @ stub GdipGetImagePalette @ stub GdipGetImagePaletteSize -@ stub GdipGetImagePixelFormat +@ stdcall GdipGetImagePixelFormat(ptr ptr) @ stdcall GdipGetImageRawFormat(ptr ptr) @ stub GdipGetImageThumbnail @ stdcall GdipGetImageType(ptr ptr) @@ -408,9 +408,9 @@ @ stub GdipImageForceValidation @ stdcall GdipImageGetFrameCount(ptr ptr ptr) @ stub GdipImageGetFrameDimensionsCount -@ stub GdipImageGetFrameDimensionsList +@ stdcall GdipImageGetFrameDimensionsList(ptr ptr long) @ stub GdipImageRotateFlip -@ stub GdipImageSelectActiveFrame +@ stdcall GdipImageSelectActiveFrame(ptr ptr long) @ stub GdipImageSetAbort @ stub GdipInitializePalette @ stub GdipInvertMatrix @@ -437,7 +437,7 @@ @ stub GdipIsVisibleRegionRectI @ stub GdipLoadImageFromFile @ stub GdipLoadImageFromFileICM -@ stub GdipLoadImageFromStream +@ stdcall GdipLoadImageFromStream(ptr ptr) @ stdcall GdipLoadImageFromStreamICM(ptr ptr) @ stub GdipMeasureCharacterRanges @ stub GdipMeasureDriverString diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index 02db7aa0d85..cea667f33b6 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -142,6 +142,7 @@ struct GpBitmap{ GpImage image; INT width; INT height; + PixelFormat format; }; struct GpImageAttributes{ diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index d649e03ddbd..c050fd25262 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -36,6 +36,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(gdiplus); typedef void ImageItemData; +#define PIXELFORMATBPP(x) ((x) ? ((x) >> 8) & 255 : 24) + static INT ipicture_pixel_height(IPicture *pic) { HDC hdcref; @@ -121,7 +123,7 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride, bmih->biWidth = width; bmih->biHeight = height; /* FIXME: use the rest of the data from format */ - bmih->biBitCount = format >> 8; + bmih->biBitCount = PIXELFORMATBPP(format); bmih->biCompression = BI_RGB; memcpy(bmih + 1, scan0, datalen); @@ -145,27 +147,60 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride, (*bitmap)->image.type = ImageTypeBitmap; (*bitmap)->width = width; (*bitmap)->height = height; + (*bitmap)->format = format; return Ok; } -GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream* stream, +GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream* stream, GpBitmap **bitmap) { + BITMAPINFO bmi; + BITMAPCOREHEADER* bmch; + OLE_HANDLE hbm; + HDC hdc; GpStatus stat; - stat = GdipLoadImageFromStreamICM(stream, (GpImage**) bitmap); + stat = GdipLoadImageFromStream(stream, (GpImage**) bitmap); if(stat != Ok) return stat; + /* FIXME: make sure it's actually a bitmap */ (*bitmap)->image.type = ImageTypeBitmap; (*bitmap)->width = ipicture_pixel_width((*bitmap)->image.picture); (*bitmap)->height = ipicture_pixel_height((*bitmap)->image.picture); + /* get the pixel format */ + IPicture_get_Handle((*bitmap)->image.picture, &hbm); + IPicture_get_CurDC((*bitmap)->image.picture, &hdc); + + bmch = (BITMAPCOREHEADER*) (&bmi.bmiHeader); + bmch->bcSize = sizeof(BITMAPCOREHEADER); + + if(!hdc){ + HBITMAP old; + hdc = GetDC(0); + old = SelectObject(hdc, (HBITMAP)hbm); + GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS); + SelectObject(hdc, old); + ReleaseDC(0, hdc); + } + else + GetDIBits(hdc, (HBITMAP)hbm, 0, 0, NULL, &bmi, DIB_RGB_COLORS); + + (*bitmap)->format = (bmch->bcBitCount << 8) | PixelFormatGDI; + return Ok; } +/* FIXME: no icm */ +GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream* stream, + GpBitmap **bitmap) +{ + return GdipCreateBitmapFromStream(stream, bitmap); +} + GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image) { if(!image) @@ -245,6 +280,20 @@ GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage *image, REAL *res) return NotImplemented; } +/* FIXME: test this function for non-bitmap types */ +GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage *image, PixelFormat *format) +{ + if(!image || !format) + return InvalidParameter; + + if(image->type != ImageTypeBitmap) + *format = PixelFormat24bppRGB; + else + *format = ((GpBitmap*) image)->format; + + return Ok; +} + GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage *image, GUID *format) { static int calls; @@ -344,8 +393,35 @@ GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage *image, return NotImplemented; } -/* FIXME: no ICM */ -GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) +GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage* image, + GUID* dimensionIDs, UINT count) +{ + static int calls; + + if(!image || !dimensionIDs) + return InvalidParameter; + + if(!(calls++)) + FIXME("not implemented\n"); + + return Ok; +} + +GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage *image, + GDIPCONST GUID* dimensionID, UINT frameidx) +{ + static int calls; + + if(!image || !dimensionID) + return InvalidParameter; + + if(!(calls++)) + FIXME("not implemented\n"); + + return Ok; +} + +GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image) { if(!stream || !image) return InvalidParameter; @@ -360,12 +436,18 @@ GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) return GenericError; } - /* FIXME: use IPicture_get_Type to get image type */ + /* FIXME: use IPicture_get_Type to get image type? */ (*image)->type = ImageTypeUnknown; return Ok; } +/* FIXME: no ICM */ +GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) +{ + return GdipLoadImageFromStream(stream, image); +} + GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage *image, PROPID propId) { static int calls; diff --git a/dlls/hhctrl.ocx/Pl.rc b/dlls/hhctrl.ocx/Pl.rc index 1323ec3e7e5..40d3089af84 100644 --- a/dlls/hhctrl.ocx/Pl.rc +++ b/dlls/hhctrl.ocx/Pl.rc @@ -38,7 +38,7 @@ BEGIN IDTB_REFRESH "Odœwie¿" IDTB_BACK "Wstecz" IDTB_HOME "Start" - IDTB_SYNC "Sync" + IDTB_SYNC "Synchronizuj" IDTB_PRINT "Drukuj" IDTB_OPTIONS "Opcje" IDTB_FORWARD "Dalej" diff --git a/dlls/imagehlp/access.c b/dlls/imagehlp/access.c index 39e7afa10e1..009d6f72469 100644 --- a/dlls/imagehlp/access.c +++ b/dlls/imagehlp/access.c @@ -87,7 +87,7 @@ DWORD WINAPI GetImageUnusedHeaderBytes( /*********************************************************************** * ImageLoad (IMAGEHLP.@) */ -PLOADED_IMAGE WINAPI ImageLoad(LPSTR DllName, LPSTR DllPath) +PLOADED_IMAGE WINAPI ImageLoad(PCSTR DllName, PCSTR DllPath) { PLOADED_IMAGE pLoadedImage; @@ -146,7 +146,7 @@ BOOL WINAPI ImageUnload(PLOADED_IMAGE pLoadedImage) /*********************************************************************** * MapAndLoad (IMAGEHLP.@) */ -BOOL WINAPI MapAndLoad(LPSTR pszImageName, LPSTR pszDllPath, PLOADED_IMAGE pLoadedImage, +BOOL WINAPI MapAndLoad(PCSTR pszImageName, PCSTR pszDllPath, PLOADED_IMAGE pLoadedImage, BOOL bDotDll, BOOL bReadOnly) { CHAR szFileName[MAX_PATH]; diff --git a/dlls/imagehlp/modify.c b/dlls/imagehlp/modify.c index 668069ba9e6..8d1710a6bf2 100644 --- a/dlls/imagehlp/modify.c +++ b/dlls/imagehlp/modify.c @@ -36,7 +36,7 @@ static WORD CalcCheckSum(DWORD StartValue, LPVOID BaseAddress, DWORD WordCount); * BindImage (IMAGEHLP.@) */ BOOL WINAPI BindImage( - LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath) + PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath) { return BindImageEx(0, ImageName, DllPath, SymbolPath, NULL); } @@ -45,7 +45,7 @@ BOOL WINAPI BindImage( * BindImageEx (IMAGEHLP.@) */ BOOL WINAPI BindImageEx( - DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath, + DWORD Flags, PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath, PIMAGEHLP_STATUS_ROUTINE StatusRoutine) { FIXME("(%d, %s, %s, %s, %p): stub\n", @@ -138,7 +138,7 @@ PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile( * MapFileAndCheckSumA (IMAGEHLP.@) */ DWORD WINAPI MapFileAndCheckSumA( - LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum) + PCSTR Filename, PDWORD HeaderSum, PDWORD CheckSum) { HANDLE hFile; HANDLE hMapping; @@ -204,7 +204,7 @@ DWORD WINAPI MapFileAndCheckSumA( * MapFileAndCheckSumW (IMAGEHLP.@) */ DWORD WINAPI MapFileAndCheckSumW( - LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum) + PCWSTR Filename, PDWORD HeaderSum, PDWORD CheckSum) { HANDLE hFile; HANDLE hMapping; @@ -270,10 +270,10 @@ DWORD WINAPI MapFileAndCheckSumW( * ReBaseImage (IMAGEHLP.@) */ BOOL WINAPI ReBaseImage( - LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase, + PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase, BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize, - ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize, - ULONG *NewImageBase, ULONG TimeStamp) + ULONG *OldImageSize, ULONG_PTR *OldImageBase, ULONG *NewImageSize, + ULONG_PTR *NewImageBase, ULONG TimeStamp) { FIXME( "(%s, %s, %d, %d, %d, %d, %p, %p, %p, %p, %d): stub\n", @@ -311,8 +311,8 @@ VOID WINAPI RemoveRelocations(PCHAR ImageName) * SplitSymbols (IMAGEHLP.@) */ BOOL WINAPI SplitSymbols( - LPSTR ImageName, LPSTR SymbolsPath, - LPSTR SymbolFilePath, DWORD Flags) + PSTR ImageName, PCSTR SymbolsPath, + PSTR SymbolFilePath, ULONG Flags) { FIXME("(%s, %s, %s, %d): stub\n", debugstr_a(ImageName), debugstr_a(SymbolsPath), @@ -326,8 +326,8 @@ BOOL WINAPI SplitSymbols( * UpdateDebugInfoFile (IMAGEHLP.@) */ BOOL WINAPI UpdateDebugInfoFile( - LPSTR ImageFileName, LPSTR SymbolPath, - LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders) + PCSTR ImageFileName, PCSTR SymbolPath, + PSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders) { FIXME("(%s, %s, %s, %p): stub\n", debugstr_a(ImageFileName), debugstr_a(SymbolPath), @@ -341,8 +341,8 @@ BOOL WINAPI UpdateDebugInfoFile( * UpdateDebugInfoFileEx (IMAGEHLP.@) */ BOOL WINAPI UpdateDebugInfoFileEx( - LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath, - PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum) + PCSTR ImageFileName, PCSTR SymbolPath, PSTR DebugFilePath, + PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum) { FIXME("(%s, %s, %s, %p, %d): stub\n", debugstr_a(ImageFileName), debugstr_a(SymbolPath), diff --git a/dlls/inkobj/inkobj.c b/dlls/inkobj/inkobj.c index 517b6a7a6ce..d1cae736ea2 100644 --- a/dlls/inkobj/inkobj.c +++ b/dlls/inkobj/inkobj.c @@ -38,7 +38,6 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) { case DLL_WINE_PREATTACH: return FALSE; /* prefer native version */ - break; case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls( hinst ); INKOBJ_hInstance = hinst; diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c index 8d2c7aab34f..e27d0e869c3 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -40,10 +40,11 @@ static const struct static IMAGE_NT_HEADERS nt_header = { IMAGE_NT_SIGNATURE, /* Signature */ + { #if defined __i386__ - { IMAGE_FILE_MACHINE_I386, /* Machine */ + IMAGE_FILE_MACHINE_I386, /* Machine */ #elif defined __x86_64__ - { IMAGE_FILE_MACHINE_AMD64, /* Machine */ + IMAGE_FILE_MACHINE_AMD64, /* Machine */ #else # error You must specify the machine type #endif diff --git a/dlls/mapi32/mapi32_main.c b/dlls/mapi32/mapi32_main.c index 983dc2451dc..a985ac62c86 100644 --- a/dlls/mapi32/mapi32_main.c +++ b/dlls/mapi32/mapi32_main.c @@ -25,6 +25,7 @@ #include "winerror.h" #include "objbase.h" #include "mapix.h" +#include "mapiform.h" #include "mapi.h" #include "wine/debug.h" diff --git a/dlls/mpr/mpr_Pl.rc b/dlls/mpr/mpr_Pl.rc index 40263b0ec56..a6f2446f3ea 100644 --- a/dlls/mpr/mpr_Pl.rc +++ b/dlls/mpr/mpr_Pl.rc @@ -28,7 +28,7 @@ STRINGTABLE DISCARDABLE IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "WprowadŸ has³o do sieci" +CAPTION "Wpisz has³o sieci" FONT 8, "MS Shell Dlg" { LTEXT "Proszê wprowadziæ nazwê u¿ytkownika i has³o:", IDC_EXPLAIN, 40, 6, 150, 15 @@ -40,7 +40,7 @@ FONT 8, "MS Shell Dlg" LTEXT "" IDC_REALM, 80, 46, 150, 14, 0 EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD - CHECKBOX "&Zapamiêtaj to has³o (nie bezpieczne)", IDC_SAVEPASSWORD, + CHECKBOX "&Zapisz to has³o (niebezpieczne)", IDC_SAVEPASSWORD, 80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON PUSHBUTTON "Anuluj", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c index fd2c0a9d0e0..678b34680eb 100644 --- a/dlls/mscoree/mscoree_main.c +++ b/dlls/mscoree/mscoree_main.c @@ -27,6 +27,9 @@ #include "winreg.h" #include "ole2.h" +#include "cor.h" +#include "mscoree.h" + #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL( mscoree ); @@ -123,7 +126,7 @@ static LPWSTR get_mono_exe(void) return ret; } -int WINAPI _CorExeMain(void) +__int32 WINAPI _CorExeMain(void) { STARTUPINFOW si; PROCESS_INFORMATION pi; @@ -168,7 +171,7 @@ int WINAPI _CorExeMain(void) return (int)exit_code; } -int WINAPI _CorExeMain2(PBYTE ptrMemory, DWORD cntMemory, LPCWSTR imageName, LPCWSTR loaderName, LPCWSTR cmdLine) +__int32 WINAPI _CorExeMain2(PBYTE ptrMemory, DWORD cntMemory, LPWSTR imageName, LPWSTR loaderName, LPWSTR cmdLine) { TRACE("(%p, %u, %s, %s, %s)\n", ptrMemory, cntMemory, debugstr_w(imageName), debugstr_w(loaderName), debugstr_w(cmdLine)); FIXME("Directly running .NET applications not supported.\n"); @@ -181,12 +184,12 @@ void WINAPI CorExitProcess(int exitCode) ExitProcess(exitCode); } -void WINAPI _CorImageUnloading(LPCVOID* imageBase) +VOID WINAPI _CorImageUnloading(PVOID imageBase) { TRACE("(%p): stub\n", imageBase); } -DWORD WINAPI _CorValidateImage(LPCVOID* imageBase, LPCWSTR imageName) +HRESULT WINAPI _CorValidateImage(PVOID* imageBase, LPCWSTR imageName) { TRACE("(%p, %s): stub\n", imageBase, debugstr_w(imageName)); return E_FAIL; diff --git a/dlls/mshtml/main.c b/dlls/mshtml/main.c index 9a2a4f0084f..6ed2549b38c 100644 --- a/dlls/mshtml/main.c +++ b/dlls/mshtml/main.c @@ -54,7 +54,7 @@ static HINSTANCE shdoclc = NULL; static ITypeLib *typelib; static ITypeInfo *typeinfos[LAST_tid]; -static const REFIID tid_ids[] = { +static REFIID tid_ids[] = { &IID_IHTMLWindow2 }; diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c index 390113e2934..a44b918f485 100644 --- a/dlls/msi/custom.c +++ b/dlls/msi/custom.c @@ -153,7 +153,8 @@ static LPWSTR msi_get_deferred_action(LPCWSTR action, LPCWSTR actiondata, return strdupW(action); len = lstrlenW(action) + lstrlenW(actiondata) + - lstrlenW(usersid) + lstrlenW(prodcode) + 5; + lstrlenW(usersid) + lstrlenW(prodcode) + + lstrlenW(format) - 7; deferred = msi_alloc(len * sizeof(WCHAR)); sprintfW(deferred, format, actiondata, usersid, prodcode, action); diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index b669c37225c..47c08a92237 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -732,7 +732,7 @@ UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes) return ERROR_SUCCESS; } -UINT WINAPI MsiQueryComponentStateA(LPSTR szProductCode, LPSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szComponent, INSTALLSTATE *pdwState) +UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCSTR szComponent, INSTALLSTATE *pdwState) { FIXME("(%s, %s, %d, %s, %p): stub!\n", debugstr_a(szProductCode), debugstr_a(szUserSid), dwContext, debugstr_a(szComponent), pdwState); @@ -1009,14 +1009,14 @@ UINT WINAPI MsiProvideAssemblyW( LPCWSTR szAssemblyName, LPCWSTR szAppContext, } UINT WINAPI MsiProvideComponentFromDescriptorA( LPCSTR szDescriptor, - LPSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) + LPSTR szPath, LPDWORD pcchPath, LPDWORD pcchArgs ) { FIXME("%s %p %p %p\n", debugstr_a(szDescriptor), szPath, pcchPath, pcchArgs ); return ERROR_CALL_NOT_IMPLEMENTED; } UINT WINAPI MsiProvideComponentFromDescriptorW( LPCWSTR szDescriptor, - LPWSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) + LPWSTR szPath, LPDWORD pcchPath, LPDWORD pcchArgs ) { FIXME("%s %p %p %p\n", debugstr_w(szDescriptor), szPath, pcchPath, pcchArgs ); return ERROR_CALL_NOT_IMPLEMENTED; @@ -1583,9 +1583,9 @@ static UINT WINAPI MSI_ProvideQualifiedComponentEx(LPCWSTR szComponent, * MsiProvideQualifiedComponentExW [MSI.@] */ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, - LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR szProduct, + LPCWSTR szQualifier, DWORD dwInstallMode, LPCWSTR szProduct, DWORD Unused1, DWORD Unused2, LPWSTR lpPathBuf, - DWORD* pcchPathBuf) + LPDWORD pcchPathBuf) { awstring path; @@ -1600,9 +1600,9 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, * MsiProvideQualifiedComponentExA [MSI.@] */ UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR szComponent, - LPCSTR szQualifier, DWORD dwInstallMode, LPSTR szProduct, + LPCSTR szQualifier, DWORD dwInstallMode, LPCSTR szProduct, DWORD Unused1, DWORD Unused2, LPSTR lpPathBuf, - DWORD* pcchPathBuf) + LPDWORD pcchPathBuf) { LPWSTR szwComponent, szwQualifier = NULL, szwProduct = NULL; UINT r = ERROR_OUTOFMEMORY; diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c index 013d1529389..6aedc711130 100644 --- a/dlls/msi/registry.c +++ b/dlls/msi/registry.c @@ -1387,7 +1387,7 @@ UINT WINAPI MsiEnumPatchesW( LPCWSTR szProduct, DWORD iPatchIndex, } UINT WINAPI MsiEnumProductsExA( LPCSTR szProductCode, LPCSTR szUserSid, - DWORD dwContext, DWORD dwIndex, LPSTR szInstalledProductCode, + DWORD dwContext, DWORD dwIndex, CHAR szInstalledProductCode[39], MSIINSTALLCONTEXT* pdwInstalledContext, LPSTR szSid, LPDWORD pcchSid) { FIXME("%s %s %d %d %p %p %p %p\n", debugstr_a(szProductCode), debugstr_a(szUserSid), @@ -1397,7 +1397,7 @@ UINT WINAPI MsiEnumProductsExA( LPCSTR szProductCode, LPCSTR szUserSid, } UINT WINAPI MsiEnumProductsExW( LPCWSTR szProductCode, LPCWSTR szUserSid, - DWORD dwContext, DWORD dwIndex, LPWSTR szInstalledProductCode, + DWORD dwContext, DWORD dwIndex, WCHAR szInstalledProductCode[39], MSIINSTALLCONTEXT* pdwInstalledContext, LPWSTR szSid, LPDWORD pcchSid) { FIXME("%s %s %d %d %p %p %p %p\n", debugstr_w(szProductCode), debugstr_w(szUserSid), diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 2e5310eca9e..07e38ec6eab 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -593,7 +593,7 @@ int CDECL _mbsnbicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_ } return 0; /* Matched len bytes */ } - return u_strncmp(str,cmp,len); + return u_strncasecmp(str,cmp,len); } /********************************************************************* diff --git a/dlls/msvfw32/msvfw32_Pl.rc b/dlls/msvfw32/msvfw32_Pl.rc index 8c481820d18..53ee33cf28e 100644 --- a/dlls/msvfw32/msvfw32_Pl.rc +++ b/dlls/msvfw32/msvfw32_Pl.rc @@ -43,7 +43,7 @@ FONT 8, "MS Shell Dlg" CONTROL "&Strumieñ",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,81,12 EDITTEXT 895,88,76,22,12 - LTEXT "KB/sec",896,114,78,31,10 + LTEXT "KB/s",896,114,78,31,10 } STRINGTABLE DISCARDABLE diff --git a/dlls/netapi32/access.c b/dlls/netapi32/access.c index 70adc971af8..40b448de6e2 100644 --- a/dlls/netapi32/access.c +++ b/dlls/netapi32/access.c @@ -29,6 +29,7 @@ #include "lmaccess.h" #include "lmapibuf.h" #include "lmerr.h" +#include "lmuse.h" #include "ntsecapi.h" #include "wine/debug.h" #include "wine/unicode.h" diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index d12123a7d6b..9af0d13d561 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1026,7 +1026,7 @@ @ stub ZwImpersonateClientOfPort @ stub ZwImpersonateThread @ stub ZwInitializeRegistry -# @ stub ZwInitiatePowerAction +@ stdcall ZwInitiatePowerAction(long long long long) NtInitiatePowerAction # @ stub ZwIsProcessInJob # @ stub ZwIsSystemResumeAutomatic @ stdcall ZwListenPort(ptr ptr) NtListenPort @@ -1067,7 +1067,7 @@ # @ stub ZwOpenThreadTokenEx @ stdcall ZwOpenTimer(ptr long ptr) NtOpenTimer @ stub ZwPlugPlayControl -# @ stub ZwPowerInformation +@ stdcall ZwPowerInformation(long ptr long ptr long) NtPowerInformation @ stdcall ZwPrivilegeCheck(ptr ptr ptr) NtPrivilegeCheck @ stub ZwPrivilegeObjectAuditAlarm @ stub ZwPrivilegedServiceAuditAlarm @@ -1083,7 +1083,7 @@ @ stdcall ZwQueryDirectoryObject(long ptr long long long ptr ptr) NtQueryDirectoryObject @ stub ZwQueryEaFile @ stdcall ZwQueryEvent(long long ptr long ptr) NtQueryEvent -# @ stub ZwQueryFullAttributesFile +@ stdcall ZwQueryFullAttributesFile(ptr ptr) NtQueryFullAttributesFile @ stdcall ZwQueryInformationAtom(long long ptr long ptr) NtQueryInformationAtom @ stdcall ZwQueryInformationFile(long ptr ptr long long) NtQueryInformationFile # @ stub ZwQueryInformationJobObject @@ -1095,7 +1095,7 @@ @ stub ZwQueryIntervalProfile @ stdcall ZwQueryIoCompletion(long long ptr long ptr) NtQueryIoCompletion @ stdcall ZwQueryKey(long long ptr long ptr) NtQueryKey -# @ stub ZwQueryMultipleValueKey +@ stdcall ZwQueryMultipleValueKey(long ptr long ptr long ptr) NtQueryMultipleValueKey @ stdcall ZwQueryMutant(long long ptr long ptr) NtQueryMutant @ stdcall ZwQueryObject(long long long long long) NtQueryObject @ stub ZwQueryOpenSubKeys @@ -1115,7 +1115,7 @@ @ stdcall ZwQueryValueKey(long ptr long ptr long ptr) NtQueryValueKey @ stdcall ZwQueryVirtualMemory(long ptr long ptr long ptr) NtQueryVirtualMemory @ stdcall ZwQueryVolumeInformationFile(long ptr ptr long long) NtQueryVolumeInformationFile -# @ stub ZwQueueApcThread +@ stdcall ZwQueueApcThread(long ptr long long long) NtQueueApcThread @ stdcall ZwRaiseException(ptr ptr long) NtRaiseException @ stub ZwRaiseHardError @ stdcall ZwReadFile(long long long long long long long long long) NtReadFile @@ -1190,7 +1190,7 @@ @ stdcall ZwSetValueKey(long long long long long long) NtSetValueKey @ stdcall ZwSetVolumeInformationFile(long ptr ptr long long) NtSetVolumeInformationFile @ stdcall ZwShutdownSystem(long) NtShutdownSystem -# @ stub ZwSignalAndWaitForSingleObject +@ stdcall ZwSignalAndWaitForSingleObject(long long long ptr) NtSignalAndWaitForSingleObject @ stub ZwStartProfile @ stub ZwStopProfile # @ stub ZwSuspendProcess diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c index ca46d0144f8..b12a85b62d7 100644 --- a/dlls/oleaut32/olepicture.c +++ b/dlls/oleaut32/olepicture.c @@ -1443,7 +1443,8 @@ static HRESULT OLEPictureImpl_LoadPNG(OLEPictureImpl *This, BYTE *xbuf, ULONG xr ppng_read_info(png_ptr, info_ptr); if(!(png_ptr->color_type == PNG_COLOR_TYPE_RGB || - png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)){ + png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || + png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)){ FIXME("Unsupported .PNG type: %d\n", png_ptr->color_type); ret = E_FAIL; goto pngend; diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index f3da2819e7e..82310388250 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -4153,7 +4153,7 @@ typedef struct DECIMAL_internal static HRESULT VARIANT_DI_FromR4(float source, VARIANT_DI * dest); static HRESULT VARIANT_DI_FromR8(double source, VARIANT_DI * dest); static void VARIANT_DIFromDec(const DECIMAL * from, VARIANT_DI * to); -static void VARIANT_DecFromDI(VARIANT_DI * from, DECIMAL * to); +static void VARIANT_DecFromDI(const VARIANT_DI * from, DECIMAL * to); /************************************************************************ * VarDecFromR4 (OLEAUT32.193) @@ -4623,7 +4623,7 @@ static void VARIANT_DIFromDec(const DECIMAL * from, VARIANT_DI * to) to->bitsnum[2] = DEC_HI32(from); } -static void VARIANT_DecFromDI(VARIANT_DI * from, DECIMAL * to) +static void VARIANT_DecFromDI(const VARIANT_DI * from, DECIMAL * to) { if (from->sign) { DEC_SIGNSCALE(to) = SIGNSCALE(DECIMAL_NEG, from->scale); @@ -4672,7 +4672,7 @@ static unsigned char VARIANT_int_divbychar(DWORD * p, unsigned int n, unsigned c } /* check to test if encoded number is a zero. Returns 1 if zero, 0 for nonzero */ -static int VARIANT_int_iszero(DWORD * p, unsigned int n) +static int VARIANT_int_iszero(const DWORD * p, unsigned int n) { for (; n > 0; n--) if (*p++ != 0) return 0; return 1; @@ -4683,7 +4683,7 @@ static int VARIANT_int_iszero(DWORD * p, unsigned int n) digits when scale > 0 in order to fit an overflowing result. Final overflow flag is returned. */ -static int VARIANT_DI_mul(VARIANT_DI * a, VARIANT_DI * b, VARIANT_DI * result) +static int VARIANT_DI_mul(const VARIANT_DI * a, const VARIANT_DI * b, VARIANT_DI * result) { int r_overflow = 0; DWORD running[6]; @@ -4779,7 +4779,7 @@ static int VARIANT_DI_mul(VARIANT_DI * a, VARIANT_DI * b, VARIANT_DI * result) hardcoded (period for decimal separator, dash as negative sign). Returns 0 for success, nonzero if insufficient space in output buffer. */ -static int VARIANT_DI_tostringW(VARIANT_DI * a, WCHAR * s, unsigned int n) +static int VARIANT_DI_tostringW(const VARIANT_DI * a, WCHAR * s, unsigned int n) { int overflow = 0; DWORD quotient[3]; @@ -4886,7 +4886,7 @@ static void VARIANT_int_shiftleft(DWORD * p, unsigned int n, unsigned int shift) Value at v is incremented by the value at p. Any size is supported, provided that v is not shorter than p. Any unapplied carry is returned as a result. */ -static unsigned char VARIANT_int_add(DWORD * v, unsigned int nv, DWORD * p, +static unsigned char VARIANT_int_add(DWORD * v, unsigned int nv, const DWORD * p, unsigned int np) { unsigned char carry = 0; @@ -4925,7 +4925,7 @@ static unsigned char VARIANT_int_add(DWORD * v, unsigned int nv, DWORD * p, was then heavily modified by me (Alex Villacis Lasso) in order to handle variably-scaled integers such as the MS DECIMAL representation. */ -static void VARIANT_int_div(DWORD * p, unsigned int n, DWORD * divisor, +static void VARIANT_int_div(DWORD * p, unsigned int n, const DWORD * divisor, unsigned int dn) { unsigned int i; @@ -5126,7 +5126,8 @@ static int VARIANT_int_addlossy( 0 if the division was completed (even if quotient is set to 0), or nonzero in case of quotient overflow. */ -static HRESULT VARIANT_DI_div(VARIANT_DI * dividend, VARIANT_DI * divisor, VARIANT_DI * quotient) +static HRESULT VARIANT_DI_div(const VARIANT_DI * dividend, const VARIANT_DI * divisor, + VARIANT_DI * quotient) { HRESULT r_overflow = S_OK; @@ -6342,7 +6343,7 @@ HRESULT WINAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut) return VARIANT_BstrFromUInt(ul64, lcid, dwFlags, pbstrOut); } -static BSTR VARIANT_BstrReplaceDecimal(WCHAR * buff, LCID lcid, ULONG dwFlags) +static BSTR VARIANT_BstrReplaceDecimal(const WCHAR * buff, LCID lcid, ULONG dwFlags) { BSTR bstrOut; WCHAR lpDecimalSep[16]; diff --git a/dlls/oledlg/oledlg_Pl.rc b/dlls/oledlg/oledlg_Pl.rc index 36aaaa4846b..1777dcb053a 100644 --- a/dlls/oledlg/oledlg_Pl.rc +++ b/dlls/oledlg/oledlg_Pl.rc @@ -21,7 +21,7 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 310, 151 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Wstaw objekt" +CAPTION "Wstaw obiekt" FONT 8, "MS Shell Dlg" BEGIN LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT | @@ -48,7 +48,7 @@ END STRINGTABLE DISCARDABLE { - IDS_RESULTOBJDESC "Wstaw nowy objekt %s do dokumentu" + IDS_RESULTOBJDESC "Wstaw nowy obiekt %s do dokumentu" IDS_RESULTFILEOBJDESC "Wstaw zawartoœæ pliku jako obiekt do dokumentu. Bêdzie mo¿na go aktywowaæ u¿ywaj¹c programu, który go stworzy³." IDS_BROWSE "Przegl¹daj" IDS_NOTOLEMOD "Plik nie wydaje siê byæ poprawnym modu³em OLE. Nie uda³o siê zarejestrowaæ kontrolki OLE." @@ -63,7 +63,7 @@ BEGIN LTEXT "�ród³o:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP CONTROL "&Wklej", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 6, 38, 55, 10 - CONTROL "Wklej &³¹czê", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE, + CONTROL "Wklej &³¹cze", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE, 6, 63, 55, 10 LTEXT "&Jako:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE @@ -83,14 +83,14 @@ END STRINGTABLE DISCARDABLE { - IDS_PS_PASTE_DATA "Wstawia zawartoœæ schowka do documentu jako %s." + IDS_PS_PASTE_DATA "Wstawia zawartoœæ schowka do dokumentu jako %s." IDS_PS_PASTE_OBJECT "Wstawia zawartoœæ schowka do dokumentu, tak aby móg³ byæ aktywowany za pomoc¹ %s." - IDS_PS_PASTE_OBJECT_AS_ICON "Wstawia zawartoœæ schowka do dokumentu, tak aby móg³ byæ aktywowany za pomoc¹ %s. Bêdzie wyœwietlany jako ikona." - IDS_PS_PASTE_LINK_DATA "Wstawia zawartoœæ schowka do documentu jako %s. Dane bêd¹ po³¹czone z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." - IDS_PS_PASTE_LINK_OBJECT "Wstawia zawartoœæ schowka do documentu jako obraz. Obraz bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." - IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Wstawia do documentu skrót do zawartoœci schowka. Skrót bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." + IDS_PS_PASTE_OBJECT_AS_ICON "Wstawia zawartoœæ schowka do dokumentu, tak aby móg³ byæ aktywowany za pomoc¹ %s. Bêdzie wyœwietlany jako ikona." + IDS_PS_PASTE_LINK_DATA "Wstawia zawartoœæ schowka do dokumentu jako %s. Dane bêd¹ po³¹czone z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." + IDS_PS_PASTE_LINK_OBJECT "Wstawia zawartoœæ schowka do dokumentu jako obraz. Obraz bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." + IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Wstawia do documentu skrót do zawartoœci schowka. Skrót bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie." IDS_PS_NON_OLE "Wstawia zawartoœæ schowka do dokumentu" IDS_PS_UNKNOWN_TYPE "Nieznany typ" IDS_PS_UNKNOWN_SRC "Nieznane Ÿród³o" - IDS_PS_UNKNOWN_APP "program który go stworzy³" + IDS_PS_UNKNOWN_APP "program, który go stworzy³" } diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c index 0835fa32349..a3d399cc79c 100644 --- a/dlls/oledlg/pastespl.c +++ b/dlls/oledlg/pastespl.c @@ -83,7 +83,7 @@ static void dump_ps_flags(DWORD flags) TRACE("flags %08x %s\n", flags, flagstr); } -static void dump_pastespecial(LPOLEUIPASTESPECIALW ps) +static void dump_pastespecial(const OLEUIPASTESPECIALW *ps) { UINT i; dump_ps_flags(ps->dwFlags); @@ -363,7 +363,7 @@ static void init_lists(HWND hdlg, ps_struct_t *ps_struct) EnableWindow(GetDlgItem(hdlg, IDOK), 0); } -static void update_src_text(HWND hdlg, ps_struct_t *ps_struct) +static void update_src_text(HWND hdlg, const ps_struct_t *ps_struct) { WCHAR *str; @@ -403,7 +403,7 @@ static void update_as_icon(HWND hdlg, ps_struct_t *ps_struct) EnableWindow(change_icon, 0); } -static void update_result_text(HWND hdlg, ps_struct_t *ps_struct) +static void update_result_text(HWND hdlg, const ps_struct_t *ps_struct) { WCHAR resource_txt[200]; UINT res_id; diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c index efb1cd621a8..6ef1d25c867 100644 --- a/dlls/opengl32/tests/opengl.c +++ b/dlls/opengl32/tests/opengl.c @@ -30,7 +30,13 @@ static const char* (WINAPI *pwglGetExtensionsStringARB)(HDC); static int (WINAPI *pwglReleasePbufferDCARB)(HPBUFFERARB, HDC); /* WGL_ARB_pixel_format */ +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_ALPHA_BITS_ARB 0x201B static BOOL (WINAPI *pwglChoosePixelFormatARB)(HDC, const int *, const FLOAT *, UINT, int *, UINT *); +static BOOL (WINAPI *pwglGetPixelFormatAttribivARB)(HDC, int, int, UINT, const int *, int *); /* WGL_ARB_pbuffer */ #define WGL_DRAW_TO_PBUFFER_ARB 0x202D @@ -46,6 +52,7 @@ static void init_functions(void) /* WGL_ARB_pixel_format */ pwglChoosePixelFormatARB = (void*)wglGetProcAddress("wglChoosePixelFormatARB"); + pwglGetPixelFormatAttribivARB = (void*)wglGetProcAddress("wglGetPixelFormatAttribivARB"); /* WGL_ARB_pbuffer */ pwglCreatePbufferARB = (void*)wglGetProcAddress("wglCreatePbufferARB"); @@ -188,6 +195,36 @@ static void test_setpixelformat(void) ok(res == 0, "SetPixelFormat on main device context should fail\n"); } +static void test_colorbits(HDC hdc) +{ + const int iAttribList[] = { WGL_COLOR_BITS_ARB, WGL_RED_BITS_ARB, WGL_GREEN_BITS_ARB, + WGL_BLUE_BITS_ARB, WGL_ALPHA_BITS_ARB }; + int iAttribRet[sizeof(iAttribList)/sizeof(iAttribList[0])]; + const int iAttribs[] = { WGL_ALPHA_BITS_ARB, 1, 0 }; + unsigned int nFormats; + int res; + int iPixelFormat = 0; + + /* We need a pixel format with at least one bit of alpha */ + res = pwglChoosePixelFormatARB(hdc, iAttribs, NULL, 1, &iPixelFormat, &nFormats); + if(res == FALSE || nFormats == 0) + { + skip("No suitable pixel formats found\n"); + return; + } + + res = pwglGetPixelFormatAttribivARB(hdc, iPixelFormat, 0, + sizeof(iAttribList)/sizeof(iAttribList[0]), iAttribList, iAttribRet); + if(res == FALSE) + { + skip("wglGetPixelFormatAttribivARB failed\n"); + return; + } + iAttribRet[1] += iAttribRet[2]+iAttribRet[3]+iAttribRet[4]; + ok(iAttribRet[0] == iAttribRet[1], "WGL_COLOR_BITS_ARB (%d) does not equal R+G+B+A (%d)!\n", + iAttribRet[0], iAttribRet[1]); +} + START_TEST(opengl) { HWND hwnd; @@ -236,6 +273,7 @@ START_TEST(opengl) init_functions(); test_setpixelformat(); + test_colorbits(hdc); wgl_extensions = pwglGetExtensionsStringARB(hdc); if(wgl_extensions == NULL) skip("Skipping opengl32 tests because this OpenGL implementation doesn't support WGL extensions!\n"); diff --git a/dlls/shell32/shres.rc b/dlls/shell32/shres.rc index 5d8722e4764..a4ac7242e55 100644 --- a/dlls/shell32/shres.rc +++ b/dlls/shell32/shres.rc @@ -12401,6 +12401,9 @@ IDR_AVI_FINDCOMPUTER AVI searching.avi /* BINRES filenuke.avi */ IDR_AVI_FILENUKE AVI searching.avi +/* BINRES filedelete.avi */ +IDR_AVI_FILEDELETE AVI searching.avi + /*--------------------- END FIXME ------------------------*/ /* diff --git a/dlls/shell32/shresdef.h b/dlls/shell32/shresdef.h index 1e5c76fbe04..3c76d05f96a 100644 --- a/dlls/shell32/shresdef.h +++ b/dlls/shell32/shresdef.h @@ -154,5 +154,6 @@ FIXME: Need to add them, but for now just let them use the same: searching.avi #define IDR_AVI_FILEMOVE 160 #define IDR_AVI_FILECOPY 161 #define IDR_AVI_FILENUKE 163 +#define IDR_AVI_FILEDELETE 164 #endif diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c index 187fb0309ca..1b2758e361c 100644 --- a/dlls/urlmon/tests/url.c +++ b/dlls/urlmon/tests/url.c @@ -774,12 +774,7 @@ static void test_BindToStorage(int protocol, BOOL emul) ok(SUCCEEDED(hres), "CreateAsyncBindCtx failed: %08x\n\n", hres); if(FAILED(hres)) return; - if(test_protocol == HTTP_TEST || - test_protocol == ABOUT_TEST || - (emul && test_protocol == FILE_TEST)) todo_wine - CHECK_CALLED(QueryInterface_IServiceProvider); - else - CHECK_CALLED(QueryInterface_IServiceProvider); + todo_wine CHECK_CALLED(QueryInterface_IServiceProvider); SET_EXPECT(QueryInterface_IServiceProvider); hres = RegisterBindStatusCallback(bctx, &bsc, &previousclb, 0); @@ -863,10 +858,12 @@ static void test_BindToStorage(int protocol, BOOL emul) CHECK_CALLED(GetBindInfo); CHECK_CALLED(OnStartBinding); if(emulate_protocol) { + todo_wine CHECK_NOT_CALLED(QueryInterface_IServiceProvider); CHECK_CALLED(Start); CHECK_CALLED(UnlockRequest); }else { if(test_protocol == HTTP_TEST) { + CHECK_NOT_CALLED(QueryInterface_IServiceProvider); todo_wine CHECK_CALLED(QueryInterface_IHttpNegotiate); todo_wine CHECK_CALLED(BeginningTransaction); /* QueryInterface_IHttpNegotiate2 and GetRootSecurityId diff --git a/dlls/winealsa.drv/wavein.c b/dlls/winealsa.drv/wavein.c index 412edd24c55..085d6ace158 100644 --- a/dlls/winealsa.drv/wavein.c +++ b/dlls/winealsa.drv/wavein.c @@ -93,7 +93,7 @@ static DWORD widNotifyClient(WINE_WAVEDEV* wwi, WORD wMsg, DWORD dwParam1, DWORD /************************************************************************** * widGetDevCaps [internal] */ -static DWORD widGetDevCaps(WORD wDevID, LPWAVEOUTCAPSW lpCaps, DWORD dwSize) +static DWORD widGetDevCaps(WORD wDevID, LPWAVEINCAPSW lpCaps, DWORD dwSize) { TRACE("(%u, %p, %u);\n", wDevID, lpCaps, dwSize); @@ -861,7 +861,7 @@ DWORD WINAPI ALSA_widMessage(UINT wDevID, UINT wMsg, DWORD dwUser, case WIDM_ADDBUFFER: return widAddBuffer (wDevID, (LPWAVEHDR)dwParam1, dwParam2); case WIDM_PREPARE: return MMSYSERR_NOTSUPPORTED; case WIDM_UNPREPARE: return MMSYSERR_NOTSUPPORTED; - case WIDM_GETDEVCAPS: return widGetDevCaps (wDevID, (LPWAVEOUTCAPSW)dwParam1, dwParam2); + case WIDM_GETDEVCAPS: return widGetDevCaps (wDevID, (LPWAVEINCAPSW)dwParam1, dwParam2); case WIDM_GETNUMDEVS: return widGetNumDevs (); case WIDM_GETPOS: return widGetPosition (wDevID, (LPMMTIME)dwParam1, dwParam2); case WIDM_RESET: return widReset (wDevID); diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c index 278bb399c60..9ad27b768f3 100644 --- a/dlls/wined3d/basetexture.c +++ b/dlls/wined3d/basetexture.c @@ -403,10 +403,15 @@ void WINAPI IWineD3DBaseTextureImpl_ApplyStateChanges(IWineD3DBaseTexture *iface break; case WINED3DSAMP_MINFILTER: - This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] = samplerStates[WINED3DSAMP_MIPFILTER]; + case WINED3DSAMP_MAXMIPLEVEL: case WINED3DSAMP_MIPFILTER: /* fall through */ { GLint glValue; + + This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] = samplerStates[WINED3DSAMP_MIPFILTER]; + This->baseTexture.states[WINED3DTEXSTA_MINFILTER] = samplerStates[WINED3DSAMP_MINFILTER]; + This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL] = samplerStates[WINED3DSAMP_MAXMIPLEVEL]; + *state = samplerStates[textureObjectSamplerStates[i].state]; if (This->baseTexture.states[WINED3DTEXSTA_MINFILTER] < WINED3DTEXF_NONE || This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] < WINED3DTEXF_NONE || @@ -428,14 +433,17 @@ void WINAPI IWineD3DBaseTextureImpl_ApplyStateChanges(IWineD3DBaseTexture *iface This->baseTexture.states[WINED3DTEXSTA_MIPFILTER], glValue); glTexParameteri(textureDimensions, GL_TEXTURE_MIN_FILTER, glValue); checkGLcall("glTexParameter GL_TEXTURE_MIN_FILTER, ..."); + + if(This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] == WINED3DTEXF_NONE) { + glValue = 0; + } else if(This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL] >= This->baseTexture.levels) { + glValue = This->baseTexture.levels - 1; + } else { + glValue = This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL]; + } + glTexParameteri(textureDimensions, GL_TEXTURE_BASE_LEVEL, glValue); } break; - case WINED3DSAMP_MAXMIPLEVEL: - *state = samplerStates[textureObjectSamplerStates[i].state]; - /** - * Not really the same, but the more apprioprate than nothing - */ - glTexParameteri(textureDimensions, GL_TEXTURE_BASE_LEVEL, *state); break; case WINED3DSAMP_MAXANISOTROPY: *state = samplerStates[textureObjectSamplerStates[i].state]; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index ccb8583479b..c1a8364601c 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1359,7 +1359,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic ReleaseDC(0, hdc); /* Change the display settings */ - memset(&devmode, 0, sizeof(DEVMODEW)); + memset(&devmode, 0, sizeof(devmode)); + devmode.dmSize = sizeof(devmode); devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; devmode.dmBitsPerPel = (bpp >= 24) ? 32 : bpp; /* Stupid XVidMode cannot change bpp */ devmode.dmPelsWidth = pPresentationParameters->BackBufferWidth; @@ -2042,6 +2043,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetDisplayMode(IWineD3DDevice *iface, U * but we don't have any hwnd */ + memset(&devmode, 0, sizeof(devmode)); + devmode.dmSize = sizeof(devmode); devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; devmode.dmBitsPerPel = formatDesc->bpp * 8; if(devmode.dmBitsPerPel == 24) devmode.dmBitsPerPel = 32; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 7da3ef2c547..b3182a5c2c0 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -409,7 +409,7 @@ BOOL IWineD3DImpl_FillGLCaps(WineD3D_GL_Info *gl_info, Display* display) { GLint gl_max; GLfloat gl_floatv[2]; Bool test = 0; - int major, minor; + int major = 1, minor = 0; BOOL return_value = TRUE; int i; @@ -1070,6 +1070,8 @@ static UINT WINAPI IWineD3DImpl_GetAdapterModeCount(IWineD3D *iface, UINT Ad if (!DEBUG_SINGLE_MODE) { DEVMODEW DevModeW; + ZeroMemory(&DevModeW, sizeof(DevModeW)); + DevModeW.dmSize = sizeof(DevModeW); while (EnumDisplaySettingsExW(NULL, j, &DevModeW, 0)) { j++; switch (Format) @@ -1125,6 +1127,9 @@ static HRESULT WINAPI IWineD3DImpl_EnumAdapterModes(IWineD3D *iface, UINT Adapte int i = 0; int j = 0; + ZeroMemory(&DevModeW, sizeof(DevModeW)); + DevModeW.dmSize = sizeof(DevModeW); + /* If we are filtering to a specific format (D3D9), then need to skip all unrelated modes, but if mode is irrelevant (D3D8), then we can just count through the ones with valid bit depths */ @@ -1222,7 +1227,10 @@ static HRESULT WINAPI IWineD3DImpl_GetAdapterDisplayMode(IWineD3D *iface, UINT A int bpp = 0; DEVMODEW DevModeW; - EnumDisplaySettingsExW(NULL, (DWORD)-1, &DevModeW, 0); + ZeroMemory(&DevModeW, sizeof(DevModeW)); + DevModeW.dmSize = sizeof(DevModeW); + + EnumDisplaySettingsExW(NULL, ENUM_CURRENT_SETTINGS, &DevModeW, 0); pMode->Width = DevModeW.dmPelsWidth; pMode->Height = DevModeW.dmPelsHeight; bpp = DevModeW.dmBitsPerPel; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 059120de70e..1557e4d0368 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -153,7 +153,7 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO ENTER_GL(); - ActivateContext(This->wineD3DDevice, This->wineD3DDevice->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD); + ActivateContext(This->wineD3DDevice, This->backBuffer[0], CTXUSAGE_RESOURCELOAD); /* Render the cursor onto the back buffer, using our nifty directdraw blitting code :-) */ if(This->wineD3DDevice->bCursorVisible && This->wineD3DDevice->cursorTexture) { diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 44a543e1a58..ca3c50ac11e 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -619,9 +619,6 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf int drawattrib = 0; int nvfloatattrib = GLX_DONT_CARE; int pixelattrib = 0; - int isColor = 0; - int wantColorBits = 0; - int sz_alpha = 0; /* The list of WGL attributes is allowed to be NULL. We don't return here for NULL * because we need to do fixups for GLX_DRAWABLE_TYPE/GLX_RENDER_TYPE/GLX_FLOAT_COMPONENTS_NV. */ @@ -631,7 +628,8 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf switch (iWGLAttr[cur]) { case WGL_COLOR_BITS_ARB: pop = iWGLAttr[++cur]; - wantColorBits = pop; /** see end */ + PUSH2(oGLXAttr, GLX_BUFFER_SIZE, pop); + TRACE("pAttr[%d] = GLX_BUFFER_SIZE: %d\n", cur, pop); break; case WGL_BLUE_BITS_ARB: pop = iWGLAttr[++cur]; @@ -650,7 +648,6 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf break; case WGL_ALPHA_BITS_ARB: pop = iWGLAttr[++cur]; - sz_alpha = pop; PUSH2(oGLXAttr, GLX_ALPHA_SIZE, pop); TRACE("pAttr[%d] = GLX_ALPHA_SIZE: %d\n", cur, pop); break; @@ -674,7 +671,7 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf pop = iWGLAttr[++cur]; TRACE("pAttr[%d] = WGL_PIXEL_TYPE_ARB: %d\n", cur, pop); switch (pop) { - case WGL_TYPE_COLORINDEX_ARB: pixelattrib = GLX_COLOR_INDEX_BIT; isColor = 1; break ; + case WGL_TYPE_COLORINDEX_ARB: pixelattrib = GLX_COLOR_INDEX_BIT; break ; case WGL_TYPE_RGBA_ARB: pixelattrib = GLX_RGBA_BIT; break ; /* This is the same as WGL_TYPE_RGBA_FLOAT_ATI but the GLX constants differ, only the ARB GLX one is widely supported so use that */ case WGL_TYPE_RGBA_FLOAT_ATI: pixelattrib = GLX_RGBA_FLOAT_BIT; break ; @@ -787,36 +784,6 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf ++cur; } - /** - * Trick as WGL_COLOR_BITS_ARB != GLX_BUFFER_SIZE - * WGL_COLOR_BITS_ARB + WGL_ALPHA_BITS_ARB == GLX_BUFFER_SIZE - * - * WGL_COLOR_BITS_ARB - * The number of color bitplanes in each color buffer. For RGBA - * pixel types, it is the size of the color buffer, excluding the - * alpha bitplanes. For color-index pixels, it is the size of the - * color index buffer. - * - * GLX_BUFFER_SIZE - * This attribute defines the number of bits per color buffer. - * For GLX FBConfigs that correspond to a PseudoColor or StaticColor visual, - * this is equal to the depth value reported in the X11 visual. - * For GLX FBConfigs that correspond to TrueColor or DirectColor visual, - * this is the sum of GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_BLUE_SIZE, and GLX_ALPHA_SIZE. - * - */ - if (0 < wantColorBits) { - if (!isColor) { - wantColorBits += sz_alpha; - } - if (32 < wantColorBits) { - ERR("buggy %d GLX_BUFFER_SIZE default to 32\n", wantColorBits); - wantColorBits = 32; - } - PUSH2(oGLXAttr, GLX_BUFFER_SIZE, wantColorBits); - TRACE("pAttr[%d] = WGL_COLOR_BITS_ARB: %d\n", cur, wantColorBits); - } - /* Apply the OR'd drawable type bitmask now EVEN when WGL_DRAW_TO* is unset. * It is needed in all cases because GLX_DRAWABLE_TYPE default to GLX_WINDOW_BIT. */ PUSH2(oGLXAttr, GLX_DRAWABLE_TYPE, drawattrib); @@ -1292,8 +1259,8 @@ int X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev) { return 1; } - return physDev->current_pf; TRACE("(%p): returns %d\n", physDev, physDev->current_pf); + return physDev->current_pf; } /** @@ -2312,7 +2279,11 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt break; case WGL_PBUFFER_LOST_ARB: - FIXME("unsupported WGL_PBUFFER_LOST_ARB (need glXSelectEvent/GLX_DAMAGED work)\n"); + /* GLX Pbuffers cannot be lost by default. We can support this by + * setting GLX_PRESERVED_CONTENTS to False and using glXSelectEvent + * to receive pixel buffer clobber events, however that may or may + * not give any benefit */ + *piValue = GL_FALSE; break; case WGL_TEXTURE_FORMAT_ARB: @@ -2561,7 +2532,7 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF if (hTest) goto get_error; switch (tmp) { case GLX_NONE: piValues[i] = WGL_FULL_ACCELERATION_ARB; break; - case GLX_SLOW_CONFIG: piValues[i] = WGL_NO_ACCELERATION_ARB; break; + case GLX_SLOW_CONFIG: piValues[i] = WGL_GENERIC_ACCELERATION_ARB; break; case GLX_NON_CONFORMANT_CONFIG: piValues[i] = WGL_FULL_ACCELERATION_ARB; break; default: ERR("unexpected Config Caveat(%x)\n", tmp); @@ -2595,16 +2566,8 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF continue; case WGL_COLOR_BITS_ARB: - /** see ConvertAttribWGLtoGLX for explain */ - if (!fmt) goto pix_error; - hTest = pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_BUFFER_SIZE, piValues + i); - if (hTest) goto get_error; - TRACE("WGL_COLOR_BITS_ARB: GLX_BUFFER_SIZE = %d\n", piValues[i]); - hTest = pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_ALPHA_SIZE, &tmp); - if (hTest) goto get_error; - TRACE("WGL_COLOR_BITS_ARB: GLX_ALPHA_SIZE = %d\n", tmp); - piValues[i] = piValues[i] - tmp; - continue; + curGLXAttr = GLX_BUFFER_SIZE; + break; case WGL_BIND_TO_TEXTURE_RGB_ARB: if (use_render_texture_ati) { diff --git a/include/Makefile.in b/include/Makefile.in index 0810f8140ce..f3702d5a359 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -28,6 +28,7 @@ IDL_H_SRCS = \ mimeinfo.idl \ mlang.idl \ mmstream.idl \ + mscoree.idl \ mshtmhst.idl \ mshtml.idl \ msinkaut.idl \ @@ -85,6 +86,7 @@ SRCDIR_INCLUDES = \ commctrl.h \ commdlg.h \ compobj.h \ + cor.h \ cpl.h \ custcntl.h \ cvconst.h \ @@ -152,6 +154,7 @@ SRCDIR_INCLUDES = \ dshow.h \ dsound.h \ dsrole.h \ + dwmapi.h \ dxdiag.h \ dxerr8.h \ dxerr9.h \ @@ -204,11 +207,13 @@ SRCDIR_INCLUDES = \ lmshare.h \ lmstats.h \ lmuse.h \ + lmuseflg.h \ lmwksta.h \ lzexpand.h \ mapi.h \ mapicode.h \ mapidefs.h \ + mapiform.h \ mapiguid.h \ mapitags.h \ mapiutil.h \ diff --git a/include/advpub.h b/include/advpub.h index e144d6682df..c31df3326b0 100644 --- a/include/advpub.h +++ b/include/advpub.h @@ -19,7 +19,7 @@ #define __WINE_ADVPUB_H #include -/* FIXME: #include */ +#include #ifdef __cplusplus extern "C" { diff --git a/include/lmuse.h b/include/cor.h similarity index 58% copy from include/lmuse.h copy to include/cor.h index 786fb0136ae..cdf89dd88ec 100644 --- a/include/lmuse.h +++ b/include/cor.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Tim Schwartz + * Copyright (C) 2007 Francois Gouget * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,27 +15,29 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _LMUSE_H -#define _LMUSE_H + +#ifndef __WINE_COR_H +#define __WINE_COR_H + +#include "ole2.h" +/* FIXME: #include "specstrings.h" */ +/* FIXME: #include "corerror.h" */ +/* FIXME: #include "corhdr.h" */ #ifdef __cplusplus extern "C" { #endif -typedef struct _USE_INFO_1 { - LMSTR ui1_local, ui1_remote, ui1_password; - DWORD ui1_status, ui1_asg_type, ui1_refcount, ui1_usecount; -} USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1; - -typedef struct _USE_INFO_2 { - LMSTR ui2_local, ui2_remote, ui2_password; - DWORD ui2_status, ui2_asg_type, ui2_refcount, ui2_usecount; - LPWSTR ui2_username; - LMSTR ui2_domainname; -} USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2; +BOOL WINAPI _CorDllMain(HINSTANCE,DWORD,LPVOID); +__int32 WINAPI _CorExeMain(void); +__int32 WINAPI _CorExeMain2(PBYTE,DWORD,LPWSTR,LPWSTR,LPWSTR); +VOID WINAPI _CorImageUnloading(PVOID); +HRESULT WINAPI _CorValidateImage(PVOID*,LPCWSTR); +HRESULT WINAPI CoInitializeCor(DWORD); +void WINAPI CoUninitializeCor(void); #ifdef __cplusplus } #endif -#endif /* ndef _LMUSE_H */ +#endif /* __WINE_COR_H */ diff --git a/include/dbghelp.h b/include/dbghelp.h index 9e7faa5aadc..15282496a4f 100644 --- a/include/dbghelp.h +++ b/include/dbghelp.h @@ -25,6 +25,9 @@ extern "C" { #endif /* defined(__cplusplus) */ +#define IMAGEAPI WINAPI +#define DBHLPAPI IMAGEAPI + typedef struct _LOADED_IMAGE { PSTR ModuleName; diff --git a/include/gdipluspixelformats.h b/include/dwmapi.h similarity index 68% copy from include/gdipluspixelformats.h copy to include/dwmapi.h index 6f50492e775..b2a28b67cb0 100644 --- a/include/gdipluspixelformats.h +++ b/include/dwmapi.h @@ -1,6 +1,4 @@ /* - * Copyright (C) 2007 Google (Evan Stade) - * * 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 @@ -16,10 +14,26 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _GDIPLUSPIXELFORMATS_H -#define _GDIPLUSPIXELFORMATS_H +#ifndef __WINE_DWMAPI_H +#define __WINE_DWMAPI_H + +#include "wtypes.h" +#include "uxtheme.h" -typedef DWORD ARGB; -typedef INT PixelFormat; +#ifdef __cplusplus +extern "C" { +#endif +#ifndef DWMAPI +# define DWMAPI STDAPI +# define DWMAPI_(type) STDAPI_(type) #endif + +DWMAPI DwmEnableComposition(UINT); +DWMAPI DwmIsCompositionEnabled(BOOL*); + +#ifdef __cplusplus +} +#endif + +#endif /* __WINE_DWMAPI_H */ diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index fb15b883c4e..8c96a2c3048 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -166,11 +166,13 @@ GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*); GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*); GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*, GpBitmap**); +GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**); GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**); GpStatus WINGDIPAPI GdipDisposeImage(GpImage*); GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*); GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*); GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*); +GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*); GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*); GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*); GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*); @@ -178,6 +180,9 @@ GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*); GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*); GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*); GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*); +GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT); +GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT); +GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**); GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**); GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID); GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*, diff --git a/include/gdiplusinit.h b/include/gdiplusinit.h index fd7e9e54c8c..22155b7fe30 100644 --- a/include/gdiplusinit.h +++ b/include/gdiplusinit.h @@ -26,6 +26,8 @@ enum DebugEventLevel }; typedef VOID (WINAPI *DebugEventProc)(enum DebugEventLevel, CHAR *); +typedef Status (WINAPI *NotificationHookProc)(ULONG_PTR *); +typedef void (WINAPI *NotificationUnhookProc)(ULONG_PTR); struct GdiplusStartupInput { @@ -49,8 +51,8 @@ struct GdiplusStartupInput struct GdiplusStartupOutput { - ULONG_PTR NotificationHook; - ULONG_PTR NotificationUnhook; + NotificationHookProc NotificationHook; + NotificationUnhookProc NotificationUnhook; }; #ifdef __cplusplus diff --git a/include/gdipluspixelformats.h b/include/gdipluspixelformats.h index 6f50492e775..dd67410e9d0 100644 --- a/include/gdipluspixelformats.h +++ b/include/gdipluspixelformats.h @@ -22,4 +22,30 @@ typedef DWORD ARGB; typedef INT PixelFormat; +#define PixelFormatIndexed 0x00010000 +#define PixelFormatGDI 0x00020000 +#define PixelFormatAlpha 0x00040000 +#define PixelFormatPAlpha 0x00080000 +#define PixelFormatExtended 0x00100000 +#define PixelFormatCanonical 0x00200000 + +#define PixelFormatUndefined 0 +#define PixelFormatDontCare 0 + +#define PixelFormat1bppIndexed (1 | ( 1 << 8) | PixelFormatIndexed | PixelFormatGDI) +#define PixelFormat4bppIndexed (2 | ( 4 << 8) | PixelFormatIndexed | PixelFormatGDI) +#define PixelFormat8bppIndexed (3 | ( 8 << 8) | PixelFormatIndexed | PixelFormatGDI) +#define PixelFormat16bppGrayScale (4 | (16 << 8) | PixelFormatExtended) +#define PixelFormat16bppRGB555 (5 | (16 << 8) | PixelFormatGDI) +#define PixelFormat16bppRGB565 (6 | (16 << 8) | PixelFormatGDI) +#define PixelFormat16bppARGB1555 (7 | (16 << 8) | PixelFormatAlpha | PixelFormatGDI) +#define PixelFormat24bppRGB (8 | (24 << 8) | PixelFormatGDI) +#define PixelFormat32bppRGB (9 | (32 << 8) | PixelFormatGDI) +#define PixelFormat32bppARGB (10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical) +#define PixelFormat32bppPARGB (11 | (32 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI) +#define PixelFormat48bppRGB (12 | (48 << 8) | PixelFormatExtended) +#define PixelFormat64bppARGB (13 | (64 << 8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended) +#define PixelFormat64bppPARGB (14 | (64 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended) +#define PixelFormatMax 15 + #endif diff --git a/include/imagehlp.h b/include/imagehlp.h index 89883d9f752..6e9ac5127ab 100644 --- a/include/imagehlp.h +++ b/include/imagehlp.h @@ -27,6 +27,9 @@ extern "C" { #endif /* defined(__cplusplus) */ +#define IMAGEAPI WINAPI +#define DBHLPAPI IMAGEAPI + #define API_VERSION_NUMBER 7 /* 7 is the default */ /*********************************************************************** @@ -204,7 +207,7 @@ typedef struct _IMAGE_DEBUG_INFORMATION { PIMAGE_SECTION_HEADER Sections; DWORD ExportedNamesSize; - LPSTR ExportedNames; + PSTR ExportedNames; DWORD NumberOfFunctionTableEntries; PIMAGE_FUNCTION_ENTRY FunctionTableEntries; @@ -220,9 +223,9 @@ typedef struct _IMAGE_DEBUG_INFORMATION { DWORD SizeOfCodeViewSymbols; PVOID CodeViewSymbols; - LPSTR ImageFilePath; - LPSTR ImageFileName; - LPSTR DebugFilePath; + PSTR ImageFilePath; + PSTR ImageFileName; + PSTR DebugFilePath; DWORD TimeDateStamp; @@ -299,6 +302,12 @@ typedef struct _SOURCEFILE { PCHAR FileName; } SOURCEFILE, *PSOURCEFILE; +typedef struct _SOURCEFILEW +{ + DWORD64 ModBase; + PWSTR FileName; +} SOURCEFILEW, *PSOURCEFILEW; + typedef struct _IMAGEHLP_STACK_FRAME { DWORD InstructionOffset; @@ -324,6 +333,35 @@ typedef struct _IMAGEHLP_SYMBOL { CHAR Name[ANYSIZE_ARRAY]; } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL; +typedef struct _IMAGEHLP_SYMBOLW { + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + WCHAR Name[ANYSIZE_ARRAY]; +} IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW; + +typedef struct _IMAGEHLP_SYMBOL64 +{ + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR Name[1]; +} IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; + +typedef struct _IMAGEHLP_SYMBOLW64 +{ + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + WCHAR Name[1]; +} IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64; + typedef struct _IMAGEHLP_MODULE { DWORD SizeOfStruct; DWORD BaseOfImage; @@ -337,14 +375,105 @@ typedef struct _IMAGEHLP_MODULE { CHAR LoadedImageName[256]; } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE; +typedef struct _IMAGEHLP_MODULEW { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + WCHAR ModuleName[32]; + WCHAR ImageName[256]; + WCHAR LoadedImageName[256]; +} IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW; + +typedef struct _IMAGEHLP_MODULE64 +{ + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR ModuleName[32]; + CHAR ImageName[256]; + CHAR LoadedImageName[256]; + CHAR LoadedPdbName[256]; + DWORD CVSig; + CHAR CVData[MAX_PATH*3]; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; +} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; + +typedef struct _IMAGEHLP_MODULEW64 +{ + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + WCHAR ModuleName[32]; + WCHAR ImageName[256]; + WCHAR LoadedImageName[256]; + WCHAR LoadedPdbName[256]; + DWORD CVSig; + WCHAR CVData[MAX_PATH*3]; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; +} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; + typedef struct _IMAGEHLP_LINE { DWORD SizeOfStruct; - DWORD Key; + PVOID Key; DWORD LineNumber; PCHAR FileName; DWORD Address; } IMAGEHLP_LINE, *PIMAGEHLP_LINE; +typedef struct _IMAGEHLP_LINEW { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PWSTR FileName; + DWORD Address; +} IMAGEHLP_LINEW, *PIMAGEHLP_LINEW; + +typedef struct _IMAGEHLP_LINE64 { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PCHAR FileName; + DWORD64 Address; +} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; + +typedef struct _IMAGEHLP_LINEW64 { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PWSTR FileName; + DWORD64 Address; +} IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64; + typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { DWORD SizeOfStruct; DWORD BaseOfImage; @@ -361,6 +490,61 @@ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { ULONG SelectedSymbol; } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; +typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO +{ + TI_GET_SYMTAG, + TI_GET_SYMNAME, + TI_GET_LENGTH, + TI_GET_TYPE, + TI_GET_TYPEID, + TI_GET_BASETYPE, + TI_GET_ARRAYINDEXTYPEID, + TI_FINDCHILDREN, + TI_GET_DATAKIND, + TI_GET_ADDRESSOFFSET, + TI_GET_OFFSET, + TI_GET_VALUE, + TI_GET_COUNT, + TI_GET_CHILDRENCOUNT, + TI_GET_BITPOSITION, + TI_GET_VIRTUALBASECLASS, + TI_GET_VIRTUALTABLESHAPEID, + TI_GET_VIRTUALBASEPOINTEROFFSET, + TI_GET_CLASSPARENTID, + TI_GET_NESTED, + TI_GET_SYMINDEX, + TI_GET_LEXICALPARENT, + TI_GET_ADDRESS, + TI_GET_THISADJUST, + TI_GET_UDTKIND, + TI_IS_EQUIV_TO, + TI_GET_CALLING_CONVENTION, +} IMAGEHLP_SYMBOL_TYPE_INFO; + +#define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 +#define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 +typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS +{ + ULONG SizeOfStruct; + ULONG Flags; + ULONG NumIds; + PULONG TypeIds; + ULONG64 TagFilter; + ULONG NumReqs; + IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds; + PULONG_PTR ReqOffsets; + PULONG ReqSizes; + ULONG_PTR ReqStride; + ULONG_PTR BufferSize; + PVOID Buffer; + ULONG EntriesMatched; + ULONG EntriesFilled; + ULONG64 TagsFound; + ULONG64 AllReqsValid; + ULONG NumReqsValid; + PULONG64 ReqsValid; +} IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS; + #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL @@ -388,41 +572,171 @@ typedef struct _SYMBOL_INFO { CHAR Name[1]; } SYMBOL_INFO, *PSYMBOL_INFO; +typedef struct _SYMBOL_INFOW +{ + ULONG SizeOfStruct; + ULONG TypeIndex; + ULONG64 Reserved[2]; + ULONG Index; + ULONG Size; + ULONG64 ModBase; + ULONG Flags; + ULONG64 Value; + ULONG64 Address; + ULONG Register; + ULONG Scope; + ULONG Tag; + ULONG NameLen; + ULONG MaxNameLen; + WCHAR Name[1]; +} SYMBOL_INFOW, *PSYMBOL_INFOW; + +#define DBHHEADER_DEBUGDIRS 0x1 +typedef struct _MODLOAD_DATA +{ + DWORD ssize; + DWORD ssig; + PVOID data; + DWORD size; + DWORD flags; +} MODLOAD_DATA, *PMODLOAD_DATA; + +typedef struct _SRCCODEINFO +{ + DWORD SizeOfStruct; + PVOID Key; + DWORD64 ModBase; + CHAR Obj[MAX_PATH+1]; + CHAR FileName[MAX_PATH+1]; + DWORD LineNumber; + DWORD64 Address; +} SRCCODEINFO, *PSRCCODEINFO; + +typedef struct _SRCCODEINFOW +{ + DWORD SizeOfStruct; + PVOID Key; + DWORD64 ModBase; + WCHAR Obj[MAX_PATH+1]; + WCHAR FileName[MAX_PATH+1]; + DWORD LineNumber; + DWORD64 Address; +} SRCCODEINFOW, *PSRCCODEINFOW; + /*********************************************************************** * Callbacks */ +typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)( + PCSTR, PVOID +); +typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)( + PCWSTR, PVOID +); + +typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)( + PCSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize, + PVOID UserContext +); +typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)( + PCSTR, DWORD64, ULONG, PVOID +); +typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)( + PCWSTR, DWORD64, ULONG, PVOID +); + +typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)( + HANDLE, PCSTR, PVOID +); +typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)( + HANDLE, PCWSTR, PVOID +); + +typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)( + HANDLE, PCSTR, PVOID +); +typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)( + HANDLE, PCWSTR, PVOID +); + +typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)( + PCSTR, PVOID +); +typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)( + PCWSTR, PVOID +); + typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)( - IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName, - ULONG Va, ULONG Parameter + IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName, + ULONG_PTR Va, ULONG_PTR Parameter +); +typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE32)( + IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName, + ULONG Va, ULONG_PTR Parameter +); +typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE64)( + IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName, + ULONG64 Va, ULONG_PTR Parameter ); typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)( PSYMBOL_INFO pSymInfo, DWORD SymbolSize, PVOID UserContext ); +typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)( + PSYMBOL_INFOW pSymInfo, DWORD SymbolSize, PVOID UserContext +); + +typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)( + PSRCCODEINFO, PVOID +); +typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)( + PSRCCODEINFOW, PVOID +); typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)( PSOURCEFILE pSourceFile, PVOID UserContext ); +typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)( + PSOURCEFILEW pSourceFile, PVOID UserContext +); typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)( - LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext + PCSTR ModuleName, ULONG BaseOfDll, PVOID UserContext +); +typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)( + PCSTR, DWORD64, PVOID +); +typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)( + PCWSTR, DWORD64, PVOID ); typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)( - LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize, - PVOID UserContext + PCSTR, DWORD, ULONG, PVOID +); +typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)( + PCWSTR, DWORD, ULONG, PVOID +); +typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)( + PCSTR, DWORD64, ULONG, PVOID +); +typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)( + PCWSTR, DWORD64, ULONG, PVOID ); -typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)( - LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize, - PVOID UserContext +typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)( + HANDLE, DWORD, PVOID +); +typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)( + HANDLE, ULONG64, ULONG64 ); typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)( HANDLE hProcess, ULONG ActionCode, PVOID CallbackData, PVOID UserContext ); +typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)( + HANDLE, ULONG, ULONG64, ULONG64 +); typedef BOOL (CALLBACK *DIGEST_FUNCTION)( DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength @@ -460,31 +774,60 @@ typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)( HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr ); + /*********************************************************************** * Functions */ BOOL WINAPI BindImage( - LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath + PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath ); BOOL WINAPI BindImageEx( - DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath, + DWORD Flags, PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath, PIMAGEHLP_STATUS_ROUTINE StatusRoutine ); PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile( LPVOID BaseAddress, DWORD FileLength, LPDWORD HeaderSum, LPDWORD CheckSum ); +BOOL WINAPI EnumDirTree( + HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID +); +BOOL WINAPI EnumDirTreeW( + HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID +); BOOL WINAPI EnumerateLoadedModules( HANDLE hProcess, PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback, PVOID UserContext ); +BOOL WINAPI EnumerateLoadedModules64( + HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID +); +BOOL WINAPI EnumerateLoadedModulesW64( + HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID +); HANDLE WINAPI FindDebugInfoFile( - LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath + PCSTR FileName, PCSTR SymbolPath, PSTR DebugFilePath +); +HANDLE WINAPI FindDebugInfoFileEx( + PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID +); +HANDLE WINAPI FindDebugInfoFileExW( + PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID ); HANDLE WINAPI FindExecutableImage( - LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath + PCSTR, PCSTR, PSTR +); +HANDLE WINAPI FindExecutableImageEx( + PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID +); +HANDLE WINAPI FindExecutableImageExW( + PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID +); +BOOL WINAPI FindFileInPath( + HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, + PSTR, PFINDFILEINPATHCALLBACK, PVOID ); BOOL WINAPI GetImageConfigInformation( PLOADED_IMAGE LoadedImage, @@ -520,7 +863,7 @@ BOOL WINAPI ImageGetDigestStream( DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle ); PLOADED_IMAGE WINAPI ImageLoad( - LPSTR DllName, LPSTR DllPath + PCSTR DllName, PCSTR DllPath ); PIMAGE_NT_HEADERS WINAPI ImageNtHeader( PVOID Base @@ -545,44 +888,50 @@ LPAPI_VERSION WINAPI ImagehlpApiVersionEx( LPAPI_VERSION AppVersion ); BOOL WINAPI MakeSureDirectoryPathExists( - LPCSTR DirPath + PCSTR DirPath ); BOOL WINAPI MapAndLoad( - LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage, + PCSTR ImageName, PCSTR DllPath, PLOADED_IMAGE LoadedImage, BOOL DotDll, BOOL ReadOnly ); PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation( - HANDLE FileHandle, LPSTR FileName, - LPSTR SymbolPath, DWORD ImageBase + HANDLE FileHandle, PCSTR FileName, + PCSTR SymbolPath, ULONG ImageBase ); DWORD WINAPI MapFileAndCheckSumA( - LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum + PCSTR Filename, PDWORD HeaderSum, PDWORD CheckSum ); DWORD WINAPI MapFileAndCheckSumW( - LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum + PCWSTR Filename, PDWORD HeaderSum, PDWORD CheckSum ); BOOL WINAPI ReBaseImage( - LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase, + PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase, + BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize, + ULONG *OldImageSize, ULONG_PTR *OldImageBase, ULONG *NewImageSize, + ULONG_PTR *NewImageBase, ULONG TimeStamp +); +BOOL WINAPI ReBaseImage64( + PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase, BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize, - ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize, - ULONG *NewImageBase, ULONG TimeStamp + ULONG *OldImageSize, ULONG64 *OldImageBase, ULONG *NewImageSize, + ULONG64 *NewImageBase, ULONG TimeStamp ); BOOL WINAPI RemovePrivateCvSymbolic( PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize ); -VOID WINAPI RemoveRelocations( - PCHAR ImageName -); BOOL WINAPI SearchTreeForFile( - LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer + PCSTR RootPath, PCSTR InputPathName, PSTR OutputPathBuffer +); +BOOL WINAPI SearchTreeForFileW( + PCWSTR RootPath, PCWSTR InputPathName, PWSTR OutputPathBuffer ); BOOL WINAPI SetImageConfigInformation( PLOADED_IMAGE LoadedImage, PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation ); BOOL WINAPI SplitSymbols( - LPSTR ImageName, LPSTR SymbolsPath, - LPSTR SymbolFilePath, DWORD Flags + PSTR ImageName, PCSTR SymbolsPath, + PSTR SymbolFilePath, ULONG Flags ); BOOL WINAPI StackWalk( DWORD MachineType, HANDLE hProcess, HANDLE hThread, @@ -600,28 +949,183 @@ BOOL WINAPI StackWalk64( PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress ); +BOOL WINAPI SymAddSymbol( + HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD +); +BOOL WINAPI SymAddSymbolW( + HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD +); BOOL WINAPI SymCleanup( HANDLE hProcess ); +BOOL WINAPI SymDeleteSymbol( + HANDLE, ULONG64, PCSTR, DWORD64, DWORD +); +BOOL WINAPI SymDeleteSymbolW( + HANDLE, ULONG64, PCWSTR, DWORD64, DWORD +); BOOL WINAPI SymEnumerateModules( HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback, PVOID UserContext ); +BOOL WINAPI SymEnumerateModules64( + HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID +); +BOOL WINAPI SymEnumerateModulesW64( + HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID +); BOOL WINAPI SymEnumerateSymbols( HANDLE hProcess, DWORD BaseOfDll, PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext ); +BOOL WINAPI SymEnumerateSymbolsW( + HANDLE hProcess, DWORD BaseOfDll, + PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext +); +BOOL WINAPI SymEnumerateSymbols64( + HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID +); +BOOL WINAPI SymEnumerateSymbolsW64( + HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID +); +BOOL WINAPI SymEnumLines( + HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID +); +BOOL WINAPI SymEnumLinesW( + HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID +); BOOL WINAPI SymEnumSourceFiles( - HANDLE hProcess, DWORD ModBase, LPSTR Mask, + HANDLE hProcess, ULONG64 ModBase, PCSTR Mask, PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, PVOID UserContext ); +BOOL WINAPI SymEnumSourceFilesW( + HANDLE hProcess, ULONG64 ModBase, PCWSTR Mask, + PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles, PVOID UserContext +); +BOOL WINAPI SymEnumSourceLines( + HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID +); +BOOL WINAPI SymEnumSourceLinesW( + HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID +); BOOL WINAPI SymEnumSymbols( HANDLE hProcess, DWORD BaseOfDll, PCSTR Mask, PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext ); +BOOL WINAPI SymEnumSymbolsW( + HANDLE hProcess, DWORD BaseOfDll, PCWSTR Mask, + PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext +); +BOOL WINAPI SymEnumSymbolsForAddr( + HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID +); +BOOL WINAPI SymEnumSymbolsForAddrW( + HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID +); +BOOL WINAPI SymEnumTypes( + HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID +); +BOOL WINAPI SymEnumTypesW( + HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID +); +HANDLE WINAPI SymFindExecutableImage( + HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID +); +HANDLE WINAPI SymFindExecutableImageW( + HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID +); +BOOL WINAPI SymFindFileInPath( + HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, + PSTR, PFINDFILEINPATHCALLBACK, PVOID +); +BOOL WINAPI SymFindFileInPathW( + HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD, + PWSTR, PFINDFILEINPATHCALLBACKW, PVOID +); +BOOL WINAPI SymFromAddr( + HANDLE, DWORD64, DWORD64*, SYMBOL_INFO* +); +BOOL WINAPI SymFromAddrW( + HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW* +); +BOOL WINAPI SymFromIndex( + HANDLE, ULONG64, DWORD, PSYMBOL_INFO +); +BOOL WINAPI SymFromIndexW( + HANDLE, ULONG64, DWORD, PSYMBOL_INFOW +); +BOOL WINAPI SymFromName( + HANDLE, PCSTR, PSYMBOL_INFO +); +BOOL WINAPI SymFromNameW( + HANDLE, PCWSTR, PSYMBOL_INFOW +); +BOOL WINAPI SymFromToken( + HANDLE, DWORD64, DWORD, PSYMBOL_INFO +); +BOOL WINAPI SymFromTokenW( + HANDLE, DWORD64, DWORD, PSYMBOL_INFOW +); PVOID WINAPI SymFunctionTableAccess( HANDLE hProcess, DWORD AddrBase ); +PVOID WINAPI SymFunctionTableAccess64( + HANDLE hProcess, DWORD64 AddrBase +); +ULONG WINAPI SymGetFileLineOffsets64( + HANDLE, PCSTR, PCSTR, PDWORD64, ULONG +); +PCHAR WINAPI SymGetHomeDirectory( + DWORD, PSTR, size_t +); +PWSTR WINAPI SymGetHomeDirectoryW( + DWORD, PWSTR, size_t +); +BOOL WINAPI SymGetLineFromAddr( + HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE +); +BOOL WINAPI SymGetLineFromAddrW( + HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW +); +BOOL WINAPI SymGetLineFromAddr64( + HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64 +); +BOOL WINAPI SymGetLineFromAddrW64( + HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64 +); +BOOL WINAPI SymGetLineFromName( + HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE +); +BOOL WINAPI SymGetLineFromName64( + HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64 +); +BOOL WINAPI SymGetLineFromNameW64( + HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64 +); +BOOL WINAPI SymGetLineNext( + HANDLE, PIMAGEHLP_LINE +); +BOOL WINAPI SymGetLineNextW( + HANDLE, PIMAGEHLP_LINEW +); +BOOL WINAPI SymGetLineNext64( + HANDLE, PIMAGEHLP_LINE64 +); +BOOL WINAPI SymGetLineNextW64( + HANDLE, PIMAGEHLP_LINEW64 +); +BOOL WINAPI SymGetLinePrev( + HANDLE, PIMAGEHLP_LINE +); +BOOL WINAPI SymGetLinePrevW( + HANDLE, PIMAGEHLP_LINEW +); +BOOL WINAPI SymGetLinePrev64( + HANDLE, PIMAGEHLP_LINE64 +); +BOOL WINAPI SymGetLinePrevW64( + HANDLE, PIMAGEHLP_LINEW64 +); DWORD WINAPI SymGetModuleBase( HANDLE hProcess, DWORD dwAddr ); @@ -629,48 +1133,173 @@ BOOL WINAPI SymGetModuleInfo( HANDLE hProcess, DWORD dwAddr, PIMAGEHLP_MODULE ModuleInfo ); +BOOL WINAPI SymGetModuleInfoW( + HANDLE, DWORD, PIMAGEHLP_MODULEW +); +BOOL WINAPI SymGetModuleInfo64( + HANDLE, DWORD64, PIMAGEHLP_MODULE64 +); +BOOL WINAPI SymGetModuleInfoW64( + HANDLE, DWORD64, PIMAGEHLP_MODULEW64 +); DWORD WINAPI SymGetOptions( void ); +BOOL WINAPI SymGetScope( + HANDLE, ULONG64, DWORD, PSYMBOL_INFO +); +BOOL WINAPI SymGetScopeW( + HANDLE, ULONG64, DWORD, PSYMBOL_INFOW +); BOOL WINAPI SymGetSearchPath( - HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength + HANDLE hProcess, PSTR szSearchPath, DWORD SearchPathLength +); +BOOL WINAPI SymGetSearchPathW( + HANDLE hProcess, PWSTR szSearchPath, DWORD SearchPathLength +); +BOOL WINAPI SymGetSourceFile( + HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD +); +BOOL WINAPI SymGetSourceFileW( + HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD +); +BOOL WINAPI SymGetSourceFileFromToken( + HANDLE, PVOID, PCSTR, PSTR, DWORD +); +BOOL WINAPI SymGetSourceFileFromTokenW( + HANDLE, PVOID, PCWSTR, PWSTR, DWORD +); +BOOL WINAPI SymGetSourceFileToken( + HANDLE, ULONG64, PCSTR, PVOID*, DWORD* +); +BOOL WINAPI SymGetSourceFileTokenW( + HANDLE, ULONG64, PCWSTR, PVOID*, DWORD* +); +BOOL WINAPI SymGetSourceVarFromToken( + HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD +); +BOOL WINAPI SymGetSourceVarFromTokenW( + HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD ); BOOL WINAPI SymGetSymFromAddr( HANDLE hProcess, DWORD dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol ); +BOOL WINAPI SymGetSymFromAddr64( + HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64 +); BOOL WINAPI SymGetSymFromName( - HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol + HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symbol +); +BOOL WINAPI SymGetSymFromName64( + HANDLE, PCSTR, PIMAGEHLP_SYMBOL64 ); BOOL WINAPI SymGetSymNext( HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol ); +BOOL WINAPI SymGetSymNext64( + HANDLE, PIMAGEHLP_SYMBOL64 +); BOOL WINAPI SymGetSymPrev( HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol ); +BOOL WINAPI SymGetSymPrev64( + HANDLE, PIMAGEHLP_SYMBOL64 +); +BOOL WINAPI SymGetTypeFromName( + HANDLE, ULONG64, PCSTR, PSYMBOL_INFO +); +BOOL WINAPI SymGetTypeFromNameW( + HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW +); +BOOL WINAPI SymGetTypeInfo( + HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID +); +BOOL WINAPI SymGetTypeInfoEx( + HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS +); BOOL WINAPI SymInitialize( - HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess + HANDLE hProcess, PCSTR UserSearchPath, BOOL fInvadeProcess +); +BOOL WINAPI SymInitializeW( + HANDLE hProcess, PCWSTR UserSearchPath, BOOL fInvadeProcess ); DWORD WINAPI SymLoadModule( - HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName, + HANDLE hProcess, HANDLE hFile, PCSTR ImageName, PCSTR ModuleName, DWORD BaseOfDll, DWORD SizeOfDll ); +DWORD64 WINAPI SymLoadModule64( + HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD +); +DWORD64 WINAPI SymLoadModuleEx( + HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD +); +DWORD64 WINAPI SymLoadModuleExW( + HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD +); +BOOL WINAPI SymMatchFileName( + PCSTR, PCSTR, PSTR*, PSTR* +); +BOOL WINAPI SymMatchFileNameW( + PCWSTR, PCWSTR, PWSTR*, PWSTR* +); +BOOL WINAPI SymMatchString( + PCSTR, PCSTR, BOOL +); +BOOL WINAPI SymMatchStringA( + PCSTR, PCSTR, BOOL +); +BOOL WINAPI SymMatchStringW( + PCWSTR, PCWSTR, BOOL +); BOOL WINAPI SymRegisterCallback( HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction, PVOID UserContext ); +BOOL WINAPI SymRegisterCallback64( + HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64 +); +BOOL WINAPI SymRegisterCallbackW64( + HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64 +); +BOOL WINAPI SymRegisterFunctionEntryCallback( + HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID +); +BOOL WINAPI SymRegisterFunctionEntryCallback64( + HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64 +); +BOOL WINAPI SymSearch( + HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD +); +BOOL WINAPI SymSearchW( + HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD +); DWORD WINAPI SymSetContext( HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, PIMAGEHLP_CONTEXT Context ); +PCHAR WINAPI SymSetHomeDirectory( + HANDLE, PCSTR +); +PWSTR WINAPI SymSetHomeDirectoryW( + HANDLE, PCWSTR +); DWORD WINAPI SymSetOptions( DWORD SymOptions ); +BOOL WINAPI SymSetParentWindow( + HWND +); BOOL WINAPI SymSetSearchPath( - HANDLE hProcess, LPSTR szSearchPath + HANDLE hProcess, PCSTR szSearchPath ); BOOL WINAPI SymUnDName( - PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength + PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLength +); +BOOL WINAPI SymUnDName64( + PIMAGEHLP_SYMBOL64, PSTR, DWORD ); BOOL WINAPI SymUnloadModule( HANDLE hProcess, DWORD BaseOfDll @@ -679,7 +1308,11 @@ BOOL WINAPI TouchFileTimes( HANDLE FileHandle, LPSYSTEMTIME lpSystemTime ); DWORD WINAPI UnDecorateSymbolName( - LPCSTR DecoratedName, LPSTR UnDecoratedName, + PCSTR DecoratedName, PSTR UnDecoratedName, + DWORD UndecoratedLength, DWORD Flags +); +DWORD WINAPI UnDecorateSymbolNameW( + PCWSTR DecoratedName, PWSTR UnDecoratedName, DWORD UndecoratedLength, DWORD Flags ); BOOL WINAPI UnMapAndLoad( @@ -689,12 +1322,12 @@ BOOL WINAPI UnmapDebugInformation( PIMAGE_DEBUG_INFORMATION DebugInfo ); BOOL WINAPI UpdateDebugInfoFile( - LPSTR ImageFileName, LPSTR SymbolPath, - LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders + PCSTR ImageFileName, PCSTR SymbolPath, + PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders ); BOOL WINAPI UpdateDebugInfoFileEx( - LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath, - PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum + PCSTR ImageFileName, PCSTR SymbolPath, PSTR DebugFilePath, + PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum ); #ifdef __cplusplus diff --git a/include/lm.h b/include/lm.h index 429ca9f9395..86a2d5af428 100644 --- a/include/lm.h +++ b/include/lm.h @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -33,5 +32,15 @@ #include #include #include +/* FIXME: #include */ +/* FIXME: #include */ +/* FIXME: #include */ +/* FIXME: #include */ +/* FIXME: #include */ +/* FIXME: #include */ +/* FIXME: #include */ + +/* The following are obsolete headers */ +#include #endif diff --git a/include/lmuse.h b/include/lmuse.h index 786fb0136ae..043cfac12bd 100644 --- a/include/lmuse.h +++ b/include/lmuse.h @@ -22,20 +22,40 @@ extern "C" { #endif -typedef struct _USE_INFO_1 { - LMSTR ui1_local, ui1_remote, ui1_password; - DWORD ui1_status, ui1_asg_type, ui1_refcount, ui1_usecount; +#include "lmcons.h" +#include "lmuseflg.h" + +typedef struct _USE_INFO_1 +{ + LMSTR ui1_local; + LMSTR ui1_remote; + LMSTR ui1_password; + DWORD ui1_status; + DWORD ui1_asg_type; + DWORD ui1_refcount; + DWORD ui1_usecount; } USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1; -typedef struct _USE_INFO_2 { - LMSTR ui2_local, ui2_remote, ui2_password; - DWORD ui2_status, ui2_asg_type, ui2_refcount, ui2_usecount; - LPWSTR ui2_username; - LMSTR ui2_domainname; +typedef struct _USE_INFO_2 +{ + LMSTR ui2_local; + LMSTR ui2_remote; + LMSTR ui2_password; + DWORD ui2_status; + DWORD ui2_asg_type; + DWORD ui2_refcount; + DWORD ui2_usecount; + LMSTR ui2_username; + LMSTR ui2_domainname; } USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2; +NET_API_STATUS WINAPI NetUseAdd(LMSTR,DWORD,LPBYTE,LPDWORD); +NET_API_STATUS WINAPI NetUseDel(LMSTR,LMSTR,DWORD); +NET_API_STATUS WINAPI NetUseEnum(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD); +NET_API_STATUS WINAPI NetUseGetInfo(LMSTR,LMSTR,DWORD,LPBYTE*); + #ifdef __cplusplus } #endif -#endif /* ndef _LMUSE_H */ +#endif /* _LMUSE_H */ diff --git a/include/gdipluspixelformats.h b/include/lmuseflg.h similarity index 77% copy from include/gdipluspixelformats.h copy to include/lmuseflg.h index 6f50492e775..cf003174894 100644 --- a/include/gdipluspixelformats.h +++ b/include/lmuseflg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Google (Evan Stade) + * Copyright (C) 2007 Francois Gouget * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -16,10 +16,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _GDIPLUSPIXELFORMATS_H -#define _GDIPLUSPIXELFORMATS_H +#ifndef __WINE_LMUSEFLG_H +#define __WINE_LMUSEFLG_H -typedef DWORD ARGB; -typedef INT PixelFormat; +#define USE_NOFORCE 0 +#define USE_FORCE 1 +#define USE_LOTS_OF_FORCE 2 -#endif +#endif /* __WINE_LMUSEFLG_H */ diff --git a/include/mapidefs.h b/include/mapidefs.h index 2c89c0f9ccb..219177d62ee 100644 --- a/include/mapidefs.h +++ b/include/mapidefs.h @@ -27,6 +27,7 @@ #ifndef _OBJBASE_H_ #include #endif +#include /* Some types from other headers */ #ifndef __LHANDLE diff --git a/include/lmuse.h b/include/mapiform.h similarity index 62% copy from include/lmuse.h copy to include/mapiform.h index 786fb0136ae..d9375ced42a 100644 --- a/include/lmuse.h +++ b/include/mapiform.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Tim Schwartz + * Copyright (C) 1998 Justin Bradford * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,27 +15,33 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _LMUSE_H -#define _LMUSE_H + +#ifndef MAPIFORM_H +#define MAPIFORM_H + +#include +#include +#include +#include + + +typedef ULONG HFRMREG; +#define HFRMREG_DEFAULT 0 +#define HFRMREG_LOCAL 1 +#define HFRMREG_PERSONAL 2 +#define HFRMREG_FOLDER 3 + +typedef const char **LPPCSTR; + #ifdef __cplusplus extern "C" { #endif -typedef struct _USE_INFO_1 { - LMSTR ui1_local, ui1_remote, ui1_password; - DWORD ui1_status, ui1_asg_type, ui1_refcount, ui1_usecount; -} USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1; - -typedef struct _USE_INFO_2 { - LMSTR ui2_local, ui2_remote, ui2_password; - DWORD ui2_status, ui2_asg_type, ui2_refcount, ui2_usecount; - LPWSTR ui2_username; - LMSTR ui2_domainname; -} USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2; +HRESULT WINAPI MAPIOpenLocalFormContainer(LPVOID*); #ifdef __cplusplus } #endif -#endif /* ndef _LMUSE_H */ +#endif /* MAPIFORM_H */ diff --git a/include/mapival.h b/include/mapival.h index 2a653a3cca9..82cd020db9d 100644 --- a/include/mapival.h +++ b/include/mapival.h @@ -24,6 +24,8 @@ extern "C" { #endif #include +#include +#include BOOL WINAPI FBadRglpszW(LPWSTR*,ULONG); BOOL WINAPI FBadRowSet(LPSRowSet); diff --git a/include/mapix.h b/include/mapix.h index 31da13385be..e511cdf3b92 100644 --- a/include/mapix.h +++ b/include/mapix.h @@ -114,6 +114,10 @@ typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER; MAPIFREEBUFFER MAPIFreeBuffer; #endif +typedef HRESULT (WINAPI MAPIADMINPROFILES)(ULONG,LPPROFADMIN*); +typedef MAPIADMINPROFILES *LPMAPIADMINPROFILES; +MAPIADMINPROFILES MAPIAdminProfiles; + /***************************************************************************** * IMAPISession interface */ diff --git a/include/lmuse.h b/include/mscoree.idl similarity index 53% copy from include/lmuse.h copy to include/mscoree.idl index 786fb0136ae..8dfaa1b4637 100644 --- a/include/lmuse.h +++ b/include/mscoree.idl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Tim Schwartz + * Copyright (C) 2007 Francois Gouget * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,27 +15,13 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _LMUSE_H -#define _LMUSE_H -#ifdef __cplusplus -extern "C" { -#endif +cpp_quote("/* FIXME: #include */") +cpp_quote("/* FIXME: #include */") -typedef struct _USE_INFO_1 { - LMSTR ui1_local, ui1_remote, ui1_password; - DWORD ui1_status, ui1_asg_type, ui1_refcount, ui1_usecount; -} USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1; - -typedef struct _USE_INFO_2 { - LMSTR ui2_local, ui2_remote, ui2_password; - DWORD ui2_status, ui2_asg_type, ui2_refcount, ui2_usecount; - LPWSTR ui2_username; - LMSTR ui2_domainname; -} USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2; - -#ifdef __cplusplus -} -#endif - -#endif /* ndef _LMUSE_H */ +cpp_quote("HRESULT WINAPI CorBindToRuntimeHost(LPCWSTR,LPCWSTR,LPCWSTR,VOID*,DWORD,REFCLSID,REFIID,LPVOID*);") +cpp_quote("void WINAPI CorExitProcess(int);") +cpp_quote("HRESULT WINAPI GetCORSystemDirectory(LPWSTR,DWORD,DWORD*);") +cpp_quote("HRESULT WINAPI GetCORVersion(LPWSTR,DWORD,DWORD*);") +cpp_quote("HRESULT WINAPI GetRequestedRuntimeInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,LPWSTR,DWORD,DWORD*,LPWSTR,DWORD,DWORD*);") +cpp_quote("HRESULT WINAPI LoadLibraryShim(LPCWSTR,LPCWSTR,LPVOID,HMODULE*);") diff --git a/include/msi.h b/include/msi.h index 37f4b4b968a..2956ae96043 100644 --- a/include/msi.h +++ b/include/msi.h @@ -389,6 +389,10 @@ UINT WINAPI MsiEnumProductsA(DWORD, LPSTR); UINT WINAPI MsiEnumProductsW(DWORD, LPWSTR); #define MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts) +UINT WINAPI MsiEnumProductsExA(LPCSTR, LPCSTR, DWORD, DWORD, CHAR[39], MSIINSTALLCONTEXT*, LPSTR, LPDWORD); +UINT WINAPI MsiEnumProductsExW(LPCWSTR, LPCWSTR, DWORD, DWORD, WCHAR[39], MSIINSTALLCONTEXT*, LPWSTR, LPDWORD); +#define MsiEnumProductsEx WINELIB_NAME_AW(MsiEnumProductsEx) + UINT WINAPI MsiEnumFeaturesA(LPCSTR, DWORD, LPSTR, LPSTR); UINT WINAPI MsiEnumFeaturesW(LPCWSTR, DWORD, LPWSTR, LPWSTR); #define MsiEnumFeatures WINELIB_NAME_AW(MsiEnumFeatures) @@ -413,10 +417,6 @@ UINT WINAPI MsiOpenProductA(LPCSTR, MSIHANDLE*); UINT WINAPI MsiOpenProductW(LPCWSTR, MSIHANDLE*); #define MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct) -UINT WINAPI MsiProvideComponentFromDescriptorA(LPCSTR,LPSTR,DWORD*,DWORD*); -UINT WINAPI MsiProvideComponentFromDescriptorW(LPCWSTR,LPWSTR,DWORD*,DWORD*); -#define MsiProvideComponentFromDescriptor WINELIB_NAME_AW(MsiProvideComponentFromDescriptor) - UINT WINAPI MsiGetProductPropertyA(MSIHANDLE,LPCSTR,LPSTR,DWORD*); UINT WINAPI MsiGetProductPropertyW(MSIHANDLE,LPCWSTR,LPWSTR,DWORD*); #define MsiGetProductProperty WINELIB_NAME_AW(MsiGetProductProperty) @@ -425,8 +425,8 @@ UINT WINAPI MsiVerifyPackageA(LPCSTR); UINT WINAPI MsiVerifyPackageW(LPCWSTR); #define MsiVerifyPackage WINELIB_NAME_AW(MsiVerifyPackage) -UINT WINAPI MsiQueryComponentStateA(LPSTR,LPSTR,MSIINSTALLCONTEXT,LPCSTR,INSTALLSTATE*); -UINT WINAPI MsiQueryComponentStateW(LPWSTR,LPWSTR,MSIINSTALLCONTEXT,LPCWSTR,INSTALLSTATE*); +UINT WINAPI MsiQueryComponentStateA(LPCSTR,LPCSTR,MSIINSTALLCONTEXT,LPCSTR,INSTALLSTATE*); +UINT WINAPI MsiQueryComponentStateW(LPCWSTR,LPCWSTR,MSIINSTALLCONTEXT,LPCWSTR,INSTALLSTATE*); #define MsiQueryComponentState WINELIB_NAME_AW(MsiQueryComponentState) INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR); @@ -493,8 +493,8 @@ UINT WINAPI MsiMessageBoxA(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD); UINT WINAPI MsiMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT, WORD, DWORD); #define MsiMessageBox WINELIB_NAME_AW(MsiMessageBox) -UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR, LPCSTR, DWORD, LPSTR, DWORD, DWORD, LPSTR, DWORD*); -UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, DWORD, DWORD, LPWSTR, DWORD*); +UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR, LPCSTR, DWORD, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD); +UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD); #define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx) UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR, LPCSTR, DWORD, LPSTR, DWORD*); diff --git a/include/wincrypt.h b/include/wincrypt.h index 0661890cd5d..93e9459b08b 100644 --- a/include/wincrypt.h +++ b/include/wincrypt.h @@ -3771,7 +3771,7 @@ BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWO BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - const void *pvHashAuxInfo, PBYTE pbEncoded, DWORD *pcbEncoded); + const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded); BOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, diff --git a/include/windns.h b/include/windns.h index 1b1a4e13427..83fb178fa0e 100644 --- a/include/windns.h +++ b/include/windns.h @@ -156,7 +156,7 @@ typedef enum _DnsSection } DNS_SECTION; typedef LONG DNS_STATUS, *PDNS_STATUS; -typedef DWORD IP4_ADDRESS; +typedef DWORD IP4_ADDRESS, *PIP4_ADDRESS; typedef struct { @@ -618,14 +618,14 @@ DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*); DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*); DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDW*); DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDA*); -DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID); -DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PIP4_ARRAY,PVOID); -DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID); +DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID); +DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID); BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR); BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR); -DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDA*,PVOID*); -DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDW*,PVOID*); -DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDA*,PVOID*); +DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*); +DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PVOID,PDNS_RECORDW*,PVOID*); +DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*); DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD); BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD); PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET); @@ -634,9 +634,9 @@ BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET); PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD); void WINAPI DnsReleaseContextHandle(HANDLE); -DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID); -DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PIP4_ARRAY,PVOID); -DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID); +DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID); +DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID); DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT); DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT); DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT); diff --git a/programs/winecfg/winecfg.c b/programs/winecfg/winecfg.c index 84dd4c8df4b..1a198887c11 100644 --- a/programs/winecfg/winecfg.c +++ b/programs/winecfg/winecfg.c @@ -464,15 +464,19 @@ static void set_reg_key_ex(HKEY root, const WCHAR *path, const WCHAR *name, cons void set_reg_key(HKEY root, const char *path, const char *name, const char *value) { - WCHAR *wpath, *wname, *wvalue; + WCHAR *wpath, *wname, *wvalue = NULL; wpath = HeapAlloc(GetProcessHeap(), 0, (strlen(path)+1)*sizeof(WCHAR)); wname = HeapAlloc(GetProcessHeap(), 0, (strlen(name)+1)*sizeof(WCHAR)); - wvalue = HeapAlloc(GetProcessHeap(), 0, (strlen(value)+1)*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, path, -1, wpath, strlen(path)+1); MultiByteToWideChar(CP_ACP, 0, name, -1, wname, strlen(name)+1); - MultiByteToWideChar(CP_ACP, 0, value, -1, wvalue, strlen(value)+1); + + if (value) + { + wvalue = HeapAlloc(GetProcessHeap(), 0, (strlen(value)+1)*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, value, -1, wvalue, strlen(value)+1); + } set_reg_key_ex(root, wpath, wname, wvalue, REG_SZ); diff --git a/programs/winetest/main.c b/programs/winetest/main.c index f743ffc20e2..f4335846194 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -60,6 +60,7 @@ static struct wine_test *wine_tests; static int nr_of_files, nr_of_tests; static struct rev_info *rev_infos = NULL; static const char whitespace[] = " \t\r\n"; +static const char testexe[] = "_test.exe"; static int running_under_wine (void) { @@ -245,9 +246,8 @@ extract_test (struct wine_test *test, const char *dir, LPTSTR res_name) if (!code) report (R_FATAL, "Can't find test resource %s: %d", res_name, GetLastError ()); test->name = xstrdup( res_name ); - CharLowerA( test->name ); test->exename = strmake (NULL, "%s/%s", dir, test->name); - exepos = strstr (test->name, "_test.exe"); + exepos = strstr (test->name, testexe); if (!exepos) report (R_FATAL, "Not an .exe file: %s", test->name); *exepos = 0; test->name = xrealloc (test->name, exepos - test->name + 1); @@ -433,6 +433,23 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam) { const char *tempdir = (const char *)lParam; + char dllname[MAX_PATH]; + HMODULE dll; + + /* Check if the main dll is present on this system */ + CharLowerA(lpszName); + strcpy(dllname, lpszName); + *strstr(dllname, testexe) = 0; + + dll = LoadLibraryExA(dllname, NULL, LOAD_LIBRARY_AS_DATAFILE); + if (!dll) { + xprintf ("%s:%s_dll_missing start 0 0\n", dllname, dllname); + xprintf ("%s_dll_missing: -1 tests executed (-1 marked as todo, -1 failures), -1 skipped.\n", dllname); + xprintf ("%s:%s_dll_missing done (0)\n", dllname, dllname); + return TRUE; + } + FreeLibrary(dll); + get_subtests( tempdir, &wine_tests[nr_of_files], lpszName ); nr_of_tests += wine_tests[nr_of_files].subtest_count; nr_of_files++; diff --git a/tools/winapi/win32.api b/tools/winapi/win32.api index 30eee710934..2636c294a0d 100644 --- a/tools/winapi/win32.api +++ b/tools/winapi/win32.api @@ -696,13 +696,17 @@ ALG_ID BOOL DWORD HANDLE +HCRYPTMSG HCRYPTPROV +HCRYPTPROV_LEGACY +HCRYPTPROV_OR_NCRYPT_KEY_HANDLE HMODULE LONG ULONG %ptr +BOOL * BYTE * CERT_EXTENSION[] CRYPT_ATTRIBUTE[] @@ -711,8 +715,11 @@ CRYPTPROTECT_PROMPTSTRUCT * DATA_BLOB * DWORD * GUID * +HCERTCHAINENGINE +HCERTCHAINENGINE * HCERTSTORE HCERTSTORE * +HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * HCRYPTKEY * HCRYPTMSG * HCRYPTOIDFUNCADDR @@ -720,10 +727,13 @@ HCRYPTOIDFUNCADDR * HCRYPTOIDFUNCSET HLRUCACHE HLRUCACHE * +LPCSTR * +LPCWSTR * LPFILETIME LPSTR * LPVOID LPWSTR * +PCCERT_CHAIN_CONTEXT * PCCERT_CONTEXT PCCERT_CONTEXT * PCCRL_CONTEXT @@ -731,22 +741,36 @@ PCCRL_CONTEXT * PCCRYPT_OID_INFO PCCTL_CONTEXT PCCTL_CONTEXT * +PCERT_CHAIN_ENGINE_CONFIG +PCERT_CHAIN_PARA PCERT_ENHKEY_USAGE PCERT_EXTENSION +PCERT_EXTENSIONS PCERT_INFO PCERT_NAME_BLOB PCERT_NAME_INFO PCERT_PUBLIC_KEY_INFO PCERT_RDN_ATTR PCERT_RDN_VALUE_BLOB +PCMSG_STREAM_INFO +PCRL_ENTRY * +PCRL_INFO +PCRL_INFO[] PCRYPT_ALGORITHM_IDENTIFIER PCRYPT_ATTRIBUTE PCRYPT_DECODE_PARA PCRYPT_ENCODE_PARA +PCRYPT_INTEGER_BLOB +PCRYPT_KEY_PROV_INFO +PCRYPT_VERIFY_MESSAGE_PARA +PFN_CERT_ENUM_SYSTEM_STORE PFN_CRYPT_ENUM_OID_INFO +PSYSTEMTIME PVOID SIP_ADD_NEWPROVIDER * SIP_DISPATCH_INFO * +SIP_INDIRECT_DATA * +SIP_SUBJECTINFO * int * void * void ** @@ -1173,7 +1197,6 @@ PDNS_RECORDA * PDNS_RECORDW PDNS_RECORDW * PDWORD -PIP4_ARRAY PVOID PVOID * @@ -1283,6 +1306,16 @@ LPVOID * REFCLSID REFIID +%%dwmapi.dll + +%long + +HRESULT + +%ptr + +BOOL * + %%dxdiagn.dll %ptr @@ -1594,23 +1627,26 @@ PCHAR * PDWORD PIMAGE_LOAD_CONFIG_DIRECTORY PIMAGE_NT_HEADERS +PIMAGE_NT_HEADERS32 PIMAGEHLP_STATUS_ROUTINE PLOADED_IMAGE PWIN_CERTIFICATE ULONG * +ULONG_PTR * %str -LPSTR +PCSTR +PSTR PCHAR -%void +%wstr -VOID +PCWSTR -%wstr +%void -LPWSTR +VOID %%imm32.dll -- 2.11.4.GIT