2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis
18 static HANDLE32 ProcessHeap
= 0; /* FIXME: should be in process database */
20 /***********************************************************************
21 * ExitProcess (KERNEL32.100)
24 void ExitProcess(DWORD status
)
26 TASK_KillCurrentTask( status
);
29 /***********************************************************************
30 * CreateMutexA (KERNEL32.52)
32 HANDLE32
CreateMutexA (SECURITY_ATTRIBUTES
*sa
, BOOL on
, const char *a
)
37 /***********************************************************************
38 * ReleaseMutex (KERNEL32.435)
40 BOOL
ReleaseMutex (HANDLE32 h
)
45 /***********************************************************************
46 * CreateEventA (KERNEL32.43)
48 HANDLE32
CreateEventA (SECURITY_ATTRIBUTES
*sa
, BOOL au
, BOOL on
, const char
53 /***********************************************************************
54 * SetEvent (KERNEL32.487)
56 BOOL
SetEvent (HANDLE32 h
)
60 /***********************************************************************
61 * ResetEvent (KERNEL32.439)
63 BOOL
ResetEvent (HANDLE32 h
)
67 /***********************************************************************
68 * WaitForSingleObject (KERNEL32.561)
70 DWORD
WaitForSingleObject(HANDLE32 h
, DWORD a
)
74 /***********************************************************************
75 * DuplicateHandle (KERNEL32.78)
77 BOOL
DuplicateHandle(HANDLE32 a
, HANDLE32 b
, HANDLE32 c
, HANDLE32
* d
, DWORD e
, BOOL f
, DWORD g
)
82 /***********************************************************************
83 * GetCurrentProcess (KERNEL32.198)
85 HANDLE32
GetCurrentProcess(void)
90 /***********************************************************************
91 * GetProcessHeap (KERNEL32.259)
93 HANDLE32
GetProcessHeap(void)
95 if (!ProcessHeap
) ProcessHeap
= HeapCreate( 0, 0x10000, 0 );
99 /***********************************************************************
100 * LoadLibraryA (KERNEL32.365)
101 * copied from LoadLibrary
102 * This does not currently support built-in libraries
104 HANDLE32
LoadLibraryA(char *libname
)
107 dprintf_module( stddeb
, "LoadLibrary: (%08x) %s\n", (int)libname
, libname
);
108 handle
= LoadModule( libname
, (LPVOID
)-1 );
109 if (handle
== (HANDLE
) -1)
112 strcpy( buffer
, libname
);
113 strcat( buffer
, ".dll" );
114 handle
= LoadModule( buffer
, (LPVOID
)-1 );
116 /* Obtain module handle and call initialization function */
118 if (handle
>= (HANDLE
)32) PE_InitializeDLLs( GetExePtr(handle
));
123 /***********************************************************************
126 BOOL
FreeLibrary32(HINSTANCE hLibModule
)
128 fprintf(stderr
,"FreeLibrary: empty stub\n");
132 /**********************************************************************
133 * GetProcessAffinityMask
135 BOOL
GetProcessAffinityMask(HANDLE32 hProcess
, LPDWORD lpProcessAffinityMask
,
136 LPDWORD lpSystemAffinityMask
)
138 dprintf_task(stddeb
,"GetProcessAffinityMask(%x,%x,%x)\n",
139 hProcess
,(lpProcessAffinityMask
?*lpProcessAffinityMask
:0),
140 (lpSystemAffinityMask
?*lpSystemAffinityMask
:0));
141 /* It is definitely important for a process to know on what processor
143 if(lpProcessAffinityMask
)
144 *lpProcessAffinityMask
=1;
145 if(lpSystemAffinityMask
)
146 *lpSystemAffinityMask
=1;
150 /**********************************************************************
151 * SetThreadAffinityMask
153 BOOL
SetThreadAffinityMask(HANDLE32 hThread
, DWORD dwThreadAffinityMask
)
155 dprintf_task(stddeb
,"SetThreadAffinityMask(%x,%x)\n",hThread
,
156 dwThreadAffinityMask
);
157 /* FIXME: We let it fail */