Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
5ce902b0
Commit
5ce902b0
authored
Nov 27, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented DosFileHandleToWin32Handle, Win32HandleToDosFileHandle and
DisposeLZ32Handle and use them to replace file.c internal functions. Renamed WOW* functions into K32WOW*.
parent
1c07718a
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
192 additions
and
177 deletions
+192
-177
kernel32.spec
dlls/kernel/kernel32.spec
+20
-20
thunk.c
dlls/kernel/thunk.c
+19
-30
utthunk.c
dlls/kernel/utthunk.c
+2
-2
wowthunk.c
dlls/kernel/wowthunk.c
+53
-54
Makefile.in
dlls/lzexpand/Makefile.in
+1
-1
lzexpand_main.c
dlls/lzexpand/lzexpand_main.c
+26
-34
compobj.c
dlls/ole32/compobj.c
+3
-1
file.c
files/file.c
+50
-17
file.h
include/file.h
+0
-2
winbase.h
include/winbase.h
+3
-0
segment.c
loader/ne/segment.c
+2
-2
int21.c
msdos/int21.c
+10
-10
vxd.c
msdos/vxd.c
+3
-4
No files found.
dlls/kernel/kernel32.spec
View file @
5ce902b0
...
...
@@ -37,9 +37,9 @@ debug_channels (comm debugstr dll int resource stress thunk toolhelp win32)
17 register -i386 CommonUnimpStub() CommonUnimpStub
18 stdcall GetProcessDword(long long) GetProcessDword
19 stub ThunkTheTemplateHandle
20 st
ub
DosFileHandleToWin32Handle
21 st
ub
Win32HandleToDosFileHandle
22 st
ub
DisposeLZ32Handle
20 st
dcall DosFileHandleToWin32Handle(long)
DosFileHandleToWin32Handle
21 st
dcall Win32HandleToDosFileHandle(long)
Win32HandleToDosFileHandle
22 st
dcall DisposeLZ32Handle(long)
DisposeLZ32Handle
23 stub GDIReallyCares
24 stdcall GlobalAlloc16(long long) GlobalAlloc16
25 stdcall GlobalLock16(long) GlobalLock16
...
...
@@ -71,23 +71,23 @@ debug_channels (comm debugstr dll int resource stress thunk toolhelp win32)
51 register -i386 W32S_BackTo32() W32S_BackTo32
52 stdcall GetThunkBuff() GetThunkBuff
53 stdcall GetThunkStuff(str str) GetThunkStuff
54 stdcall K32WOWCallback16(long long) WOWCallback16
55 stdcall K32WOWCallback16Ex(ptr long long ptr ptr) WOWCallback16Ex
56 stdcall K32WOWGetVDMPointer(long long long) WOWGetVDMPointer
57 stdcall K32WOWHandle32(long long) WOWHandle32
58 stdcall K32WOWHandle16(long long) WOWHandle16
59 stdcall K32WOWGlobalAlloc16(long long) WOWGlobalAlloc16
60 stdcall K32WOWGlobalLock16(long) WOWGlobalLock16
61 stdcall K32WOWGlobalUnlock16(long) WOWGlobalUnlock16
62 stdcall K32WOWGlobalFree16(long) WOWGlobalFree16
63 stdcall K32WOWGlobalAllocLock16(long long ptr) WOWGlobalAllocLock16
64 stdcall K32WOWGlobalUnlockFree16(long) WOWGlobalUnlockFree16
65 stdcall K32WOWGlobalLockSize16(long ptr) WOWGlobalLockSize16
66 stdcall K32WOWYield16() WOWYield16
67 stdcall K32WOWDirectedYield16(long) WOWDirectedYield16
68 stdcall K32WOWGetVDMPointerFix(long long long) WOWGetVDMPointerFix
69 stdcall K32WOWGetVDMPointerUnfix(long) WOWGetVDMPointerUnfix
70 stdcall K32WOWGetDescriptor(long long) WOWGetDescriptor
54 stdcall K32WOWCallback16(long long)
K32
WOWCallback16
55 stdcall K32WOWCallback16Ex(ptr long long ptr ptr)
K32
WOWCallback16Ex
56 stdcall K32WOWGetVDMPointer(long long long)
K32
WOWGetVDMPointer
57 stdcall K32WOWHandle32(long long)
K32
WOWHandle32
58 stdcall K32WOWHandle16(long long)
K32
WOWHandle16
59 stdcall K32WOWGlobalAlloc16(long long)
K32
WOWGlobalAlloc16
60 stdcall K32WOWGlobalLock16(long)
K32
WOWGlobalLock16
61 stdcall K32WOWGlobalUnlock16(long)
K32
WOWGlobalUnlock16
62 stdcall K32WOWGlobalFree16(long)
K32
WOWGlobalFree16
63 stdcall K32WOWGlobalAllocLock16(long long ptr)
K32
WOWGlobalAllocLock16
64 stdcall K32WOWGlobalUnlockFree16(long)
K32
WOWGlobalUnlockFree16
65 stdcall K32WOWGlobalLockSize16(long ptr)
K32
WOWGlobalLockSize16
66 stdcall K32WOWYield16()
K32
WOWYield16
67 stdcall K32WOWDirectedYield16(long)
K32
WOWDirectedYield16
68 stdcall K32WOWGetVDMPointerFix(long long long)
K32
WOWGetVDMPointerFix
69 stdcall K32WOWGetVDMPointerUnfix(long)
K32
WOWGetVDMPointerUnfix
70 stdcall K32WOWGetDescriptor(long long)
K32
WOWGetDescriptor
71 stub IsThreadId
72 forward K32RtlLargeIntegerAdd ntdll.RtlLargeIntegerAdd
73 forward K32RtlEnlargedIntegerMultiply ntdll.RtlEnlargedIntegerMultiply
...
...
dlls/kernel/thunk.c
View file @
5ce902b0
...
...
@@ -1038,7 +1038,6 @@ void WINAPI GetTEBSelectorFS16(void)
/**********************************************************************
* KERNEL_431 (KERNEL.431)
* IsPeFormat (W32SYS.2)
* Checks the passed filename if it is a PE format executeable
* RETURNS
* TRUE, if it is.
...
...
@@ -1048,32 +1047,22 @@ BOOL16 WINAPI IsPeFormat16(
LPSTR
fn
,
/* [in] filename to executeable */
HFILE16
hf16
/* [in] open file, if filename is NULL */
)
{
IMAGE_DOS_HEADER
mzh
;
OFSTRUCT
ofs
;
DWORD
xmagic
;
if
(
fn
)
{
hf16
=
OpenFile16
(
fn
,
&
ofs
,
OF_READ
);
if
(
hf16
==
HFILE_ERROR16
)
return
FALSE
;
}
_llseek16
(
hf16
,
0
,
SEEK_SET
);
if
(
sizeof
(
mzh
)
!=
_lread16
(
hf16
,
&
mzh
,
sizeof
(
mzh
)))
{
_lclose
(
hf16
);
return
FALSE
;
}
if
(
mzh
.
e_magic
!=
IMAGE_DOS_SIGNATURE
)
{
WARN
(
"File has not got dos signature!
\n
"
);
_lclose
(
hf16
);
return
FALSE
;
}
_llseek16
(
hf16
,
mzh
.
e_lfanew
,
SEEK_SET
);
if
(
sizeof
(
DWORD
)
!=
_lread16
(
hf16
,
&
xmagic
,
sizeof
(
DWORD
)))
{
_lclose
(
hf16
);
return
FALSE
;
}
_lclose
(
hf16
);
return
(
xmagic
==
IMAGE_NT_SIGNATURE
);
BOOL
ret
=
FALSE
;
IMAGE_DOS_HEADER
mzh
;
OFSTRUCT
ofs
;
DWORD
xmagic
;
if
(
fn
)
hf16
=
OpenFile16
(
fn
,
&
ofs
,
OF_READ
);
if
(
hf16
==
HFILE_ERROR16
)
return
FALSE
;
_llseek16
(
hf16
,
0
,
SEEK_SET
);
if
(
sizeof
(
mzh
)
!=
_lread16
(
hf16
,
&
mzh
,
sizeof
(
mzh
)))
goto
done
;
if
(
mzh
.
e_magic
!=
IMAGE_DOS_SIGNATURE
)
goto
done
;
_llseek16
(
hf16
,
mzh
.
e_lfanew
,
SEEK_SET
);
if
(
sizeof
(
DWORD
)
!=
_lread16
(
hf16
,
&
xmagic
,
sizeof
(
DWORD
)))
goto
done
;
ret
=
(
xmagic
==
IMAGE_NT_SIGNATURE
);
done:
_lclose16
(
hf16
);
return
ret
;
}
...
...
@@ -1341,7 +1330,7 @@ void WINAPI C16ThkSL01(CONTEXT86 *context)
struct
ThunkDataSL16
*
SL16
=
PTR_SEG_TO_LIN
(
context
->
Edx
);
struct
ThunkDataSL
*
td
=
SL16
->
fpData
;
DWORD
procAddress
=
(
DWORD
)
GetProcAddress16
(
GetModuleHandle16
(
"KERNEL"
),
631
);
DWORD
procAddress
=
(
DWORD
)
GetProcAddress16
(
GetModuleHandle16
(
"KERNEL"
),
(
LPCSTR
)
631
);
WORD
cs
=
__get_cs
();
if
(
!
td
)
...
...
@@ -1781,7 +1770,7 @@ INT16 WINAPI UnRegisterCBClient16( INT16 wCBCId,
void
WINAPI
InitCBClient16
(
FARPROC
glueLS
)
{
HMODULE16
kernel
=
GetModuleHandle16
(
"KERNEL"
);
SEGPTR
glueSL
=
(
SEGPTR
)
WIN32_
GetProcAddress16
(
kernel
,
(
LPCSTR
)
604
);
SEGPTR
glueSL
=
(
SEGPTR
)
GetProcAddress16
(
kernel
,
(
LPCSTR
)
604
);
SetThunkletCallbackGlue16
(
glueLS
,
glueSL
);
}
...
...
@@ -1870,7 +1859,7 @@ SEGPTR WINAPI Get16DLLAddress(HMODULE handle, LPSTR func_name) {
DWORD
proc_16
;
if
(
!
handle
)
handle
=
GetModuleHandle16
(
"WIN32S16"
);
proc_16
=
(
DWORD
)
WIN32_
GetProcAddress16
(
handle
,
func_name
);
proc_16
=
(
DWORD
)
GetProcAddress16
(
handle
,
func_name
);
x
=
PTR_SEG_TO_LIN
(
thunk
);
*
x
++=
0xba
;
*
(
DWORD
*
)
x
=
proc_16
;
x
+=
4
;
/* movl proc_16, $edx */
...
...
dlls/kernel/utthunk.c
View file @
5ce902b0
...
...
@@ -229,7 +229,7 @@ BOOL WINAPI UTRegister( HMODULE hModule, LPSTR lpsz16BITDLL,
/* Load 16-bit DLL and get UTProc16 entry point */
if
(
(
hModule16
=
LoadLibrary16
(
lpsz16BITDLL
))
<=
32
||
(
target16
=
WIN32_
GetProcAddress16
(
hModule16
,
lpszProcName
))
==
0
)
||
(
target16
=
GetProcAddress16
(
hModule16
,
lpszProcName
))
==
0
)
return
FALSE
;
/* Allocate UTINFO struct */
...
...
@@ -250,7 +250,7 @@ BOOL WINAPI UTRegister( HMODULE hModule, LPSTR lpsz16BITDLL,
/* Call UTInit16 if present */
if
(
lpszInitName
&&
(
init16
=
WIN32_
GetProcAddress16
(
hModule16
,
lpszInitName
))
!=
0
)
&&
(
init16
=
GetProcAddress16
(
hModule16
,
lpszInitName
))
!=
0
)
{
SEGPTR
callback
=
SEGPTR_GET
(
&
ut
->
ut16
);
SEGPTR
segBuff
=
MapLS
(
lpBuff
);
...
...
dlls/kernel/wowthunk.c
View file @
5ce902b0
...
...
@@ -39,18 +39,18 @@ DWORD WINAPI CallProcEx32W16(VOID);
*/
/**********************************************************************
* WOWGetDescriptor (WOW32.1) (KERNEL32.70)
*
K32
WOWGetDescriptor (WOW32.1) (KERNEL32.70)
*/
BOOL
WINAPI
WOWGetDescriptor
(
SEGPTR
segptr
,
LPLDT_ENTRY
ldtent
)
BOOL
WINAPI
K32
WOWGetDescriptor
(
SEGPTR
segptr
,
LPLDT_ENTRY
ldtent
)
{
return
GetThreadSelectorEntry
(
GetCurrentThread
(),
segptr
>>
16
,
ldtent
);
}
/**********************************************************************
* WOWGetVDMPointer (WOW32.5) (KERNEL32.56)
*
K32
WOWGetVDMPointer (WOW32.5) (KERNEL32.56)
*/
LPVOID
WINAPI
WOWGetVDMPointer
(
DWORD
vp
,
DWORD
dwBytes
,
BOOL
fProtectedMode
)
LPVOID
WINAPI
K32
WOWGetVDMPointer
(
DWORD
vp
,
DWORD
dwBytes
,
BOOL
fProtectedMode
)
{
/* FIXME: add size check too */
...
...
@@ -61,9 +61,9 @@ LPVOID WINAPI WOWGetVDMPointer( DWORD vp, DWORD dwBytes, BOOL fProtectedMode )
}
/**********************************************************************
* WOWGetVDMPointerFix (WOW32.6) (KERNEL32.68)
*
K32
WOWGetVDMPointerFix (WOW32.6) (KERNEL32.68)
*/
LPVOID
WINAPI
WOWGetVDMPointerFix
(
DWORD
vp
,
DWORD
dwBytes
,
BOOL
fProtectedMode
)
LPVOID
WINAPI
K32
WOWGetVDMPointerFix
(
DWORD
vp
,
DWORD
dwBytes
,
BOOL
fProtectedMode
)
{
/*
* Hmmm. According to the docu, we should call:
...
...
@@ -77,13 +77,13 @@ LPVOID WINAPI WOWGetVDMPointerFix( DWORD vp, DWORD dwBytes, BOOL fProtectedMode
* fProtectedMode is TRUE, anyway ...)
*/
return
WOWGetVDMPointer
(
vp
,
dwBytes
,
fProtectedMode
);
return
K32
WOWGetVDMPointer
(
vp
,
dwBytes
,
fProtectedMode
);
}
/**********************************************************************
* WOWGetVDMPointerUnFix (WOW32.7) (KERNEL32.69)
*
K32
WOWGetVDMPointerUnFix (WOW32.7) (KERNEL32.69)
*/
VOID
WINAPI
WOWGetVDMPointerUnfix
(
DWORD
vp
)
VOID
WINAPI
K32
WOWGetVDMPointerUnfix
(
DWORD
vp
)
{
/*
* See above why we don't call:
...
...
@@ -94,75 +94,75 @@ VOID WINAPI WOWGetVDMPointerUnfix( DWORD vp )
}
/**********************************************************************
* WOWGlobalAlloc16 (WOW32.8) (KERNEL32.59)
*
K32
WOWGlobalAlloc16 (WOW32.8) (KERNEL32.59)
*/
WORD
WINAPI
WOWGlobalAlloc16
(
WORD
wFlags
,
DWORD
cb
)
WORD
WINAPI
K32
WOWGlobalAlloc16
(
WORD
wFlags
,
DWORD
cb
)
{
return
(
WORD
)
GlobalAlloc16
(
wFlags
,
cb
);
}
/**********************************************************************
* WOWGlobalFree16 (WOW32.10) (KERNEL32.62)
*
K32
WOWGlobalFree16 (WOW32.10) (KERNEL32.62)
*/
WORD
WINAPI
WOWGlobalFree16
(
WORD
hMem
)
WORD
WINAPI
K32
WOWGlobalFree16
(
WORD
hMem
)
{
return
(
WORD
)
GlobalFree16
(
(
HGLOBAL16
)
hMem
);
}
/**********************************************************************
* WOWGlobalLock16 (WOW32.11) (KERNEL32.60)
*
K32
WOWGlobalLock16 (WOW32.11) (KERNEL32.60)
*/
DWORD
WINAPI
WOWGlobalLock16
(
WORD
hMem
)
DWORD
WINAPI
K32
WOWGlobalLock16
(
WORD
hMem
)
{
return
(
DWORD
)
WIN16_GlobalLock16
(
(
HGLOBAL16
)
hMem
);
}
/**********************************************************************
* WOWGlobalUnlock16 (WOW32.13) (KERNEL32.61)
*
K32
WOWGlobalUnlock16 (WOW32.13) (KERNEL32.61)
*/
BOOL
WINAPI
WOWGlobalUnlock16
(
WORD
hMem
)
BOOL
WINAPI
K32
WOWGlobalUnlock16
(
WORD
hMem
)
{
return
(
BOOL
)
GlobalUnlock16
(
(
HGLOBAL16
)
hMem
);
}
/**********************************************************************
* WOWGlobalAllocLock16 (WOW32.9) (KERNEL32.63)
*
K32
WOWGlobalAllocLock16 (WOW32.9) (KERNEL32.63)
*/
DWORD
WINAPI
WOWGlobalAllocLock16
(
WORD
wFlags
,
DWORD
cb
,
WORD
*
phMem
)
DWORD
WINAPI
K32
WOWGlobalAllocLock16
(
WORD
wFlags
,
DWORD
cb
,
WORD
*
phMem
)
{
WORD
hMem
=
WOWGlobalAlloc16
(
wFlags
,
cb
);
WORD
hMem
=
K32
WOWGlobalAlloc16
(
wFlags
,
cb
);
if
(
phMem
)
*
phMem
=
hMem
;
return
WOWGlobalLock16
(
hMem
);
return
K32
WOWGlobalLock16
(
hMem
);
}
/**********************************************************************
* WOWGlobalLockSize16 (WOW32.12) (KERNEL32.65)
*
K32
WOWGlobalLockSize16 (WOW32.12) (KERNEL32.65)
*/
DWORD
WINAPI
WOWGlobalLockSize16
(
WORD
hMem
,
PDWORD
pcb
)
DWORD
WINAPI
K32
WOWGlobalLockSize16
(
WORD
hMem
,
PDWORD
pcb
)
{
if
(
pcb
)
*
pcb
=
GlobalSize16
(
(
HGLOBAL16
)
hMem
);
return
WOWGlobalLock16
(
hMem
);
return
K32
WOWGlobalLock16
(
hMem
);
}
/**********************************************************************
* WOWGlobalUnlockFree16 (WOW32.14) (KERNEL32.64)
*
K32
WOWGlobalUnlockFree16 (WOW32.14) (KERNEL32.64)
*/
WORD
WINAPI
WOWGlobalUnlockFree16
(
DWORD
vpMem
)
WORD
WINAPI
K32
WOWGlobalUnlockFree16
(
DWORD
vpMem
)
{
if
(
!
WOWGlobalUnlock16
(
HIWORD
(
vpMem
)
)
)
if
(
!
K32
WOWGlobalUnlock16
(
HIWORD
(
vpMem
)
)
)
return
FALSE
;
return
WOWGlobalFree16
(
HIWORD
(
vpMem
)
);
return
K32
WOWGlobalFree16
(
HIWORD
(
vpMem
)
);
}
/**********************************************************************
* WOWYield16 (WOW32.17) (KERNEL32.66)
*
K32
WOWYield16 (WOW32.17) (KERNEL32.66)
*/
VOID
WINAPI
WOWYield16
(
void
)
VOID
WINAPI
K32
WOWYield16
(
void
)
{
/*
* This does the right thing for both Win16 and Win32 tasks.
...
...
@@ -172,9 +172,9 @@ VOID WINAPI WOWYield16( void )
}
/**********************************************************************
* WOWDirectedYield16 (WOW32.4) (KERNEL32.67)
*
K32
WOWDirectedYield16 (WOW32.4) (KERNEL32.67)
*/
VOID
WINAPI
WOWDirectedYield16
(
WORD
htask16
)
VOID
WINAPI
K32
WOWDirectedYield16
(
WORD
htask16
)
{
/*
* Argh. Our scheduler doesn't like DirectedYield by Win32
...
...
@@ -186,9 +186,9 @@ VOID WINAPI WOWDirectedYield16( WORD htask16 )
/***********************************************************************
* WOWHandle32 (WOW32.16) (KERNEL32.57)
*
K32
WOWHandle32 (WOW32.16) (KERNEL32.57)
*/
HANDLE
WINAPI
WOWHandle32
(
WORD
handle
,
WOW_HANDLE_TYPE
type
)
HANDLE
WINAPI
K32
WOWHandle32
(
WORD
handle
,
WOW_HANDLE_TYPE
type
)
{
switch
(
type
)
{
...
...
@@ -216,9 +216,9 @@ HANDLE WINAPI WOWHandle32( WORD handle, WOW_HANDLE_TYPE type )
}
/***********************************************************************
* WOWHandle16 (WOW32.15) (KERNEL32.58)
*
K32
WOWHandle16 (WOW32.15) (KERNEL32.58)
*/
WORD
WINAPI
WOWHandle16
(
HANDLE
handle
,
WOW_HANDLE_TYPE
type
)
WORD
WINAPI
K32
WOWHandle16
(
HANDLE
handle
,
WOW_HANDLE_TYPE
type
)
{
if
(
HIWORD
(
handle
)
)
ERR
(
"handle 0x%08x of type %d has non-zero HIWORD
\n
"
,
handle
,
type
);
...
...
@@ -249,24 +249,10 @@ WORD WINAPI WOWHandle16( HANDLE handle, WOW_HANDLE_TYPE type )
}
/**********************************************************************
*
WOWCallback16 (WOW32.2) (KERNEL32.54
)
*
K32WOWCallback16Ex (WOW32.3) (KERNEL32.55
)
*/
DWORD
WINAPI
WOWCallback16
(
DWORD
vpfn16
,
DWORD
dwParam
)
{
DWORD
ret
;
if
(
!
WOWCallback16Ex
(
vpfn16
,
WCB16_PASCAL
,
sizeof
(
DWORD
),
&
dwParam
,
&
ret
)
)
ret
=
0L
;
return
ret
;
}
/**********************************************************************
* WOWCallback16Ex (WOW32.3) (KERNEL32.55)
*/
BOOL
WINAPI
WOWCallback16Ex
(
DWORD
vpfn16
,
DWORD
dwFlags
,
DWORD
cbArgs
,
LPVOID
pArgs
,
LPDWORD
pdwRetCode
)
BOOL
WINAPI
K32WOWCallback16Ex
(
DWORD
vpfn16
,
DWORD
dwFlags
,
DWORD
cbArgs
,
LPVOID
pArgs
,
LPDWORD
pdwRetCode
)
{
DWORD
ret
;
...
...
@@ -293,6 +279,19 @@ BOOL WINAPI WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
return
TRUE
;
/* success */
}
/**********************************************************************
* K32WOWCallback16 (WOW32.2) (KERNEL32.54)
*/
DWORD
WINAPI
K32WOWCallback16
(
DWORD
vpfn16
,
DWORD
dwParam
)
{
DWORD
ret
;
if
(
!
K32WOWCallback16Ex
(
vpfn16
,
WCB16_PASCAL
,
sizeof
(
DWORD
),
&
dwParam
,
&
ret
)
)
ret
=
0L
;
return
ret
;
}
/*
...
...
@@ -304,7 +303,7 @@ BOOL WINAPI WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
*/
DWORD
WINAPI
GetVDMPointer32W16
(
SEGPTR
vp
,
UINT16
fMode
)
{
return
(
DWORD
)
WOWGetVDMPointer
(
vp
,
0
,
(
DWORD
)
fMode
);
return
(
DWORD
)
K32
WOWGetVDMPointer
(
vp
,
0
,
(
DWORD
)
fMode
);
}
/***********************************************************************
...
...
dlls/lzexpand/Makefile.in
View file @
5ce902b0
...
...
@@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH
=
@srcdir@
MODULE
=
lz32
ALTNAMES
=
lzexpand
IMPORTS
=
ntdll
EXTRALIBS
=
-lwine_unicode
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
...
...
dlls/lzexpand/lzexpand_main.c
View file @
5ce902b0
...
...
@@ -15,8 +15,7 @@
#include "winbase.h"
#include "wine/winbase16.h"
#include "wine/winestring.h"
#include "file.h"
#include "heap.h"
#include "wine/unicode.h"
#include "lzexpand.h"
#include "debugtools.h"
...
...
@@ -152,7 +151,7 @@ INT WINAPI LZStart(void)
*/
HFILE16
WINAPI
LZInit16
(
HFILE16
hfSrc
)
{
HFILE
ret
=
LZInit
(
FILE_Get
Handle
(
hfSrc
)
);
HFILE
ret
=
LZInit
(
DosFileHandleToWin32
Handle
(
hfSrc
)
);
if
(
IS_LZ_HANDLE
(
ret
))
return
ret
;
if
((
INT
)
ret
<=
0
)
return
ret
;
return
hfSrc
;
...
...
@@ -313,16 +312,16 @@ INT WINAPI GetExpandedNameA( LPCSTR in, LPSTR out )
*/
INT
WINAPI
GetExpandedNameW
(
LPCWSTR
in
,
LPWSTR
out
)
{
char
*
xin
,
*
xou
t
;
INT
ret
;
xout
=
HeapAlloc
(
GetProcessHeap
(),
0
,
lstrlenW
(
in
)
+
3
);
xin
=
HEAP_strdupWtoA
(
GetProcessHeap
(),
0
,
in
);
ret
=
GetExpandedName16
(
xin
,
xout
);
if
(
ret
>
0
)
lstrcpyAtoW
(
out
,
xout
);
HeapFree
(
GetProcessHeap
(),
0
,
xin
);
HeapFree
(
GetProcessHeap
(),
0
,
xout
);
return
ret
;
INT
re
t
;
DWORD
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
in
,
-
1
,
NULL
,
0
,
NULL
,
NULL
)
;
char
*
xin
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
char
*
xout
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
+
3
);
WideCharToMultiByte
(
CP_ACP
,
0
,
in
,
-
1
,
xin
,
len
,
NULL
,
NULL
);
if
((
ret
=
GetExpandedNameA
(
xin
,
xout
))
>
0
)
MultiByteToWideChar
(
CP_ACP
,
0
,
xout
,
-
1
,
out
,
strlenW
(
in
)
+
4
);
HeapFree
(
GetProcessHeap
(),
0
,
xin
);
HeapFree
(
GetProcessHeap
(),
0
,
xout
);
return
ret
;
}
...
...
@@ -332,7 +331,7 @@ INT WINAPI GetExpandedNameW( LPCWSTR in, LPWSTR out )
INT16
WINAPI
LZRead16
(
HFILE16
fd
,
LPVOID
buf
,
UINT16
toread
)
{
if
(
IS_LZ_HANDLE
(
fd
))
return
LZRead
(
fd
,
buf
,
toread
);
return
_lread
(
FILE_Get
Handle
(
fd
),
buf
,
toread
);
return
_lread
(
DosFileHandleToWin32
Handle
(
fd
),
buf
,
toread
);
}
...
...
@@ -433,7 +432,7 @@ INT WINAPI LZRead( HFILE fd, LPVOID vbuf, UINT toread )
LONG
WINAPI
LZSeek16
(
HFILE16
fd
,
LONG
off
,
INT16
type
)
{
if
(
IS_LZ_HANDLE
(
fd
))
return
LZSeek
(
fd
,
off
,
type
);
return
_llseek
(
FILE_Get
Handle
(
fd
),
off
,
type
);
return
_llseek
(
DosFileHandleToWin32
Handle
(
fd
),
off
,
type
);
}
...
...
@@ -476,19 +475,19 @@ LONG WINAPI LZSeek( HFILE fd, LONG off, INT type )
LONG
WINAPI
LZCopy16
(
HFILE16
src
,
HFILE16
dest
)
{
/* already a LZ handle? */
if
(
IS_LZ_HANDLE
(
src
))
return
LZCopy
(
src
,
FILE_Get
Handle
(
dest
)
);
if
(
IS_LZ_HANDLE
(
src
))
return
LZCopy
(
src
,
DosFileHandleToWin32
Handle
(
dest
)
);
/* no, try to open one */
src
=
LZInit16
(
src
);
if
((
INT16
)
src
<=
0
)
return
0
;
if
(
IS_LZ_HANDLE
(
src
))
{
LONG
ret
=
LZCopy
(
src
,
FILE_Get
Handle
(
dest
)
);
LONG
ret
=
LZCopy
(
src
,
DosFileHandleToWin32
Handle
(
dest
)
);
LZClose
(
src
);
return
ret
;
}
/* it was not a compressed file */
return
LZCopy
(
FILE_GetHandle
(
src
),
FILE_Get
Handle
(
dest
)
);
return
LZCopy
(
DosFileHandleToWin32Handle
(
src
),
DosFileHandleToWin32
Handle
(
dest
)
);
}
...
...
@@ -576,7 +575,7 @@ HFILE16 WINAPI LZOpenFile16( LPCSTR fn, LPOFSTRUCT ofs, UINT16 mode )
if
((
INT
)
hfret
<=
0
)
return
hfret
;
if
(
IS_LZ_HANDLE
(
hfret
))
return
hfret
;
/* but allocate a dos handle for 'normal' files */
return
FILE_AllocDos
Handle
(
hfret
);
return
Win32HandleToDosFile
Handle
(
hfret
);
}
...
...
@@ -613,20 +612,13 @@ HFILE WINAPI LZOpenFileA( LPCSTR fn, LPOFSTRUCT ofs, UINT mode )
*/
HFILE
WINAPI
LZOpenFileW
(
LPCWSTR
fn
,
LPOFSTRUCT
ofs
,
UINT
mode
)
{
LPSTR
xfn
;
LPWSTR
yfn
;
HFILE
ret
;
xfn
=
HEAP_strdupWtoA
(
GetProcessHeap
(),
0
,
fn
);
ret
=
LZOpenFile16
(
xfn
,
ofs
,
mode
);
HeapFree
(
GetProcessHeap
(),
0
,
xfn
);
if
(
ret
!=
HFILE_ERROR
)
{
/* ofs->szPathName is an array with the OFSTRUCT */
yfn
=
HEAP_strdupAtoW
(
GetProcessHeap
(),
0
,
ofs
->
szPathName
);
memcpy
(
ofs
->
szPathName
,
yfn
,
lstrlenW
(
yfn
)
*
2
+
2
);
HeapFree
(
GetProcessHeap
(),
0
,
yfn
);
}
return
ret
;
HFILE
ret
;
DWORD
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
fn
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
LPSTR
xfn
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
WideCharToMultiByte
(
CP_ACP
,
0
,
fn
,
-
1
,
xfn
,
len
,
NULL
,
NULL
);
ret
=
LZOpenFileA
(
xfn
,
ofs
,
mode
);
HeapFree
(
GetProcessHeap
(),
0
,
xfn
);
return
ret
;
}
...
...
@@ -636,7 +628,7 @@ HFILE WINAPI LZOpenFileW( LPCWSTR fn, LPOFSTRUCT ofs, UINT mode )
void
WINAPI
LZClose16
(
HFILE16
fd
)
{
if
(
IS_LZ_HANDLE
(
fd
))
LZClose
(
fd
);
else
_lclose16
(
fd
);
else
DisposeLZ32Handle
(
DosFileHandleToWin32Handle
(
fd
)
);
}
...
...
dlls/ole32/compobj.c
View file @
5ce902b0
...
...
@@ -582,6 +582,8 @@ HRESULT WINAPI StringFromCLSID16(
LPOLESTR16
*
idstr
/* [out] a pointer to a to-be-allocated segmented pointer pointing to the resulting string */
)
{
extern
BOOL
WINAPI
K32WOWCallback16Ex
(
DWORD
vpfn16
,
DWORD
dwFlags
,
DWORD
cbArgs
,
LPVOID
pArgs
,
LPDWORD
pdwRetCode
);
LPMALLOC16
mllc
;
HRESULT
ret
;
DWORD
args
[
2
];
...
...
@@ -595,7 +597,7 @@ HRESULT WINAPI StringFromCLSID16(
/* No need for a Callback entry, we have WOWCallback16Ex which does
* everything we need.
*/
if
(
!
WOWCallback16Ex
(
if
(
!
K32
WOWCallback16Ex
(
(
DWORD
)((
ICOM_VTABLE
(
IMalloc16
)
*
)
PTR_SEG_TO_LIN
(
ICOM_VTBL
(((
LPMALLOC16
)
PTR_SEG_TO_LIN
(
mllc
))))
)
->
fnAlloc
,
...
...
files/file.c
View file @
5ce902b0
...
...
@@ -1033,7 +1033,7 @@ success: /* We get here if the open was successful */
}
else
{
hFileRet
=
FILE_AllocDos
Handle
(
hFileRet
);
hFileRet
=
Win32HandleToDosFile
Handle
(
hFileRet
);
if
(
hFileRet
==
HFILE_ERROR16
)
goto
error
;
if
(
mode
&
OF_EXIST
)
/* Return the handle, but close it first */
_lclose16
(
hFileRet
);
...
...
@@ -1075,7 +1075,7 @@ HFILE WINAPI OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode )
* FILE_InitProcessDosHandles
*
* Allocates the default DOS handles for a process. Called either by
*
AllocDos
Handle below or by the DOSVM stuff.
*
Win32HandleToDosFile
Handle below or by the DOSVM stuff.
*/
static
void
FILE_InitProcessDosHandles
(
void
)
{
...
...
@@ -1087,38 +1087,47 @@ static void FILE_InitProcessDosHandles( void )
}
/***********************************************************************
*
FILE_AllocDosHandle
*
Win32HandleToDosFileHandle (KERNEL32.21)
*
* Allocate a DOS handle for a Win32 handle. The Win32 handle is no
* longer valid after this function (even on failure).
*
* Note: this is not exactly right, since on Win95 the Win32 handles
* are on top of DOS handles and we do it the other way
* around. Should be good enough though.
*/
HFILE
16
FILE_AllocDos
Handle
(
HANDLE
handle
)
HFILE
WINAPI
Win32HandleToDosFile
Handle
(
HANDLE
handle
)
{
int
i
;
if
(
!
handle
||
(
handle
==
INVALID_HANDLE_VALUE
))
return
INVALID_HANDLE_VALUE16
;
return
HFILE_ERROR
;
for
(
i
=
5
;
i
<
DOS_TABLE_SIZE
;
i
++
)
if
(
!
dos_handles
[
i
])
{
dos_handles
[
i
]
=
handle
;
TRACE
(
"Got %d for h32 %d
\n
"
,
i
,
handle
);
return
i
;
return
(
HFILE
)
i
;
}
CloseHandle
(
handle
);
SetLastError
(
ERROR_TOO_MANY_OPEN_FILES
);
return
INVALID_HANDLE_VALUE16
;
return
HFILE_ERROR
;
}
/***********************************************************************
*
FILE_GetHandle
*
DosFileHandleToWin32Handle (KERNEL32.20)
*
* Return the Win32 handle for a DOS handle.
*
* Note: this is not exactly right, since on Win95 the Win32 handles
* are on top of DOS handles and we do it the other way
* around. Should be good enough though.
*/
HANDLE
FILE_GetHandle
(
HFILE16
hfi
le
)
HANDLE
WINAPI
DosFileHandleToWin32Handle
(
HFILE
hand
le
)
{
HFILE16
hfile
=
(
HFILE16
)
handle
;
if
(
hfile
<
5
&&
!
dos_handles
[
hfile
])
FILE_InitProcessDosHandles
();
if
((
hfile
>=
DOS_TABLE_SIZE
)
||
!
dos_handles
[
hfile
])
{
...
...
@@ -1130,6 +1139,30 @@ HANDLE FILE_GetHandle( HFILE16 hfile )
/***********************************************************************
* DisposeLZ32Handle (KERNEL32.22)
*
* Note: this is not entirely correct, we should only close the
* 32-bit handle and not the 16-bit one, but we cannot do
* this because of the way our DOS handles are implemented.
* It shouldn't break anything though.
*/
void
WINAPI
DisposeLZ32Handle
(
HANDLE
handle
)
{
int
i
;
if
(
!
handle
||
(
handle
==
INVALID_HANDLE_VALUE
))
return
;
for
(
i
=
5
;
i
<
DOS_TABLE_SIZE
;
i
++
)
if
(
dos_handles
[
i
]
==
handle
)
{
dos_handles
[
i
]
=
0
;
CloseHandle
(
handle
);
break
;
}
}
/***********************************************************************
* FILE_Dup2
*
* dup2() function for DOS handles.
...
...
@@ -1291,7 +1324,7 @@ LONG WINAPI WIN16_hread( HFILE16 hFile, SEGPTR buffer, LONG count )
/* Some programs pass a count larger than the allocated buffer */
maxlen
=
GetSelectorLimit16
(
SELECTOROF
(
buffer
)
)
-
OFFSETOF
(
buffer
)
+
1
;
if
(
count
>
maxlen
)
count
=
maxlen
;
return
_lread
(
FILE_Get
Handle
(
hFile
),
PTR_SEG_TO_LIN
(
buffer
),
count
);
return
_lread
(
DosFileHandleToWin32
Handle
(
hFile
),
PTR_SEG_TO_LIN
(
buffer
),
count
);
}
...
...
@@ -1320,7 +1353,7 @@ UINT WINAPI _lread( HFILE handle, LPVOID buffer, UINT count )
*/
UINT16
WINAPI
_lread16
(
HFILE16
hFile
,
LPVOID
buffer
,
UINT16
count
)
{
return
(
UINT16
)
_lread
(
FILE_Get
Handle
(
hFile
),
buffer
,
(
LONG
)
count
);
return
(
UINT16
)
_lread
(
DosFileHandleToWin32
Handle
(
hFile
),
buffer
,
(
LONG
)
count
);
}
...
...
@@ -1329,7 +1362,7 @@ UINT16 WINAPI _lread16( HFILE16 hFile, LPVOID buffer, UINT16 count )
*/
HFILE16
WINAPI
_lcreat16
(
LPCSTR
path
,
INT16
attr
)
{
return
FILE_AllocDos
Handle
(
_lcreat
(
path
,
attr
)
);
return
Win32HandleToDosFile
Handle
(
_lcreat
(
path
,
attr
)
);
}
...
...
@@ -1397,7 +1430,7 @@ DWORD WINAPI SetFilePointer( HANDLE hFile, LONG distance, LONG *highword,
*/
LONG
WINAPI
_llseek16
(
HFILE16
hFile
,
LONG
lOffset
,
INT16
nOrigin
)
{
return
SetFilePointer
(
FILE_Get
Handle
(
hFile
),
lOffset
,
NULL
,
nOrigin
);
return
SetFilePointer
(
DosFileHandleToWin32
Handle
(
hFile
),
lOffset
,
NULL
,
nOrigin
);
}
...
...
@@ -1415,7 +1448,7 @@ LONG WINAPI _llseek( HFILE hFile, LONG lOffset, INT nOrigin )
*/
HFILE16
WINAPI
_lopen16
(
LPCSTR
path
,
INT16
mode
)
{
return
FILE_AllocDos
Handle
(
_lopen
(
path
,
mode
)
);
return
Win32HandleToDosFile
Handle
(
_lopen
(
path
,
mode
)
);
}
...
...
@@ -1437,7 +1470,7 @@ HFILE WINAPI _lopen( LPCSTR path, INT mode )
*/
UINT16
WINAPI
_lwrite16
(
HFILE16
hFile
,
LPCSTR
buffer
,
UINT16
count
)
{
return
(
UINT16
)
_hwrite
(
FILE_Get
Handle
(
hFile
),
buffer
,
(
LONG
)
count
);
return
(
UINT16
)
_hwrite
(
DosFileHandleToWin32
Handle
(
hFile
),
buffer
,
(
LONG
)
count
);
}
/***********************************************************************
...
...
@@ -1454,7 +1487,7 @@ UINT WINAPI _lwrite( HFILE hFile, LPCSTR buffer, UINT count )
*/
LONG
WINAPI
_hread16
(
HFILE16
hFile
,
LPVOID
buffer
,
LONG
count
)
{
return
_lread
(
FILE_Get
Handle
(
hFile
),
buffer
,
count
);
return
_lread
(
DosFileHandleToWin32
Handle
(
hFile
),
buffer
,
count
);
}
...
...
@@ -1472,7 +1505,7 @@ LONG WINAPI _hread( HFILE hFile, LPVOID buffer, LONG count)
*/
LONG
WINAPI
_hwrite16
(
HFILE16
hFile
,
LPCSTR
buffer
,
LONG
count
)
{
return
_hwrite
(
FILE_Get
Handle
(
hFile
),
buffer
,
count
);
return
_hwrite
(
DosFileHandleToWin32
Handle
(
hFile
),
buffer
,
count
);
}
...
...
include/file.h
View file @
5ce902b0
...
...
@@ -42,8 +42,6 @@ extern HANDLE FILE_CreateFile( LPCSTR filename, DWORD access, DWORD sharing,
DWORD
attributes
,
HANDLE
template
,
BOOL
fail_read_only
);
extern
HFILE
FILE_CreateDevice
(
int
client_id
,
DWORD
access
,
LPSECURITY_ATTRIBUTES
sa
);
extern
HFILE16
FILE_AllocDosHandle
(
HANDLE
handle
);
extern
HANDLE
FILE_GetHandle
(
HFILE16
hfile
);
/* files/directory.c */
extern
int
DIR_Init
(
void
);
...
...
include/winbase.h
View file @
5ce902b0
...
...
@@ -1880,12 +1880,15 @@ typedef struct tagSYSLEVEL
INT
level
;
}
SYSLEVEL
;
void
WINAPI
DisposeLZ32Handle
(
HANDLE
);
HANDLE
WINAPI
DosFileHandleToWin32Handle
(
HFILE
);
VOID
WINAPI
GetpWin16Lock
(
SYSLEVEL
**
);
DWORD
WINAPI
MapLS
(
LPVOID
);
LPVOID
WINAPI
MapSL
(
DWORD
);
VOID
WINAPI
ReleaseThunkLock
(
DWORD
*
);
VOID
WINAPI
RestoreThunkLock
(
DWORD
);
VOID
WINAPI
UnMapLS
(
DWORD
);
HFILE
WINAPI
Win32HandleToDosFileHandle
(
HANDLE
);
DWORD
WINAPI
_ConfirmWin16Lock
(
void
);
DWORD
WINAPI
_ConfirmSysLevel
(
SYSLEVEL
*
);
VOID
WINAPI
_EnterSysLevel
(
SYSLEVEL
*
);
...
...
loader/ne/segment.c
View file @
5ce902b0
...
...
@@ -121,7 +121,7 @@ BOOL NE_LoadSegment( NE_MODULE *pModule, WORD segnum )
pModule
->
self
,
hf
,
segnum
);
DuplicateHandle
(
GetCurrentProcess
(),
hf
,
GetCurrentProcess
(),
&
hFile32
,
0
,
FALSE
,
DUPLICATE_SAME_ACCESS
);
hFile16
=
FILE_AllocDos
Handle
(
hFile32
);
hFile16
=
Win32HandleToDosFile
Handle
(
hFile32
);
pSeg
->
hSeg
=
NE_CallTo16_word_www
(
selfloadheader
->
LoadAppSeg
,
pModule
->
self
,
hFile16
,
segnum
);
TRACE_
(
dll
)(
"Ret CallLoadAppSegProc: hSeg = 0x%04x
\n
"
,
pSeg
->
hSeg
);
...
...
@@ -417,7 +417,7 @@ BOOL NE_LoadAllSegments( NE_MODULE *pModule )
DuplicateHandle
(
GetCurrentProcess
(),
NE_OpenFile
(
pModule
),
GetCurrentProcess
(),
&
hf
,
0
,
FALSE
,
DUPLICATE_SAME_ACCESS
);
hFile16
=
FILE_AllocDos
Handle
(
hf
);
hFile16
=
Win32HandleToDosFile
Handle
(
hf
);
TRACE_
(
dll
)(
"CallBootAppProc(hModule=0x%04x,hf=0x%04x)
\n
"
,
pModule
->
self
,
hFile16
);
NE_CallTo16_word_ww
(
selfloadheader
->
BootApp
,
pModule
->
self
,
hFile16
);
...
...
msdos/int21.c
View file @
5ce902b0
...
...
@@ -267,7 +267,7 @@ static void ioctlGetDeviceInfo( CONTEXT86 *context )
RESET_CFLAG
(
context
);
/* DOS device ? */
if
((
dev
=
DOSFS_GetDeviceByHandle
(
FILE_Get
Handle
(
BX_reg
(
context
))
)))
if
((
dev
=
DOSFS_GetDeviceByHandle
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
))
)))
{
DX_reg
(
context
)
=
dev
->
flags
;
return
;
...
...
@@ -475,7 +475,7 @@ static HFILE16 _lcreat16_uniq( LPCSTR path, INT attr )
{
/* Mask off all flags not explicitly allowed by the doc */
attr
&=
FILE_ATTRIBUTE_READONLY
|
FILE_ATTRIBUTE_HIDDEN
|
FILE_ATTRIBUTE_SYSTEM
;
return
FILE_AllocDos
Handle
(
CreateFileA
(
path
,
GENERIC_READ
|
GENERIC_WRITE
,
return
Win32HandleToDosFile
Handle
(
CreateFileA
(
path
,
GENERIC_READ
|
GENERIC_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
CREATE_NEW
,
attr
,
-
1
));
}
...
...
@@ -887,7 +887,7 @@ static void fLock( CONTEXT86 * context )
BX_reg
(
context
),
MAKELONG
(
DX_reg
(
context
),
CX_reg
(
context
)),
MAKELONG
(
DI_reg
(
context
),
SI_reg
(
context
)))
;
if
(
!
LockFile
(
FILE_Get
Handle
(
BX_reg
(
context
)),
if
(
!
LockFile
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
)),
MAKELONG
(
DX_reg
(
context
),
CX_reg
(
context
)),
0
,
MAKELONG
(
DI_reg
(
context
),
SI_reg
(
context
)),
0
))
{
AX_reg
(
context
)
=
GetLastError
();
...
...
@@ -900,7 +900,7 @@ static void fLock( CONTEXT86 * context )
BX_reg
(
context
),
MAKELONG
(
DX_reg
(
context
),
CX_reg
(
context
)),
MAKELONG
(
DI_reg
(
context
),
SI_reg
(
context
)))
;
if
(
!
UnlockFile
(
FILE_Get
Handle
(
BX_reg
(
context
)),
if
(
!
UnlockFile
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
)),
MAKELONG
(
DX_reg
(
context
),
CX_reg
(
context
)),
0
,
MAKELONG
(
DI_reg
(
context
),
SI_reg
(
context
)),
0
))
{
AX_reg
(
context
)
=
GetLastError
();
...
...
@@ -1628,7 +1628,7 @@ void WINAPI DOS3Call( CONTEXT86 *context )
break
;
case
0x02
:{
const
DOS_DEVICE
*
dev
;
if
((
dev
=
DOSFS_GetDeviceByHandle
(
FILE_Get
Handle
(
BX_reg
(
context
))
))
&&
if
((
dev
=
DOSFS_GetDeviceByHandle
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
))
))
&&
!
strcasecmp
(
dev
->
name
,
"SCSIMGR$"
))
{
ASPI_DOS_HandleInt
(
context
);
...
...
@@ -1758,12 +1758,12 @@ void WINAPI DOS3Call( CONTEXT86 *context )
HANDLE
handle
;
TRACE
(
"DUP - DUPLICATE FILE HANDLE %d
\n
"
,
BX_reg
(
context
));
if
((
bSetDOSExtendedError
=
!
DuplicateHandle
(
GetCurrentProcess
(),
FILE_Get
Handle
(
BX_reg
(
context
)),
DosFileHandleToWin32
Handle
(
BX_reg
(
context
)),
GetCurrentProcess
(),
&
handle
,
0
,
TRUE
,
DUPLICATE_SAME_ACCESS
)))
AX_reg
(
context
)
=
HFILE_ERROR16
;
else
AX_reg
(
context
)
=
FILE_AllocDos
Handle
(
handle
);
AX_reg
(
context
)
=
Win32HandleToDosFile
Handle
(
handle
);
break
;
}
...
...
@@ -1930,7 +1930,7 @@ void WINAPI DOS3Call( CONTEXT86 *context )
FILETIME
filetime
;
TRACE
(
"GET FILE DATE AND TIME for handle %d
\n
"
,
BX_reg
(
context
));
if
(
!
GetFileTime
(
FILE_Get
Handle
(
BX_reg
(
context
)),
NULL
,
NULL
,
&
filetime
))
if
(
!
GetFileTime
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
)),
NULL
,
NULL
,
&
filetime
))
bSetDOSExtendedError
=
TRUE
;
else
FileTimeToDosDateTime
(
&
filetime
,
&
DX_reg
(
context
),
&
CX_reg
(
context
)
);
...
...
@@ -1945,7 +1945,7 @@ void WINAPI DOS3Call( CONTEXT86 *context )
DosDateTimeToFileTime
(
DX_reg
(
context
),
CX_reg
(
context
),
&
filetime
);
bSetDOSExtendedError
=
(
!
SetFileTime
(
FILE_Get
Handle
(
BX_reg
(
context
)),
(
!
SetFileTime
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
)),
NULL
,
NULL
,
&
filetime
));
}
break
;
...
...
@@ -2119,7 +2119,7 @@ void WINAPI DOS3Call( CONTEXT86 *context )
case
0x68
:
/* "FFLUSH" - COMMIT FILE */
case
0x6a
:
/* COMMIT FILE */
TRACE
(
"FFLUSH/COMMIT handle %d
\n
"
,
BX_reg
(
context
));
bSetDOSExtendedError
=
(
!
FlushFileBuffers
(
FILE_Get
Handle
(
BX_reg
(
context
))
));
bSetDOSExtendedError
=
(
!
FlushFileBuffers
(
DosFileHandleToWin32
Handle
(
BX_reg
(
context
))
));
break
;
case
0x69
:
/* DISK SERIAL NUMBER */
...
...
msdos/vxd.c
View file @
5ce902b0
...
...
@@ -600,9 +600,8 @@ void WINAPI VXD_Win32s( CONTEXT86 *context )
if
(
!
(
PROCESS_Current
()
->
flags
&
PDB32_WIN32S_PROC
))
{
HMODULE16
hModule
=
GetModuleHandle16
(
"win32s16"
);
SEGPTR
func1
=
(
SEGPTR
)
WIN32_GetProcAddress16
(
hModule
,
"SetFS"
);
SEGPTR
func2
=
(
SEGPTR
)
WIN32_GetProcAddress16
(
hModule
,
"StackLinearToSegmented"
);
SEGPTR
func1
=
(
SEGPTR
)
GetProcAddress16
(
hModule
,
"SetFS"
);
SEGPTR
func2
=
(
SEGPTR
)
GetProcAddress16
(
hModule
,
"StackLinearToSegmented"
);
if
(
hModule
&&
func1
&&
func2
&&
SELECTOROF
(
func1
)
==
SELECTOROF
(
func2
))
...
...
@@ -1073,7 +1072,7 @@ void WINAPI VXD_Win32s( CONTEXT86 *context )
LARGE_INTEGER
*
size
=
(
LARGE_INTEGER
*
)
W32S_APP2WINE
(
stack
[
3
],
W32S_OFFSET
);
DWORD
protect
=
stack
[
4
];
DWORD
flags2
=
stack
[
5
];
H
FILE
hFile
=
FILE_Get
Handle
(
stack
[
6
]);
H
ANDLE
hFile
=
DosFileHandleToWin32
Handle
(
stack
[
6
]);
DWORD
psp
=
stack
[
7
];
HANDLE
result
=
INVALID_HANDLE_VALUE
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment