problem creating/finding files

Insyde insyde at insyde.com.br
Thu Mar 28 12:05:21 CST 2002


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winehq.org/pipermail/wine-devel/attachments/20020328/88564fd5/attachment.htm


More information about the wine-devel mailing list