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.