Re: [PATCH] shell32: IShellDispatch_NameSpace: Special-folder argument shouldn't be negative.
-1 in this test is only a sample of a bad constant. Do you sure that S_OK should be returned for any positive argument?
Re: USB Osciloscope
wine-1.0.1 Try to use 1.3.15 with a patch for it. phoenox@firebird:~/.wine/drive_c/DSO8000$ WINEDEBUG=+winedevice, +ntoskrnl,+usbhub wine ezusb.sys Do not run the driver manually. Put it in windows/system32/drivers and run your program under WINE, the driver will be loaded if your USB device is connected.
Re: Fail to use USB-Key/USB-Shield with wine USB patch :cannot start service 'SCardSvr':win error code:0x00000424
I have winedumped all the .sys files and tared them together here: http://goo.gl/bEu03 Drivers import smclib.sys and wmilib.sys which are not implemented. And I doubt that they will be implemented soon (or ever). Also winscard way seems to me to be more right in this case.
Re: Fail to use USB-Key/USB-Shield with wine USB patch :cannot start service 'SCardSvr':win error code:0x00000424
Hi, Can you show an output of winedump -x for installed drivers? In okenadmin.exe output there are fixme:winscard: messages. May be this patch can be useful: http://www.idrix.fr/Root/SCard4Wine/winscard.tar.gz Thanks, Alexander
Shell.Application
Some Windows programs use Shell.Application object (sample: http://bugs.winehq.org/show_bug.cgi?id=8987). This object has IShellDispatch, IShellDispatch2, IShellDispatch3, ... interfaces (http://www.com.it-berater.org/COM/windows_shell/interfaces/IShellDispatch.htm). If IShellDispatch is sufficient for some application and I am going to add its declaration should I add IShellDispatch2, 3, ..., 5 in addition?
Re: crypt32/tests: Add tests for decoding enveloped messages.
Thank you, I looked at test results and sent some patches. Could you have a look? If you need me to test something on my boxes (pv-winme and pv-nt4srvr) let me know (not all testbot machines fail here).
[do not apply] Re: crypt32/tests: Add tests for enveloped messages.
Please do not apply this patch. Use [try 2]
Re: Fwd: Unable to Get Sony IC Recorder (Digital Voice Editor 3.3.01) to Work with 32-bit Wine (Windows Emulator) in 64-bit Fedora 11 x86_64 Linux
Dear Teo En Ming, Most likely something is not implemented in wine and usb patch and it is not so fast to fix it. You can run wineserver -k WINEDEBUG=+winedevice,+ntoskrnl,+usbhub,+setupapi,+file wine your_program log and try to find what is bad in log Best regards, Alexander Morozov On Friday 17 September 2010 17:48:00 Mr. Teo En Ming (Zhang Enming) 张恩鸣 of Singapore wrote: Dear Alexander Morozov, Thank you for your response. I have tried to ensure that the permissions for the Sony IC Recorder in /dev/bus/usb/005/009 is crw-rw-rw- by executing the following command: chmod o+rw /dev/bus/usb/005/009 However, Sony Digital Voice Editor 3 still cannot detect the IC Recorder. Do you have any more ideas? Thank you.
Re: Fwd: Unable to Get Sony IC Recorder (Digital Voice Editor 3.3.01) to Work with 32-bit Wine (Windows Emulator) in 64-bit Fedora 11 x86_64 Linux
err:module:import_dll Library NDIS.SYS (which is needed by LC:\\windows\\system32\\drivers\\npf.sys) not found err:winedevice:ServiceMain driver Lnpf failed to load Likely icdusb2.sys is not the only driver needed for your device. And other drivers installed by DVESetup_EN.exe are not working under wine.
Re: Fwd: Unable to Get Sony IC Recorder (Digital Voice Editor 3.3.01) to Work with 32-bit Wine (Windows Emulator) in 64-bit Fedora 11 x86_64 Linux
I have attached DVEdit.log.txt. In addition to problem with loading npf.sys, icdusb2.sys tries to use KeInitializeDeviceQueue which is not implemented and crashes.
Re: USB Device Support
Before I go off and try to update your USB device support for the latest Wine release, are you continuing to maintain this code current to the Wine Development and Wine Stable trunks? I will update patches. Thanks, Alexander
Re: kernel32: Prevent second loading of a library with specified path.
This should most likely be done in ntdll. Also please add tests for these different cases. For tests should create dll which can be loaded. But I do not know how to implement this in tests on WINE. I tried to copy and rename .exe.so module but it seems like the problem is existing only for PE modules.
Re: kernel32: Prevent second loading of a library with specified path.
I think we already create our own dll's for testing purposes, see kernel32/tests/loader.c (test_Loader()). Will that suffice? Thanks. This is what is need.
Re: Status of USB device support in wine
- The files from ftp://ftp.etersoft.ru/pub/people/amorozov/usb/current/ miss lines in configure.ac to trigger the Makefile generation for usbd.sys and usbhub.sys. The part which is generated by tools/make_makefiles is not included in these patches. Both dll/drivers pair (libusb0.dll/libusb0.sys and ftd2xx.dll/ftdibus.sys) work an a lot devices and so must scan the bus for matching devices. I didn't get wine with the patches to do anything sensible in that case. As I understand drivers should not scan bus. They are loaded for devices with appropriate VID and PID. On Windows should modify inf-file (see Device Driver Installation on libusb-win32.sourceforge.net). On WINE with USB patches should add appropriate registry entries.
Re: Loading of Mingw Provided .sys files
trying to use the supplied or the mingw (cross) compiled libusb0.sys from sourceforge with the USB enabled tree from http://git.etersoft.ru/people/lav/packages/wine.git loading libusb0.sys fails: Drivers built with WinDDK is not page-aligned and (nt-OptionalHeader.SectionAlignment = page_mask) is true for them. But libusb0.sys is page-aligned: $ winedump libusb0.sys | grep section section align 0x1000 4096 See map_image() in dlls/ntdll/virtual.c: /* check for non page-aligned binary */ if (nt-OptionalHeader.SectionAlignment = page_mask) { /* unaligned sections, this happens for native subsystem binaries */ /* in that case Windows simply maps in the whole file */ ... goto done; }
Re: Status of USB driver support?
On Thursday 19 February 2009 16:55:20 emiliano esposito wrote: Unhandled exception: unimplemented function usbd.sys.USBD_GetUSBDIVersion called in 32-bit code (0x7ee2e923) You can try attached patch From b7fad82130608126244ba2aee3f91b3337229fb3 Mon Sep 17 00:00:00 2001 From: Alexander Morozov amoro...@etersoft.ru Date: Fri, 20 Feb 2009 12:14:33 +0300 Subject: [PATCH 3/3] usbd.sys: Implement USBD_GetUSBDIVersion. --- dlls/usbd.sys/usbd.c|7 +++ dlls/usbd.sys/usbd.sys.spec |2 +- include/ddk/usb.h |6 ++ 3 files changed, 14 insertions(+), 1 deletions(-) diff --git a/dlls/usbd.sys/usbd.c b/dlls/usbd.sys/usbd.c index 8c2a8f9..c7c8fab 100644 --- a/dlls/usbd.sys/usbd.c +++ b/dlls/usbd.sys/usbd.c @@ -132,6 +132,13 @@ PURB WINAPI USBD_CreateConfigurationRequest( return urb; } +void WINAPI USBD_GetUSBDIVersion( PUSBD_VERSION_INFORMATION VersionInformation ) +{ +TRACE( %p\n, VersionInformation ); +VersionInformation-USBDI_Version = 0x300; +VersionInformation-Supported_USB_Version = 0x100; +} + NTSTATUS WINAPI DriverEntry( DRIVER_OBJECT *driver, UNICODE_STRING *path ) { return STATUS_SUCCESS; diff --git a/dlls/usbd.sys/usbd.sys.spec b/dlls/usbd.sys/usbd.sys.spec index 5d0377c..a18bbf8 100644 --- a/dlls/usbd.sys/usbd.sys.spec +++ b/dlls/usbd.sys/usbd.sys.spec @@ -19,7 +19,7 @@ @ stub USBD_GetInterfaceLength @ stub USBD_GetPdoRegistryParameter @ stub USBD_GetSuspendPowerState -@ stub USBD_GetUSBDIVersion +@ stdcall USBD_GetUSBDIVersion(ptr) @ stub USBD_InitializeDevice @ stub USBD_MakePdoName @ stub USBD_ParseConfigurationDescriptor diff --git a/include/ddk/usb.h b/include/ddk/usb.h index b8f5f3f..a5db726 100644 --- a/include/ddk/usb.h +++ b/include/ddk/usb.h @@ -82,6 +82,12 @@ typedef PVOID USBD_PIPE_HANDLE; typedef PVOID USBD_CONFIGURATION_HANDLE; typedef PVOID USBD_INTERFACE_HANDLE; +typedef struct _USBD_VERSION_INFORMATION { +ULONG USBDI_Version; +ULONG Supported_USB_Version; +} USBD_VERSION_INFORMATION; +typedef struct _USBD_VERSION_INFORMATION *PUSBD_VERSION_INFORMATION; + typedef enum _USBD_PIPE_TYPE { UsbdPipeTypeControl, UsbdPipeTypeIsochronous, -- 1.6.1.3.GIT
Re: Status of USB driver support?
Unhandled exception: unimplemented function usbd.sys.USBD_GetUSBDIVersion called in 32-bit code (0x7ee2e923) Should implement USBD_GetUSBDIVersion to fix this.
Re: Status of USB driver support?
Now I kindly ask: is there a simple way to integrate the official branch with just the USB patches? You can use patches for wine-1.1.15 and git am. If that USB Key is not of a supportable kind, then I apologize for asking. I think you should try.
Re: Status of USB driver support?
Minor updated patches: ftp://ftp.etersoft.ru/pub/people/amorozov/usb/1.1.15/0001-Add-support-of-native-Windows-drivers-for-USB-tokens.txt ftp://ftp.etersoft.ru/pub/people/amorozov/usb/1.1.15/0002-Re-generate-some-files.txt
Re: Status of USB driver support?
This patch is made, first of all, for running applications protected with USB keys. For using native USB driver should copy HKLM\System\CurrentControlSet\Enum\USB\Vid_vidPid_pid and HKLM\System\CurrentControlSet\Services\driver_name from Windows registry. The driver should be put in the directory specified by HKLM\System\CurrentControlSet\Services\driver_name\ImagePath. Also you need to have permissions to read/write to USB device. For using HASP HL keys aksclass.sys should be placed in windows/system32 instead of windows/system32/drivers. Also you should copy HKLM\System\CurrentControlSet\Enum\Hasp from Windows registry. I tested last patch with Eutron SmartKey 3 (eusk3usb.sys, vid:pid 073d:0025) and HASP HL 3.21 (aksusb.sys, akshasp.sys, aksclass.sys, 0529:0001). Also SafeNet UltraPro (sntnlusb.sys, 04b9:0300) should work (tested with previous versions). For testing keys I used protected applications and simple test programs using API from key vendors. E.g. I have FTDI devices, using ftd2xx.dll. Can I expect to get them working? I know nothing about these devices and I did not test them. But I think for working with them a driver is also necessary (not only dll).
Support of native Windows drivers for USB tokens
On Tuesday 07 October 2008 15:02:23 Alexandre Julliard wrote: Your design needs a lot more thought. You can't add all these Wine-specific modules, or make winedevice special-case usb devices, or poll the server for the add_device request like you do. All this needs to be properly integrated in the existing infrastructure. I made big changes in the design since previous version. Now there are no new wine-specific modules and wineserver is not used for calling AddDevice. All drivers are running in a single winedevice process. ftp://ftp.etersoft.ru/pub/people/amorozov/0001-Add-support-of-native-Windows-drivers-for-USB-tokens.txt ftp://ftp.etersoft.ru/pub/people/amorozov/0002-Re-generate-some-files.txt Second patch was generated with tools/make_requests autoheader After applying these patches should run tools/make_makefiles. For using native USB driver should copy HKLM\System\CurrentControlSet\Enum\USB\Vid_vidPid_pid and HKLM\System\CurrentControlSet\Services\driver_name from Windows registry. The driver should be put in the directory specified by HKLM\System\CurrentControlSet\Services\driver_name\ImagePath. Also you need to have permissions to read/write to USB device.
[try2] ntoskrnl.exe: Implement Io{Allocate, Get}DriverObjectExtension.
Please, use this patch instead of previous ntoskrnl.exe: Implement Io{Allocate,Get}DriverObjectExtension. From b5441d22fe51640849436b563ca3ab6c9a80c1a5 Mon Sep 17 00:00:00 2001 From: Alexander Morozov amoro...@etersoft.ru Date: Wed, 17 Dec 2008 12:44:46 +0300 Subject: [PATCH] ntoskrnl.exe: Implement Io{Allocate,Get}DriverObjectExtension. --- dlls/ntoskrnl.exe/ntoskrnl.c | 53 +++-- 1 files changed, 50 insertions(+), 3 deletions(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index a669d3b..73054e3 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -63,6 +63,16 @@ struct IrpInstance IRP *irp; }; +static struct list DriverObjExtensions = LIST_INIT(DriverObjExtensions); + +struct DriverObjExtension +{ +struct list entry; +void *ptr; +DRIVER_OBJECT *driver; +void *id_addr; +}; + #ifdef __i386__ #define DEFINE_FASTCALL1_ENTRYPOINT( name ) \ __ASM_GLOBAL_FUNC( name, \ @@ -267,9 +277,28 @@ NTSTATUS WINAPI IoAllocateDriverObjectExtension( PDRIVER_OBJECT DriverObject, ULONG DriverObjectExtensionSize, PVOID *DriverObjectExtension ) { -FIXME( %p, %p, %u, %p\n, DriverObject, ClientIdentificationAddress, +struct DriverObjExtension *ext; + +TRACE( %p, %p, %u, %p\n, DriverObject, ClientIdentificationAddress, DriverObjectExtensionSize, DriverObjectExtension ); -return STATUS_NOT_IMPLEMENTED; + +*DriverObjectExtension = NULL; +if (IoGetDriverObjectExtension( DriverObject, ClientIdentificationAddress )) +return STATUS_OBJECT_NAME_COLLISION; +ext = ExAllocatePool( NonPagedPool, sizeof(*ext) ); +if (ext == NULL) +return STATUS_INSUFFICIENT_RESOURCES; +ext-ptr = ExAllocatePool( NonPagedPool, DriverObjectExtensionSize ); +if (ext-ptr == NULL) +{ +ExFreePool( ext ); +return STATUS_INSUFFICIENT_RESOURCES; +} +ext-driver = DriverObject; +ext-id_addr = ClientIdentificationAddress; +list_add_tail( DriverObjExtensions, ext-entry ); +*DriverObjectExtension = ext-ptr; +return STATUS_SUCCESS; } @@ -279,7 +308,16 @@ NTSTATUS WINAPI IoAllocateDriverObjectExtension( PDRIVER_OBJECT DriverObject, PVOID WINAPI IoGetDriverObjectExtension( PDRIVER_OBJECT DriverObject, PVOID ClientIdentificationAddress ) { -FIXME( %p, %p\n, DriverObject, ClientIdentificationAddress ); +struct DriverObjExtension *ext; + +TRACE( %p, %p\n, DriverObject, ClientIdentificationAddress ); + +LIST_FOR_EACH_ENTRY( ext, DriverObjExtensions, struct DriverObjExtension, entry ) +{ +if (DriverObject == ext-driver +ClientIdentificationAddress == ext-id_addr) +return ext-ptr; +} return NULL; } @@ -1138,6 +1176,7 @@ PVOID WINAPI MmGetSystemRoutineAddress(PUNICODE_STRING SystemRoutineName) BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) { LARGE_INTEGER count; +struct DriverObjExtension *ext, *ext2; switch(reason) { @@ -1146,6 +1185,14 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) RtlAddVectoredExceptionHandler( TRUE, vectored_handler ); KeQueryTickCount( count ); /* initialize the global KeTickCount */ break; +case DLL_PROCESS_DETACH: +LIST_FOR_EACH_ENTRY_SAFE( ext, ext2, DriverObjExtensions, +struct DriverObjExtension, entry ) +{ +list_remove( ext-entry ); +ExFreePool( ext-ptr ); +ExFreePool( ext ); +} } return TRUE; } -- 1.6.0.2.GIT
Re: hal: add stub for ExAcquireFastMutex
On Tuesday 09 December 2008 03:52:01 ricardo filipe wrote: this is for http://bugs.winehq.org/show_bug.cgi?id=12628 This is fastcall function. It should be defined like KfAcquireSpinLock.
USB device drivers support
Hello, I sent patch Add support of WDM drivers for USB devices. in October and received such reply from Alexandre Julliard: Your design needs a lot more thought. You can't add all these Wine-specific modules, or make winedevice special-case usb devices, or poll the server for the add_device request like you do. All this needs to be properly integrated in the existing infrastructure. I`d like to ask about better way of modifying patches which add USB device drivers support before doing something. Wineusb and wineusbhub can be moved to usbhub.sys. This driver creates a device which is used as second argument for AddDevice on Windows XP. So no wine-specific modules will be added. Using wineserver to call AddDevice can be avoided if move code which loads device drivers and code which enumerates devices and call AddDevice to one process. This can be made if use one winedevice process for all drivers. This will allow every driver to use IRP, DEVICE_OBJECTs and other structures created by other driver and will help to implement such functions as IoGetDeviceObjectPointer. Can I do so? Or there are some reasons which do not allow? Thanks, Alexander
NT driver address space
Hi, Under Wine NT drivers are running in user address space. Some drivers do not work correctly because of this. For example Guardant USB token driver crashes when loading but this problem can be fixed with such patch (really I tested with our wine fork): diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 78e38dc..f607f22 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -904,6 +904,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz server_enter_uninterrupted_section( csVirtual, sigset ); +if (0x1 == base) base = 0x8100; if (base = (char *)0x11) /* make sure the DOS area remains free */ status = map_view( view, base, total_size, mask, FALSE, VPROT_COMMITTED | VPROT_READ | VPROT_EXEC | VPROT_WRITECOPY | VPROT_IMAGE ); diff --git a/libs/wine/mmap.c b/libs/wine/mmap.c index ff117cc..4c18683 100644 --- a/libs/wine/mmap.c +++ b/libs/wine/mmap.c @@ -346,7 +346,7 @@ void mmap_init(void) #if defined(__i386__) !defined(__FreeBSD__) !defined(__FreeBSD_kernel__) /* commented out until FreeBSD gets fixed */ char stack; char * const stack_ptr = stack; -char *user_space_limit = (char *)0x7ffe; +char *user_space_limit = (char *)0xaffe; reserve_malloc_space( 8 * 1024 * 1024 ); I see two ways of fixing this. 1. Modify wine to run winedevice.exe in kernel address space ( 0x8000) by checking name of executable. 2. Modify ExAllocatePool and some other functions to use kernel address space, modify functions which is used by drivers (ntoskrnl.exe exports etc.) to use only this memory allocation functions, modify winedevice.exe to load driver and create stack in kernel address space. What is better decision? Thanks, Alexander Morozov
Re: [try 2] [6/9] Add usbd.sys.
Patchwatcher doesn't know what to do with partial resends yet (eventually it will ignore them). At the moment I have to delete them manually, else patchwatcher gets confused and waits for the rest of the series. - Dan I looked at patchwatcher results. Making patch [5/9] failed because after applying this patch should run tools/make_requests. Also should run tools/make_makefiles and autoheader (for regenerating include/config.h.in). I can resend the whole series of patches with second version of [6/9] but this is useless before fixing this problem. Thanks, Alexander
Re: [6/9] Add usbd.sys.
2008/10/6 Alexander Morozov [EMAIL PROTECTED]: +@ stdcall [EMAIL PROTECTED](ptr ptr) USBD_CreateConfigurationRequestEx ... +@ stdcall [EMAIL PROTECTED](ptr ptr long long long long long) USBD_ParseConfigurationDescriptorEx +@ stub [EMAIL PROTECTED] The stdcall calling convention specifies a decoration of a leading underscore and an @ followed by the number of bytes to push onto the stack, which is added automatically by winebuild. Is there a reason why you are adding this on yourself? winedump -x usbd.sys with usbd.sys from Windows XP shows 2 entry points for some functions: ... 0510 1 USBD_CreateConfigurationRequestEx ... 0628 2 USBD_ParseConfigurationDescriptorEx 05F0 3 USBD_ParseDescriptors ... 051010 [EMAIL PROTECTED] 062826 [EMAIL PROTECTED] 05F027 [EMAIL PROTECTED] ... Entry points with @ are used by SafeNet UltraPro USB token driver. Even if there is a good reason, you don't need to quote the @ symbols. You are right. I will send new version of this patch.
ntoskrnl.exe tests
Hello, What should modify in these patches that they can be accepted: [try 5] [1/4] dlls/Maketest.rules.in: Add support of building various resources for cross and usual tests http://www.winehq.org/pipermail/wine-patches/2008-August/060204.html [try 5] [2/4] Add tests for ntoskrnl.exe http://www.winehq.org/pipermail/wine-patches/2008-August/060205.html [try 5] [3/4] include/ddk/wdm.h: Add IO_TYPE_* defines http://www.winehq.org/pipermail/wine-patches/2008-August/060203.html [try 5] [4/4] ntoskrnl.exe/tests: Add tests for IoInitializeIrp and IoAllocateIrp http://www.winehq.org/pipermail/wine-patches/2008-August/060206.html
Re: ntoskrnl tests - where to write them?
I have been looking at writing a couple of tests for ntoskrl functions but I have had difficulty locating a suitable place. It sort of looks like ntdll/tests is the place but it is not clear. Is there a guide for locating this one? Jeff Now I am working on ntoskrnl tests. I am going to send theirs to wine-patches soon.
Re: Support of USB hardware tokens
Yes, add conformance tests for the new ntoskrnl functions and usbd.sys, and break the patch up a lot... Conformance tests should consist of a driver and a program to load it. I do not know other method to call functions from ntoskrnl.exe and usbd.sys on Windows. But I have a problem with building drivers with MinGW. I was able to create a driver which is loading on Wine with manual editing of PE header but it does not work on Windows and I do not understand what should change to fix this. Did somebody build NT drivers with MinGW?
Support of USB hardware tokens
Hello All, I created a patch which adds support of USB hardware tokens with native Windows drivers (.sys): ftp://ftp.etersoft.ru/pub/download/amorozov/0001-Support-of-native-Windows-drivers-for-USB-tokens.txt Now SafeNet UltraPro (driver sntnlusb.sys, vid/pid 04b9:0300) and Eutron SmartKey 3 (driver eusk3usb.sys, vid/pid 073d:0025) are supported. These devices are used by some Windows applications for piracy defense. This patch adds dlls/usbd.sys, dlls/wineusbhub and programs/wineusb. Usbd.sys is exist also in Windows. This is a kernel level DLL exporting some functions required for USB drivers. Wineusbhub plays a role of a lower driver in device stack (under USB token driver). Wineusb is a service calling driver`s AddDevice routine if there is a registry key corresponding to device and device is plugged. Now this check is executed only when wineusb is starting. USB driver is loaded by programs/winedevice. Now AddDevice and some PNP functions are called in addition to DriverEntry. Calling DriverEntry is realized by means of wineserver requests. Some required ntoskrnl.exe functions are added. For using native USB driver should copy HKLM\System\CurrentControlSet\Enum\USB\Vid_vidPid_pid and HKLM\System\CurrentControlSet\Services\driver_name from Windows registry. HKLM\System\CurrentControlSet\Services\driver_name\Start should be setted to 2. I`d like to add this patch to Wine. What about this? I think should split my patch into many little commits. Should also add some tests or make some changes? Thanks, Alexander Morozov
Re: Support of USB hardware tokens
Split it at least into the sub driver/dll parts. You can leave out the configure part, it will be regenerated form configure. ac anyway. Same for dlls/Makefile.in The ntoskrnl changes might break the already working copy protection drivers, so either try them yourself after the patch or ask someone to try them. The ntoskrnl changes are also so large that you split them into parts, like perhaps: - stubs - header file changes / additions - new implementation functions - hook those functions into current framework (if the two steps are seperable) Ciao, Marcus Thank you for your answer. As I understand, working copy protection drivers are listed here: http://wiki.winehq.org/CopyProtection?highlight=%28copy%29%7C%28protection%29 Can someone test theirs after applying my patch?
wininet: InternetErrorDlg should return ERROR_NOT_SUPPORTED if error is not supported
Changelog: InternetErrorDlg should return ERROR_NOT_SUPPORTED if error is not supported From b89937296efd5a45772027f07b2fdbf80b5f480d Mon Sep 17 00:00:00 2001 From: Alexander Morozov [EMAIL PROTECTED] Date: Wed, 25 Jun 2008 19:07:34 +0400 Subject: [PATCH] wininet: InternetErrorDlg should return ERROR_NOT_SUPPORTED if error is not supported --- dlls/wininet/dialogs.c |2 +- dlls/wininet/tests/dialogs.c |1 - 2 files changed, 1 insertions(+), 2 deletions(-) diff --git a/dlls/wininet/dialogs.c b/dlls/wininet/dialogs.c index cf6ee5c..1ea9b9c 100644 --- a/dlls/wininet/dialogs.c +++ b/dlls/wininet/dialogs.c @@ -385,5 +385,5 @@ DWORD WINAPI InternetErrorDlg(HWND hWnd, HINTERNET hRequest, FIXME(Need to display dialog for error %d\n, dwError); return ERROR_SUCCESS; } -return ERROR_INVALID_PARAMETER; +return ERROR_NOT_SUPPORTED; } diff --git a/dlls/wininet/tests/dialogs.c b/dlls/wininet/tests/dialogs.c index 088ba01..168053f 100644 --- a/dlls/wininet/tests/dialogs.c +++ b/dlls/wininet/tests/dialogs.c @@ -66,7 +66,6 @@ static void test_InternetErrorDlg(void) ret = InternetErrorDlg(GetDesktopWindow(), hr, ERROR_FILE_NOT_FOUND, 0, NULL); -todo_wine ok(ret == ERROR_NOT_SUPPORTED, InternetErrorDlg failed\n); end_thread = 0; -- 1.5.4.5.GIT
wininet/tests: add InternetErrorDlg tests
Changelog: Add InternetErrorDlg tests I ran these tests on Win98 and WinXP From 687f7d365b97d1da95db222e5bd5bbdf5c62c76f Mon Sep 17 00:00:00 2001 From: Alexander Morozov [EMAIL PROTECTED] Date: Wed, 25 Jun 2008 19:01:42 +0400 Subject: [PATCH] wininet/tests: add InternetErrorDlg tests --- dlls/wininet/tests/Makefile.in |3 +- dlls/wininet/tests/dialogs.c | 194 2 files changed, 196 insertions(+), 1 deletions(-) create mode 100644 dlls/wininet/tests/dialogs.c diff --git a/dlls/wininet/tests/Makefile.in b/dlls/wininet/tests/Makefile.in index ba8f662..92d875b 100644 --- a/dlls/wininet/tests/Makefile.in +++ b/dlls/wininet/tests/Makefile.in @@ -3,9 +3,10 @@ TOPOBJDIR = ../../.. SRCDIR= @srcdir@ VPATH = @srcdir@ TESTDLL = wininet.dll -IMPORTS = wininet ws2_32 kernel32 +IMPORTS = wininet ws2_32 kernel32 user32 CTESTS = \ + dialogs.c \ ftp.c \ generated.c \ http.c \ diff --git a/dlls/wininet/tests/dialogs.c b/dlls/wininet/tests/dialogs.c new file mode 100644 index 000..c2f3878 --- /dev/null +++ b/dlls/wininet/tests/dialogs.c @@ -0,0 +1,194 @@ +/* + * Wininet - dialog tests + * + * Copyright 2008 Alexander Morozov for Etersoft + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include windows.h +#include wininet.h + +#include wine/test.h + +static LONG end_thread; + +static BOOL CALLBACK enum_wnd_proc(HWND hwnd, LPARAM lparam) +{ +SendMessageA(hwnd, WM_CLOSE, 0, 0); +InterlockedIncrement(end_thread); +return TRUE; +} + +static DWORD CALLBACK killer_thread(LPVOID param) +{ +/* Without Sleep(50) a window failed to close sometimes */ +Sleep(50); +while (!end_thread) +EnumThreadWindows((DWORD)param, enum_wnd_proc, 0); +return 0; +} + +static void test_InternetErrorDlg(void) +{ +HANDLE hThread; +HINTERNET hi, hc, hr; +DWORD ret, id; + +hi = InternetOpenA(winetest, 0, NULL, NULL, 0); +ok(hi != NULL, InternetOpen failed\n); +hc = InternetConnectA(hi, localhost, INTERNET_DEFAULT_HTTP_PORT, +NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); +ok(hc != NULL, InternetConnect failed\n); +hr = HttpOpenRequestA(hc, GET, /, NULL, NULL, NULL, 0, 0); +ok(hr != NULL, HttpOpenRequest failed\n); + +ret = InternetErrorDlg(NULL, NULL, ERROR_SUCCESS, 0, NULL); +todo_wine +ok(ret == ERROR_INVALID_HANDLE, InternetErrorDlg failed\n); + +ret = InternetErrorDlg(GetDesktopWindow(), hr, +ERROR_SUCCESS, 0, NULL); +todo_wine +ok(ret == ERROR_NOT_SUPPORTED, InternetErrorDlg failed\n); + +ret = InternetErrorDlg(GetDesktopWindow(), hr, +ERROR_FILE_NOT_FOUND, 0, NULL); +todo_wine +ok(ret == ERROR_NOT_SUPPORTED, InternetErrorDlg failed\n); + +end_thread = 0; +hThread = CreateThread(NULL, 0, killer_thread, +(LPVOID)GetCurrentThreadId(), 0, id); +ok(hThread != NULL, create thread failed\n); +if (NULL != hThread) +{ +ret = InternetErrorDlg(GetDesktopWindow(), hr, +ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, 0, NULL); +ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS, +InternetErrorDlg failed\n); +InterlockedIncrement(end_thread); +ret = WaitForSingleObject(hThread, 3000); +ok(ret == WAIT_OBJECT_0, thread wait failed\n); +CloseHandle(hThread); +} + +end_thread = 0; +hThread = CreateThread(NULL, 0, killer_thread, +(LPVOID)GetCurrentThreadId(), 0, id); +ok(hThread != NULL, create thread failed\n); +if (NULL != hThread) +{ +ret = InternetErrorDlg(GetDesktopWindow(), hr, +ERROR_INTERNET_POST_IS_NON_SECURE, 0, NULL); +ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS, +InternetErrorDlg failed\n); +InterlockedIncrement(end_thread); +ret = WaitForSingleObject(hThread, 3000); +ok(ret == WAIT_OBJECT_0, thread wait failed\n); +CloseHandle(hThread); +} + +end_thread = 0; +hThread = CreateThread(NULL, 0, killer_thread, +(LPVOID)GetCurrentThreadId(), 0, id); +ok(hThread != NULL, create thread failed\n); +if (NULL != hThread) +{ +ret = InternetErrorDlg(GetDesktopWindow
wininet: fix crash
Changelog: fix InternetErrorDlg crash From 6ab5655ebe26611387c2586b06fad78c16de7239 Mon Sep 17 00:00:00 2001 From: Alexander Morozov [EMAIL PROTECTED] Date: Wed, 25 Jun 2008 19:05:40 +0400 Subject: [PATCH] wininet: fix crash --- dlls/wininet/dialogs.c |3 +++ dlls/wininet/tests/dialogs.c |3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/wininet/dialogs.c b/dlls/wininet/dialogs.c index dd5aa31..cf6ee5c 100644 --- a/dlls/wininet/dialogs.c +++ b/dlls/wininet/dialogs.c @@ -75,6 +75,9 @@ static BOOL WININET_GetProxyServer( HINTERNET hRequest, LPWSTR szBuf, DWORD sz ) if (NULL == hIC) return FALSE; +if (NULL == hIC-lpszProxy) + return FALSE; + lstrcpynW(szBuf, hIC-lpszProxy, sz); /* FIXME: perhaps it would be better to use InternetCrackUrl here */ diff --git a/dlls/wininet/tests/dialogs.c b/dlls/wininet/tests/dialogs.c index c2f3878..088ba01 100644 --- a/dlls/wininet/tests/dialogs.c +++ b/dlls/wininet/tests/dialogs.c @@ -166,7 +166,6 @@ static void test_InternetErrorDlg(void) CloseHandle(hThread); } -/* This crashes end_thread = 0; hThread = CreateThread(NULL, 0, killer_thread, (LPVOID)GetCurrentThreadId(), 0, id); @@ -181,7 +180,7 @@ static void test_InternetErrorDlg(void) ret = WaitForSingleObject(hThread, 3000); ok(ret == WAIT_OBJECT_0, thread wait failed\n); CloseHandle(hThread); -} */ +} InternetCloseHandle(hr); InternetCloseHandle(hc); -- 1.5.4.5.GIT
Re: unknown device issues after running winetest
Can someone confirm that after running the devinst tests, the registry on Wine still shows these: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\ROOT\LEGACY_BOGUS (and stuff below) HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\BOGUS (and stuff below) HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceClasses\{6A55B5A4 -3F65-11DB-B704-0011955C2BDB} (and stuff below) I can confirm this. Diff file with changes after running make devinst.ok is attached. --- system_1.reg 2008-05-23 11:30:23 +0400 +++ system.reg 2008-05-23 11:30:50 +0400 @@ -8476,7 +8476,7 @@ WINE REGISTRY Version 2 Common Templates=str(2):%ALLUSERSPROFILE%\\\x428\x430\x431\x43b\x43e\x43d\x44b Favorites=str(2):%ALLUSERSPROFILE%\\\x418\x437\x431\x440\x430\x43d\x43d\x43e\x435 -[Software\\Microsoft\\Windows\\CurrentVersion\\Fonts] 1211527787 +[Software\\Microsoft\\Windows\\CurrentVersion\\Fonts] 1211527847 Andale Mono (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\andalemo.ttf Arial (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\arial.ttf Arial Black (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\ariblk.ttf @@ -10485,7 +10485,7 @@ WINE REGISTRY Version 2 Auto=1 Debugger=winedbg --auto %ld %ld -[Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts] 1211527787 +[Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts] 1211527847 @= Andale Mono (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\andalemo.ttf Arial (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\arial.ttf @@ -11257,6 +11257,21 @@ WINE REGISTRY Version 2 StemmerClass= WBreakerClass={369647e0-17b0-11ce-9950-00aa004bbb1f} +[System\\CurrentControlSet\\Control\\DeviceClasses\\{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\##?#ROOT#LEGACY_BOGUS##{6A55B5A4-3F65-11DB-B704-0011955C2BDB}] 1211527847 +DeviceInstance=ROOT\\LEGACY_BOGUS\\ + +[System\\CurrentControlSet\\Control\\DeviceClasses\\{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\##?#ROOT#LEGACY_BOGUS##{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\#] 1211527847 +SymbolicLink=?\\ROOT#LEGACY_BOGUS##{6A55B5A4-3F65-11DB-B704-0011955C2BDB} + +[System\\CurrentControlSet\\Control\\DeviceClasses\\{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\##?#ROOT#LEGACY_BOGUS##{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\#Oogah] 1211527847 +SymbolicLink=?\\ROOT#LEGACY_BOGUS##{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\Oogah + +[System\\CurrentControlSet\\Control\\DeviceClasses\\{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\##?#ROOT#LEGACY_BOGUS#0001#{6A55B5A4-3F65-11DB-B704-0011955C2BDB}] 1211527847 +DeviceInstance=ROOT\\LEGACY_BOGUS\\0001 + +[System\\CurrentControlSet\\Control\\DeviceClasses\\{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\##?#ROOT#LEGACY_BOGUS#0001#{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\#] 1211527847 +SymbolicLink=?\\ROOT#LEGACY_BOGUS#0001#{6A55B5A4-3F65-11DB-B704-0011955C2BDB} + [System\\CurrentControlSet\\Control\\Nls\\Codepage] 1211527787 37= ACP=1252 @@ -11664,6 +11679,15 @@ WINE REGISTRY Version 2 [System\\CurrentControlSet\\Control\\Windows] 1211527787 CSDVersion=dword:0400 +[System\\CurrentControlSet\\Enum\\ROOT\\LEGACY_BOGUS\\] 1211527847 +ClassGUID={6A55B5A4-3F65-11DB-B704-0011955C2BDB} + +[System\\CurrentControlSet\\Enum\\ROOT\\LEGACY_BOGUS\\0001] 1211527847 +ClassGUID={6A55B5A4-3F65-11DB-B704-0011955C2BDB} + +[System\\CurrentControlSet\\Enum\\USB\\BOGUS\\] 1211527847 +ClassGUID={6A55B5A4-3F65-11DB-B704-0011955C2BDB} + [System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts] 1211527787 FIXEDFON.FON=vgafixr.fon FONTS.FON=vgasysr.fon --- user_1.reg 2008-05-23 11:30:28 +0400 +++ user.reg 2008-05-23 11:30:50 +0400 @@ -360,10 +360,10 @@ WINE REGISTRY Version 2 RelayExclude=ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98 RelayFromExclude=winex11.drv;user32;gdi32;advapi32;kernel32 -[Software\\Wine\\Fonts] 1211527787 +[Software\\Wine\\Fonts] 1211527847 Codepages=1251,866 -[Software\\Wine\\Fonts\\External Fonts] 1211527787 +[Software\\Wine\\Fonts\\External Fonts] 1211527847 Andale Mono (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\andalemo.ttf Arial (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\arial.ttf Arial Black (TrueType)=Z:\\usr\\share\\fonts\\ttf\\ms\\ariblk.ttf
Re: unknown device issues after running winetest
I just had a check for the testRegisterAndGetDetail test on Vista (dunno about the other tests and platforms yet). I added the SetupDiRemoveDevice (as was suggested by Alexander) at the end of this test. On a clean registry this works out fine (one DeviceClasses key is left but that one can be deleted without having to fiddle with permissions). When I however first run the old tests (with leftovers in the registry) and then run the new test again the registry keys are still present. When I do the SetupDiRemoveDevice twice at the end of testRegisterAndGetDetail the registry keys get deleted again (not that DeviceClasses key again). So what would be a good approach? Just doing 2 SetupDiRemoveDevice's at the end to make sure old stuff is gone as well? Or doing one, check if the Enum keys is still present and then do a second SetupDiRemoveDevice (with a trace message for clarity)? I think the second way is better. May be a number of Enum keys is equal a quantity of doing old test?
Re: unknown device issues after running winetest
В сообщении от Tuesday 20 May 2008 17:31:48 Paul Vriens написал(а): Hi, On several windows boxes (VMware) I receive this nice message that Windows will try to find a driver for an unknown device. This device is added by the setupapi/devinst test and is not (or can't be?) properly removed after the tests. On NT/W2K I'm able to delete all the relevant registry keys (regedt32.exe) but on Vista I don't seem to be able to delete them Any idea? Do others have the same issue(s) ? Hi, I added testRegisterAndGetDetail and testDeviceRegistryPropertyA/W. I am sorry for creating discussed problem. I tried to use SetupDiRemoveDeviceInterface, SetupDiRemoveDevice and SetupDiDeleteDevRegKey but this is not fixing this bug. SetupDiRemoveDevice and SetupDiDeleteDevRegKey do not delete Enum/ROOT/LEGACY_BOGUS key (on WinXP at least). Now I do not know the right way to delete created keys. May be should use something like Paul Vriens`s change_reg_permissions.
Re: unknown device issues after running winetest
I was mistaken. Enum/ROOT/LEGACY_BOGUS key can be deleted so: SetLastError(0xdeadbeef); set = pSetupDiGetClassDevsA(guid, NULL, 0, 0); ok(set != INVALID_HANDLE_VALUE, SetupDiGetClassDevsA failed: %08x\n, GetLastError()); SetLastError(0xdeadbeef); ret = pSetupDiEnumDeviceInfo(set, 0, devInfo); ok(ret, SetupDiEnumDeviceInfo failed: %08x\n, GetLastError()); if (pSetupDiRemoveDevice) { SetLastError(0xdeadbeef); ret = pSetupDiRemoveDevice(set, devInfo); todo_wine ok(ret, SetupDiRemoveDevice failed: %08x\n, GetLastError()); } else skip(SetupDiRemoveDevice is not available\n); pSetupDiDestroyDeviceInfoList(set);
Re: ntoskrnl.exe: Change calling conventions [try 2]
Why didn't you fix InterlockedExchangeAdd too? Yes, this function also should be fixed. I will send new patch. Sorry. I got confused because this function worked: #include wdm.h #pragma code_seg(INIT) NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { LONG a = 0xaa, b = 0xbb, *ptr = b, ret = 0xcc; ret = InterlockedExchangeAdd(ptr, a); DbgPrint(*ptr %x, ret %x\n, *ptr, ret); return STATUS_SUCCESS; } #pragma code_seg() ... 10628: c7 45 fc aa 00 00 00movl $0xaa,0xfffc(%ebp) 1062f: c7 45 f4 bb 00 00 00movl $0xbb,0xfff4(%ebp) 10636: 8d 45 f4lea0xfff4(%ebp),%eax 10639: 89 45 f8mov%eax,0xfff8(%ebp) 1063c: c7 45 f0 cc 00 00 00movl $0xcc,0xfff0(%ebp) 10643: 8b 55 fcmov0xfffc(%ebp),%edx 10646: 8b 4d f8mov0xfff8(%ebp),%ecx 10649: e8 42 fe ff ff call 0x10490 ...
Re: [1/2] Added a test: registering device interface and getting devicepath
В сообщении от Thursday 27 March 2008 16:24:52 Dmitry Timoshkov написал(а): Alexander Morozov [EMAIL PROTECTED] wrote: Changelog: Added a test for setupapi: registering device interface and getting device path Please consistently print GetLastError() values as %u (not %08x or %d), otherwise the test looks good to me. Edit every test in tests/devinst.c or only testRegisterAndGetDetail?