2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis
17 /***********************************************************************
18 * CreateMutexA (KERNEL32.52)
20 HANDLE32 CreateMutexA (SECURITY_ATTRIBUTES *sa, BOOL on, const char *a)
25 /***********************************************************************
26 * ReleaseMutex (KERNEL32.435)
28 BOOL ReleaseMutex (HANDLE32 h)
33 /***********************************************************************
34 * CreateEventA (KERNEL32.43)
36 HANDLE32 CreateEventA (SECURITY_ATTRIBUTES *sa, BOOL au, BOOL on, const char
41 /***********************************************************************
42 * SetEvent (KERNEL32.487)
44 BOOL SetEvent (HANDLE32 h)
48 /***********************************************************************
49 * ResetEvent (KERNEL32.439)
51 BOOL ResetEvent (HANDLE32 h)
55 /***********************************************************************
56 * WaitForSingleObject (KERNEL32.561)
58 DWORD WaitForSingleObject(HANDLE32 h, DWORD a)
62 /***********************************************************************
63 * DuplicateHandle (KERNEL32.78)
65 BOOL DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DWORD e, BOOL f, DWORD g)
72 /***********************************************************************
73 * LoadLibraryA (KERNEL32.365)
74 * copied from LoadLibrary
75 * This does not currently support built-in libraries
77 HINSTANCE32 LoadLibrary32A(LPCSTR libname)
80 dprintf_module( stddeb, "LoadLibrary: (%08x) %s\n", (int)libname, libname);
81 handle = LoadModule( libname, (LPVOID)-1 );
82 if (handle == (HINSTANCE32) -1)
85 strcpy( buffer, libname );
86 strcat( buffer, ".dll" );
87 handle = LoadModule( buffer, (LPVOID)-1 );
89 /* Obtain module handle and call initialization function */
91 if (handle >= (HINSTANCE32)32) PE_InitializeDLLs( GetExePtr(handle));
96 /***********************************************************************
97 * LoadLibrary32W (KERNEL32.368)
99 HINSTANCE32 LoadLibrary32W(LPCWSTR libnameW)
101 LPSTR libnameA = HEAP_strdupWtoA( GetProcessHeap(), 0, libnameW );
102 HINSTANCE32 ret = LoadLibrary32A( libnameA );
103 HeapFree( GetProcessHeap(), 0, libnameA );
107 /***********************************************************************
110 BOOL FreeLibrary32(HINSTANCE32 hLibModule)
112 fprintf(stderr,"FreeLibrary: empty stub\n");
116 /**********************************************************************
117 * GetProcessAffinityMask
119 BOOL GetProcessAffinityMask(HANDLE32 hProcess, LPDWORD lpProcessAffinityMask,
120 LPDWORD lpSystemAffinityMask)
122 dprintf_task(stddeb,"GetProcessAffinityMask(%x,%lx,%lx)\n",
123 hProcess,(lpProcessAffinityMask?*lpProcessAffinityMask:0),
124 (lpSystemAffinityMask?*lpSystemAffinityMask:0));
125 /* It is definitely important for a process to know on what processor
127 if(lpProcessAffinityMask)
128 *lpProcessAffinityMask=1;
129 if(lpSystemAffinityMask)
130 *lpSystemAffinityMask=1;
134 /**********************************************************************
135 * SetThreadAffinityMask
137 BOOL SetThreadAffinityMask(HANDLE32 hThread, DWORD dwThreadAffinityMask)
139 dprintf_task(stddeb,"SetThreadAffinityMask(%x,%lx)\n",hThread,
140 dwThreadAffinityMask);
141 /* FIXME: We let it fail */