diff --git a/reactos/dll/win32/kernel32/kernel32.def b/reactos/dll/win32/kernel32/kernel32.def
index 850f30ed9ab..46c486d225a 100644
--- a/reactos/dll/win32/kernel32/kernel32.def
+++ b/reactos/dll/win32/kernel32/kernel32.def
@@ -109,6 +109,8 @@ CreateDirectoryExW@12
CreateDirectoryW@8
CreateEventA@16
CreateEventW@16
+CreateEventExA@16
+CreateEventExW@16
CreateFiber@12
CreateFiberEx@20
CreateFileA@28
@@ -126,6 +128,8 @@ CreateMailslotW@16
CreateMemoryResourceNotification@4
CreateMutexA@12
CreateMutexW@12
+CreateMutexExA@16
+CreateMutexExW@16
CreateNamedPipeA@32
CreateNamedPipeW@32
CreateNlsSecurityDescriptor@12
@@ -137,6 +141,8 @@ CreateProcessW@40
CreateRemoteThread@28
CreateSemaphoreA@16
CreateSemaphoreW@16
+CreateSemaphoreExA@24
+CreateSemaphoreExW@24
CreateSocketHandle@0
CreateSymbolicLinkA@12
CreateSymbolicLinkW@12
@@ -148,6 +154,8 @@ CreateToolhelp32Snapshot@8
CreateVirtualBuffer@12
CreateWaitableTimerA@12
CreateWaitableTimerW@12
+CreateWaitableTimerExA@16
+CreateWaitableTimerExW@16
DeactivateActCtx@8
DebugActiveProcess@4
DebugActiveProcessStop@4
diff --git a/reactos/dll/win32/kernel32/kernel32.rbuild b/reactos/dll/win32/kernel32/kernel32.rbuild
index 603704fc5ed..e357082216f 100644
--- a/reactos/dll/win32/kernel32/kernel32.rbuild
+++ b/reactos/dll/win32/kernel32/kernel32.rbuild
@@ -8,7 +8,12 @@
0x0502
0x502
+
debugger.c
output.c
diff --git a/reactos/dll/win32/kernel32/synch/event.c b/reactos/dll/win32/kernel32/synch/event.c
index bf0ee42fde7..43c1ca978a7 100644
--- a/reactos/dll/win32/kernel32/synch/event.c
+++ b/reactos/dll/win32/kernel32/synch/event.c
@@ -8,6 +8,10 @@
/* INCLUDES *****************************************************************/
+/* File contains Vista Semantics */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+
#include
#define NDEBUG
@@ -17,10 +21,10 @@
HANDLE
WINAPI
-CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
- IN BOOL bManualReset,
- IN BOOL bInitialState,
- IN LPCSTR lpName OPTIONAL)
+CreateEventExA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
+ IN LPCSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
ANSI_STRING AnsiName;
@@ -48,28 +52,40 @@ CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
}
/* Call the Unicode API */
- return CreateEventW(lpEventAttributes,
- bManualReset,
- bInitialState,
- UnicodeName);
+ return CreateEventExW(lpEventAttributes,
+ UnicodeName,
+ dwFlags,
+ dwDesiredAccess);
+
}
HANDLE
WINAPI
-CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
- IN BOOL bManualReset,
- IN BOOL bInitialState,
- IN LPCWSTR lpName OPTIONAL)
+CreateEventExW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
+ IN LPCWSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES LocalAttributes;
POBJECT_ATTRIBUTES ObjectAttributes;
HANDLE Handle;
UNICODE_STRING ObjectName;
+ BOOLEAN InitialState;
+ EVENT_TYPE EventType;
/* Now check if we got a name */
if (lpName) RtlInitUnicodeString(&ObjectName, lpName);
+ if (dwFlags & ~(CREATE_EVENT_INITIAL_SET | CREATE_EVENT_MANUAL_RESET))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ InitialState = (dwFlags & CREATE_EVENT_INITIAL_SET) != 0;
+ EventType = (dwFlags & CREATE_EVENT_MANUAL_RESET) ? NotificationEvent : SynchronizationEvent;
+
/* Now convert the object attributes */
ObjectAttributes = BasepConvertObjectAttributes(&LocalAttributes,
lpEventAttributes,
@@ -77,11 +93,10 @@ CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
/* Create the event */
Status = NtCreateEvent(&Handle,
- EVENT_ALL_ACCESS,
+ (ACCESS_MASK)dwDesiredAccess,
ObjectAttributes,
- bManualReset ?
- NotificationEvent : SynchronizationEvent,
- (BOOLEAN)bInitialState);
+ EventType,
+ InitialState);
if (NT_SUCCESS(Status))
{
/* Check if the object already existed */
@@ -105,6 +120,49 @@ CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
SetLastErrorByStatus(Status);
return NULL;
}
+
+}
+
+HANDLE
+WINAPI
+CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
+ IN BOOL bManualReset,
+ IN BOOL bInitialState,
+ IN LPCSTR lpName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bManualReset)
+ dwFlags |= CREATE_EVENT_MANUAL_RESET;
+
+ if (bInitialState)
+ dwFlags |= CREATE_EVENT_INITIAL_SET;
+
+ return CreateEventExA(lpEventAttributes,
+ lpName,
+ dwFlags,
+ EVENT_ALL_ACCESS);
+}
+
+HANDLE
+WINAPI
+CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL,
+ IN BOOL bManualReset,
+ IN BOOL bInitialState,
+ IN LPCWSTR lpName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bManualReset)
+ dwFlags |= CREATE_EVENT_MANUAL_RESET;
+
+ if (bInitialState)
+ dwFlags |= CREATE_EVENT_INITIAL_SET;
+
+ return CreateEventExW(lpEventAttributes,
+ lpName,
+ dwFlags,
+ EVENT_ALL_ACCESS);
}
HANDLE
diff --git a/reactos/dll/win32/kernel32/synch/mutex.c b/reactos/dll/win32/kernel32/synch/mutex.c
index aea51aee4b9..a7bd3dbb44d 100644
--- a/reactos/dll/win32/kernel32/synch/mutex.c
+++ b/reactos/dll/win32/kernel32/synch/mutex.c
@@ -8,6 +8,10 @@
/* INCLUDES *****************************************************************/
+/* File contains Vista Semantics */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+
#include
#define NDEBUG
@@ -20,9 +24,10 @@
*/
HANDLE
WINAPI
-CreateMutexA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
- IN BOOL bInitialOwner,
- IN LPCSTR lpName OPTIONAL)
+CreateMutexExA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
+ IN LPCSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
ANSI_STRING AnsiName;
@@ -50,9 +55,10 @@ CreateMutexA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
}
/* Call the Unicode API */
- return CreateMutexW(lpMutexAttributes,
- bInitialOwner,
- UnicodeName);
+ return CreateMutexExW(lpMutexAttributes,
+ UnicodeName,
+ dwFlags,
+ dwDesiredAccess);
}
/*
@@ -60,19 +66,29 @@ CreateMutexA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
*/
HANDLE
WINAPI
-CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
- IN BOOL bInitialOwner,
- IN LPCWSTR lpName OPTIONAL)
+CreateMutexExW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
+ IN LPCWSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES LocalAttributes;
POBJECT_ATTRIBUTES ObjectAttributes;
HANDLE Handle;
UNICODE_STRING ObjectName;
+ BOOLEAN InitialOwner;
/* Now check if we got a name */
if (lpName) RtlInitUnicodeString(&ObjectName, lpName);
+ if (dwFlags & ~(CREATE_MUTEX_INITIAL_OWNER))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ InitialOwner = (dwFlags & CREATE_MUTEX_INITIAL_OWNER) != 0;
+
/* Now convert the object attributes */
ObjectAttributes = BasepConvertObjectAttributes(&LocalAttributes,
lpMutexAttributes,
@@ -80,9 +96,9 @@ CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
/* Create the mutant */
Status = NtCreateMutant(&Handle,
- MUTANT_ALL_ACCESS,
+ (ACCESS_MASK)dwDesiredAccess,
ObjectAttributes,
- (BOOLEAN)bInitialOwner);
+ InitialOwner);
if (NT_SUCCESS(Status))
{
/* Check if the object already existed */
@@ -106,6 +122,47 @@ CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
SetLastErrorByStatus(Status);
return NULL;
}
+
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateMutexA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
+ IN BOOL bInitialOwner,
+ IN LPCSTR lpName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bInitialOwner)
+ dwFlags |= CREATE_MUTEX_INITIAL_OWNER;
+
+ return CreateMutexExA(lpMutexAttributes,
+ lpName,
+ dwFlags,
+ MUTANT_ALL_ACCESS);
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL,
+ IN BOOL bInitialOwner,
+ IN LPCWSTR lpName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bInitialOwner)
+ dwFlags |= CREATE_MUTEX_INITIAL_OWNER;
+
+ return CreateMutexExW(lpMutexAttributes,
+ lpName,
+ dwFlags,
+ MUTANT_ALL_ACCESS);
}
/*
diff --git a/reactos/dll/win32/kernel32/synch/sem.c b/reactos/dll/win32/kernel32/synch/sem.c
index a19bd0f6d16..57b942349da 100644
--- a/reactos/dll/win32/kernel32/synch/sem.c
+++ b/reactos/dll/win32/kernel32/synch/sem.c
@@ -8,6 +8,10 @@
/* INCLUDES *****************************************************************/
+/* File contains Vista Semantics */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+
#include
#define NDEBUG
@@ -20,10 +24,12 @@
*/
HANDLE
WINAPI
-CreateSemaphoreA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
- IN LONG lInitialCount,
- IN LONG lMaximumCount,
- IN LPCSTR lpName OPTIONAL)
+CreateSemaphoreExA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
ANSI_STRING AnsiName;
@@ -51,10 +57,12 @@ CreateSemaphoreA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
}
/* Call the Unicode API */
- return CreateSemaphoreW(lpSemaphoreAttributes,
- lInitialCount,
- lMaximumCount,
- UnicodeName);
+ return CreateSemaphoreExW(lpSemaphoreAttributes,
+ lInitialCount,
+ lMaximumCount,
+ UnicodeName,
+ dwFlags,
+ dwDesiredAccess);
}
/*
@@ -62,10 +70,12 @@ CreateSemaphoreA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
*/
HANDLE
WINAPI
-CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
- IN LONG lInitialCount,
- IN LONG lMaximumCount,
- IN LPCWSTR lpName OPTIONAL)
+CreateSemaphoreExW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCWSTR lpName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES LocalAttributes;
@@ -76,6 +86,12 @@ CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
/* Now check if we got a name */
if (lpName) RtlInitUnicodeString(&ObjectName, lpName);
+ if (dwFlags != 0)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
/* Now convert the object attributes */
ObjectAttributes = BasepConvertObjectAttributes(&LocalAttributes,
lpSemaphoreAttributes,
@@ -83,7 +99,7 @@ CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
/* Create the semaphore */
Status = NtCreateSemaphore(&Handle,
- SEMAPHORE_ALL_ACCESS,
+ (ACCESS_MASK)dwDesiredAccess,
ObjectAttributes,
lInitialCount,
lMaximumCount);
@@ -110,6 +126,44 @@ CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
SetLastErrorByStatus(Status);
return NULL;
}
+
+}
+
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateSemaphoreA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCSTR lpName OPTIONAL)
+{
+ return CreateSemaphoreExA(lpSemaphoreAttributes,
+ lInitialCount,
+ lMaximumCount,
+ lpName,
+ 0,
+ SEMAPHORE_ALL_ACCESS);
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCWSTR lpName OPTIONAL)
+{
+ return CreateSemaphoreExW(lpSemaphoreAttributes,
+ lInitialCount,
+ lMaximumCount,
+ lpName,
+ 0,
+ SEMAPHORE_ALL_ACCESS);
}
/*
diff --git a/reactos/dll/win32/kernel32/synch/timer.c b/reactos/dll/win32/kernel32/synch/timer.c
index d3a27457f5a..831f4fe1ffb 100644
--- a/reactos/dll/win32/kernel32/synch/timer.c
+++ b/reactos/dll/win32/kernel32/synch/timer.c
@@ -8,6 +8,10 @@
/* INCLUDES *****************************************************************/
+/* File contains Vista Semantics */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+
#include
#define NDEBUG
@@ -20,63 +24,10 @@
*/
HANDLE
WINAPI
-CreateWaitableTimerW(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
- IN BOOL bManualReset,
- IN LPCWSTR lpTimerName OPTIONAL)
-{
- NTSTATUS Status;
- OBJECT_ATTRIBUTES LocalAttributes;
- POBJECT_ATTRIBUTES ObjectAttributes;
- HANDLE Handle;
- UNICODE_STRING ObjectName;
-
- /* Now check if we got a name */
- if (lpTimerName) RtlInitUnicodeString(&ObjectName, lpTimerName);
-
- /* Now convert the object attributes */
- ObjectAttributes = BasepConvertObjectAttributes(&LocalAttributes,
- lpTimerAttributes,
- lpTimerName ? &ObjectName : NULL);
-
- /* Create the timer */
- Status = NtCreateTimer(&Handle,
- TIMER_ALL_ACCESS,
- ObjectAttributes,
- bManualReset ?
- NotificationTimer : SynchronizationTimer);
- if (NT_SUCCESS(Status))
- {
- /* Check if the object already existed */
- if (Status == STATUS_OBJECT_NAME_EXISTS)
- {
- /* Set distinguished Win32 error code */
- SetLastError(ERROR_ALREADY_EXISTS);
- }
- else
- {
- /* Otherwise, set success */
- SetLastError(ERROR_SUCCESS);
- }
-
- /* Return the handle */
- return Handle;
- }
- else
- {
- /* Convert the NT Status and fail */
- SetLastErrorByStatus(Status);
- return NULL;
- }
-}
-
-/*
- * @implemented
- */
-HANDLE
-WINAPI
-CreateWaitableTimerA(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
- IN BOOL bManualReset,
- IN LPCSTR lpTimerName OPTIONAL)
+CreateWaitableTimerExA(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
+ IN LPCSTR lpTimerName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
{
NTSTATUS Status;
ANSI_STRING AnsiName;
@@ -104,9 +55,114 @@ CreateWaitableTimerA(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
}
/* Call the Unicode API */
- return CreateWaitableTimerW(lpTimerAttributes,
- bManualReset,
- UnicodeName);
+ return CreateWaitableTimerExW(lpTimerAttributes,
+ UnicodeName,
+ dwFlags,
+ dwDesiredAccess);
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateWaitableTimerExW(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
+ IN LPCWSTR lpTimerName OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwDesiredAccess)
+{
+ NTSTATUS Status;
+ OBJECT_ATTRIBUTES LocalAttributes;
+ POBJECT_ATTRIBUTES ObjectAttributes;
+ HANDLE Handle;
+ UNICODE_STRING ObjectName;
+ TIMER_TYPE TimerType;
+
+ /* Now check if we got a name */
+ if (lpTimerName) RtlInitUnicodeString(&ObjectName, lpTimerName);
+
+ if (dwFlags & ~(CREATE_WAITABLE_TIMER_MANUAL_RESET))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ TimerType = (dwFlags & CREATE_WAITABLE_TIMER_MANUAL_RESET) ? NotificationTimer : SynchronizationTimer;
+
+ /* Now convert the object attributes */
+ ObjectAttributes = BasepConvertObjectAttributes(&LocalAttributes,
+ lpTimerAttributes,
+ lpTimerName ? &ObjectName : NULL);
+
+ /* Create the timer */
+ Status = NtCreateTimer(&Handle,
+ (ACCESS_MASK)dwDesiredAccess,
+ ObjectAttributes,
+ TimerType);
+ if (NT_SUCCESS(Status))
+ {
+ /* Check if the object already existed */
+ if (Status == STATUS_OBJECT_NAME_EXISTS)
+ {
+ /* Set distinguished Win32 error code */
+ SetLastError(ERROR_ALREADY_EXISTS);
+ }
+ else
+ {
+ /* Otherwise, set success */
+ SetLastError(ERROR_SUCCESS);
+ }
+
+ /* Return the handle */
+ return Handle;
+ }
+ else
+ {
+ /* Convert the NT Status and fail */
+ SetLastErrorByStatus(Status);
+ return NULL;
+ }
+
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateWaitableTimerW(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
+ IN BOOL bManualReset,
+ IN LPCWSTR lpTimerName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bManualReset)
+ dwFlags |= CREATE_WAITABLE_TIMER_MANUAL_RESET;
+
+ return CreateWaitableTimerExW(lpTimerAttributes,
+ lpTimerName,
+ dwFlags,
+ TIMER_ALL_ACCESS);
+}
+
+/*
+ * @implemented
+ */
+HANDLE
+WINAPI
+CreateWaitableTimerA(IN LPSECURITY_ATTRIBUTES lpTimerAttributes OPTIONAL,
+ IN BOOL bManualReset,
+ IN LPCSTR lpTimerName OPTIONAL)
+{
+ DWORD dwFlags = 0;
+
+ if (bManualReset)
+ dwFlags |= CREATE_WAITABLE_TIMER_MANUAL_RESET;
+
+ return CreateWaitableTimerExA(lpTimerAttributes,
+ lpTimerName,
+ dwFlags,
+ TIMER_ALL_ACCESS);
}
/*
diff --git a/reactos/dll/win32/kernel32/synch/wait.c b/reactos/dll/win32/kernel32/synch/wait.c
index af61473bcc3..42939517425 100644
--- a/reactos/dll/win32/kernel32/synch/wait.c
+++ b/reactos/dll/win32/kernel32/synch/wait.c
@@ -8,6 +8,10 @@
/* INCLUDES *****************************************************************/
+/* File contains Vista Semantics */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+
#include
#define NDEBUG
diff --git a/reactos/include/psdk/winbase.h b/reactos/include/psdk/winbase.h
index f9287d8f0c6..c01511508fa 100644
--- a/reactos/include/psdk/winbase.h
+++ b/reactos/include/psdk/winbase.h
@@ -535,6 +535,12 @@ extern "C" {
#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x2
#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x4
#endif
+#if (_WIN32_WINNT >= 0x0600)
+#define CREATE_EVENT_MANUAL_RESET 0x1
+#define CREATE_EVENT_INITIAL_SET 0x2
+#define CREATE_MUTEX_INITIAL_OWNER 0x1
+#define CREATE_WAITABLE_TIMER_MANUAL_RESET 0x1
+#endif
#ifndef RC_INVOKED
#ifndef _FILETIME_
@@ -1179,6 +1185,10 @@ BOOL WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0600)
+HANDLE WINAPI CreateEventExA(LPSECURITY_ATTRIBUTES,LPCSTR,DWORD,DWORD);
+HANDLE WINAPI CreateEventExW(LPSECURITY_ATTRIBUTES,LPCWSTR,DWORD,DWORD);
+#endif
LPVOID WINAPI CreateFiber(SIZE_T,LPFIBER_START_ROUTINE,LPVOID);
#if (_WIN32_WINNT >= 0x0400)
LPVOID WINAPI CreateFiberEx(SIZE_T,SIZE_T,DWORD,LPFIBER_START_ROUTINE,LPVOID);
@@ -1205,6 +1215,10 @@ HANDLE WINAPI CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE
#endif
HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0600)
+HANDLE WINAPI CreateMutexExA(LPSECURITY_ATTRIBUTES,LPCSTR,DWORD,DWORD);
+HANDLE WINAPI CreateMutexExW(LPSECURITY_ATTRIBUTES,LPCWSTR,DWORD,DWORD);
+#endif
HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
@@ -1216,6 +1230,10 @@ BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPS
HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0600)
+HANDLE WINAPI CreateSemaphoreExA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR,DWORD,DWORD);
+HANDLE WINAPI CreateSemaphoreExW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR,DWORD,DWORD);
+#endif
DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
#if (_WIN32_WINNT >= 0x0500)
HANDLE WINAPI CreateTimerQueue(void);
@@ -1224,6 +1242,10 @@ BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD
HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD);
HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0600)
+HANDLE WINAPI CreateWaitableTimerExA(LPSECURITY_ATTRIBUTES,LPCSTR,DWORD,DWORD);
+HANDLE WINAPI CreateWaitableTimerExW(LPSECURITY_ATTRIBUTES,LPCWSTR,DWORD,DWORD);
+#endif
#if (_WIN32_WINNT >= 0x0501)
BOOL WINAPI CreateWellKnownSid(WELL_KNOWN_SID_TYPE,PSID,PSID,DWORD*);
BOOL WINAPI DeactivateActCtx(DWORD,ULONG_PTR);