Hi, I'm getting this error running a system under WINE:
0806faa8:Call kernel32.CreateFileA(405b63ec "C:\WIN\IY032097.DAT",80000000,00000003,00000000,00000003,08000001,0000000 0) ret=6002912b 0806faa8:trace:file:CreateFileA C:\WIN\IY032097.DAT GENERIC_READ FILE_SHARE_READ FILE_SHARE_WRITE OPEN_EXISTING 0806faa8:trace:dosfs:DOSFS_GetFullName C:\WIN\IY032097.DAT (last=1) 0806faa8:trace:string:lstrcpynA (0x405b5a4c, "/mnt/c", 1024) 0806faa8:trace:dosfs:DOSFS_FindUnixName /mnt/c,WIN\IY032097.DAT 0806faa8:trace:heap:RtlAllocateHeap (40360000,00000002,00010bfc): returning 403a9e6c 0806faa8:trace:heap:RtlAllocateHeap (40360000,00000002,00000018): returning 403a7d10 0806faa8:trace:dosfs:DOSFS_FindUnixName (/mnt/c,WIN\IY032097.DAT) -> win (WIN) 0806faa8:trace:heap:RtlFreeHeap (40360000,00000002,403a7d10): returning TRUE 0806faa8:trace:heap:RtlFreeHeap (40360000,00000002,403a9e6c): returning TRUE 0806faa8:trace:dosfs:DOSFS_FindUnixName /mnt/c/win,IY032097.DAT 0806faa8:trace:heap:RtlAllocateHeap (40360000,00000002,00010bfc): returning 403a9e6c 0806faa8:trace:heap:RtlAllocateHeap (40360000,00000002,00000018): returning 403a7d10 0806faa8:warn:dosfs:DOSFS_FindUnixName 'IY032097.DAT' not found in '/mnt/c/win' 0806faa8:trace:heap:RtlFreeHeap (40360000,00000002,403a7d10): returning TRUE 0806faa8:trace:heap:RtlFreeHeap (40360000,00000002,403a9e6c): returning TRUE 0806faa8:warn:file:CreateFileA Unable to get full filename from 'C:\WIN\IY032097.DAT' (GLE 2) ......... 08079370:RET MFRTS32.1199: _mFfindp() retval = 409c5e90 ret=0042b3b7 08079370:CALL MFRTS32.1425: mF_fh_set_fe_stat(00000000) ret=0042b3c8 08079370:RET MFRTS32.1425: mF_fh_set_fe_stat() retval = 00000000 ret=0042b3c8 08079370:RET MFRTS32.1202: _mFg2star_fast() retval = 00000000 ret=0042889a 08079370:RET MFRTS32.1400: ixfile() retval = 00000000 ret=60025e45 08079370:RET MFRTS32.145: EXTFH() retval = 00000000 ret=0044095a 08079370:Call user32.MessageBoxA(00000000,004472de "External Path string <UPCW56-DEV-DATA-DIR> not found. File IYF029. "...,004471c8 "IYP139 ",00002010) ret=00404c01 08079370:warn:dialog:MessageBoxA Messagebox 08079370:trace:resource:RES_FindResource2 (4067a000, 00000005, 40718554"MSGBOX", 0000, A, PE) 08079370:trace:heap:RtlAllocateHeap (40360000,00000002,00000018): returning 403af734 08079370:trace:heap:RtlFreeHeap (40360000,00000002,403af734): returning TRUE 08079370:trace:resource:RES_LoadResource (4067a000, 407234f8, PE) .........
Seems like the file isn't being created. (Uwe Bonnes helped me with this). But we disagree what part of WINE (or outside WINE) is wrong. The first part of the log shows a CreateFileA that is unable to create a file. This API works fine when the file is in the same dir as the application (had tested it). The second part of the log shows the last screen I get after start the program (MessageBox API). MFRTS32 is a .dll the program calls. We thougth of there too. But this program works under Windows. Everything is in the path. Both wine.conf and Linux.
I could reproduce the error in Win2k this way:
Created a set of programs (L1, L2 and L3) that will run one after one with conditions. If the field in L1 is fulfilled then we jump directly to L3. Else We fulfill the field in L2 and then jump to L3.
In details: L1 would creates a file with a name if the filed is fulfilled an L3 NEEDS to know that name. If we had to run L2 then the file will be with another name and L3 will get data from that file. But the file ins't created in neither of the cases. So a screen shows up: "External path string <G-PATH> not found. File FILE-LINUX."
That message is the same I get under WINE: "External path string <UPCW56-DEV-DATA-DIR> not found. File IYF029." Refers to a file (IYF029), that exists (located in the ./data dir) but was not filled with data it need to work, or incorretly filled. Both G-PATH and UPCW56-DEV-DATA-DIR are variables of a file that has a number of them inside.
As here we use APIs I'll list 2 of them that are used within the function and their definiton, took from MSDN:
CreateProcess
CreateProcess( LPCWSTR lpszImageName, LPCWSTR lpszCmdLine, LPSECURITY_ATTRIBUTES lpsaProcess, LPSECURITY_ATTRIBUTES lpsaThread, BOOL fInheritHandles, DWORD fdwCreate, LPVOID lpvEnvironment, LPWSTR lpszCurDir, LPSTARTUPINFOW lpsiStartInfo, LPPROCESS_INFORMATION lppiProcInfo);
........
StartupInfo.dwFillAttribute
dwFillAttribute Ignored unless dwFlags specifies STARTF_USEFILLATTRIBUTE. Specifies the initial text and background colors if a new console window is created in a console application. These values are ignored in GUI applications. This value can be any combination of the following values: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY. For example, the following combination of values produces red text on a white background:
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
OBS.: We do NOT use this to send this kind of attributes. We DO send more data as we saw that it handles well. We also DO use this in gui applications.
typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO; ............... CreateFile
HANDLE CreateFile( LPCTSTR lpFileName, // file name DWORD dwDesiredAccess, // access mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to template file );
..................
Any thoughs?
Thanks, Ricardo.
"Insyde" == Insyde insyde@insyde.com.br writes:
Insyde> Hi, I'm getting this error running a system under WINE:
Insyde> C:\WIN\IY032097.DAT GENERIC_READ FILE_SHARE_READ Insyde> FILE_SHARE_WRITE OPEN_EXISTING ^^^^^^^^^^^^ Insyde> 0806faa8:trace:dosfs:DOSFS_GetFullName C:\WIN\IY032097.DAT
Insyde> Seems like the file isn't being created. (Uwe Bonnes helped me Insyde> with this). But we disagree what part of WINE (or outside WINE) Insyde> is wrong. The first part of the log shows a CreateFileA that is Insyde> unable to create a file. This API works fine when the file is Insyde> in the same dir as the application (had tested it). The second
Yes, and wine does right to not create the file. The program explicity requests to open an _existing_ file. Understand that the CreateFile Api is also used to only open existing files. As the file is not yet created by the other process, the CreateFile Call fails here, as the API requires.
Insyde> part of the log shows the last screen I get after start the Insyde> program (MessageBox API). MFRTS32 is a .dll the program Insyde> calls. We thougth of there too. But this program works under Insyde> Windows. Everything is in the path. Both wine.conf and Linux.
As I told in private mail, I suspect something wrong in synchronization between the processes involved. ... Insyde> Thanks, Ricardo. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Please, no HTML in mail.
Bye