kernel32: Move semaphore functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
93a5451152
commit
591266881c
|
@ -320,8 +320,8 @@
|
|||
@ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr)
|
||||
@ stdcall CreateSemaphoreA(ptr long long str)
|
||||
@ stdcall CreateSemaphoreExA(ptr long long str long long)
|
||||
@ stdcall CreateSemaphoreExW(ptr long long wstr long long)
|
||||
@ stdcall CreateSemaphoreW(ptr long long wstr)
|
||||
@ stdcall -import CreateSemaphoreExW(ptr long long wstr long long)
|
||||
@ stdcall -import CreateSemaphoreW(ptr long long wstr)
|
||||
@ stdcall CreateSocketHandle()
|
||||
@ stdcall CreateSymbolicLinkA(str str long)
|
||||
# @ stub CreateSymbolicLinkTransactedA
|
||||
|
@ -1128,7 +1128,7 @@
|
|||
# @ stub OpenProcessToken
|
||||
@ stdcall OpenProfileUserMapping()
|
||||
@ stdcall OpenSemaphoreA(long long str)
|
||||
@ stdcall OpenSemaphoreW(long long wstr)
|
||||
@ stdcall -import OpenSemaphoreW(long long wstr)
|
||||
@ stdcall OpenThread(long long long)
|
||||
# @ stub OpenThreadToken
|
||||
@ stdcall -i386 OpenVxDHandle(long)
|
||||
|
@ -1258,7 +1258,7 @@
|
|||
@ stdcall ReleaseActCtx(ptr)
|
||||
@ stdcall -import ReleaseMutex(long)
|
||||
@ stdcall ReleaseMutexWhenCallbackReturns(ptr long) ntdll.TpCallbackReleaseMutexOnCompletion
|
||||
@ stdcall ReleaseSemaphore(long long ptr)
|
||||
@ stdcall -import ReleaseSemaphore(long long ptr)
|
||||
@ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) ntdll.TpCallbackReleaseSemaphoreOnCompletion
|
||||
@ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive
|
||||
@ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared
|
||||
|
|
|
@ -452,15 +452,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreA( SECURITY_ATTRIBUTES *sa, LONG
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CreateSemaphoreW (KERNEL32.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max, LPCWSTR name )
|
||||
{
|
||||
return CreateSemaphoreExW( sa, initial, max, name, 0, SEMAPHORE_ALL_ACCESS );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CreateSemaphoreExA (KERNEL32.@)
|
||||
*/
|
||||
|
@ -480,28 +471,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExA( SECURITY_ATTRIBUTES *sa, LON
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CreateSemaphoreExW (KERNEL32.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max,
|
||||
LPCWSTR name, DWORD flags, DWORD access )
|
||||
{
|
||||
HANDLE ret = 0;
|
||||
UNICODE_STRING nameW;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
NTSTATUS status;
|
||||
|
||||
get_create_object_attributes( &attr, &nameW, sa, name );
|
||||
|
||||
status = NtCreateSemaphore( &ret, access, &attr, initial, max );
|
||||
if (status == STATUS_OBJECT_NAME_EXISTS)
|
||||
SetLastError( ERROR_ALREADY_EXISTS );
|
||||
else
|
||||
SetLastError( RtlNtStatusToDosError(status) );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* OpenSemaphoreA (KERNEL32.@)
|
||||
*/
|
||||
|
@ -520,41 +489,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreA( DWORD access, BOOL inherit, LPCS
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* OpenSemaphoreW (KERNEL32.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW( DWORD access, BOOL inherit, LPCWSTR name )
|
||||
{
|
||||
HANDLE ret;
|
||||
UNICODE_STRING nameW;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
NTSTATUS status;
|
||||
|
||||
if (!is_version_nt()) access = SEMAPHORE_ALL_ACCESS;
|
||||
|
||||
if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
|
||||
|
||||
status = NtOpenSemaphore( &ret, access, &attr );
|
||||
if (status != STATUS_SUCCESS)
|
||||
{
|
||||
SetLastError( RtlNtStatusToDosError(status) );
|
||||
return 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* ReleaseSemaphore (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore( HANDLE handle, LONG count, LONG *previous )
|
||||
{
|
||||
NTSTATUS status = NtReleaseSemaphore( handle, count, (PULONG)previous );
|
||||
if (status) SetLastError( RtlNtStatusToDosError(status) );
|
||||
return !status;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Jobs
|
||||
*/
|
||||
|
|
|
@ -214,8 +214,8 @@
|
|||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
||||
@ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) kernel32.CreateRemoteThreadEx
|
||||
@ stdcall CreateRestrictedToken(long long long ptr long ptr long ptr ptr)
|
||||
@ stdcall CreateSemaphoreExW(ptr long long wstr long long) kernel32.CreateSemaphoreExW
|
||||
@ stdcall CreateSemaphoreW(ptr long long wstr) kernel32.CreateSemaphoreW
|
||||
@ stdcall CreateSemaphoreExW(ptr long long wstr long long)
|
||||
@ stdcall CreateSemaphoreW(ptr long long wstr)
|
||||
# @ stub CreateStateAtom
|
||||
# @ stub CreateStateChangeNotification
|
||||
# @ stub CreateStateContainer
|
||||
|
@ -994,7 +994,7 @@
|
|||
@ stdcall OpenProcess(long long long) kernel32.OpenProcess
|
||||
@ stdcall OpenProcessToken(long long ptr)
|
||||
@ stub OpenRegKey
|
||||
@ stdcall OpenSemaphoreW(long long wstr) kernel32.OpenSemaphoreW
|
||||
@ stdcall OpenSemaphoreW(long long wstr)
|
||||
# @ stub OpenState
|
||||
# @ stub OpenStateAtom
|
||||
# @ stub OpenStateExplicit
|
||||
|
@ -1328,7 +1328,7 @@
|
|||
@ stdcall ReleaseMutexWhenCallbackReturns(ptr long) kernel32.ReleaseMutexWhenCallbackReturns
|
||||
@ stdcall ReleaseSRWLockExclusive(ptr) kernel32.ReleaseSRWLockExclusive
|
||||
@ stdcall ReleaseSRWLockShared(ptr) kernel32.ReleaseSRWLockShared
|
||||
@ stdcall ReleaseSemaphore(long long ptr) kernel32.ReleaseSemaphore
|
||||
@ stdcall ReleaseSemaphore(long long ptr)
|
||||
@ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) kernel32.ReleaseSemaphoreWhenCallbackReturns
|
||||
# @ stub ReleaseStateLock
|
||||
@ stdcall RemapPredefinedHandleInternal(long long)
|
||||
|
|
|
@ -363,3 +363,73 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex( HANDLE handle )
|
|||
{
|
||||
return set_ntstatus( NtReleaseMutant( handle, NULL ));
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* Semaphores
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CreateSemaphoreW (kernelbase.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW( SECURITY_ATTRIBUTES *sa, LONG initial,
|
||||
LONG max, LPCWSTR name )
|
||||
{
|
||||
return CreateSemaphoreExW( sa, initial, max, name, 0, SEMAPHORE_ALL_ACCESS );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CreateSemaphoreExW (kernelbase.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max,
|
||||
LPCWSTR name, DWORD flags, DWORD access )
|
||||
{
|
||||
HANDLE ret = 0;
|
||||
UNICODE_STRING nameW;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
NTSTATUS status;
|
||||
|
||||
get_create_object_attributes( &attr, &nameW, sa, name );
|
||||
|
||||
status = NtCreateSemaphore( &ret, access, &attr, initial, max );
|
||||
if (status == STATUS_OBJECT_NAME_EXISTS)
|
||||
SetLastError( ERROR_ALREADY_EXISTS );
|
||||
else
|
||||
SetLastError( RtlNtStatusToDosError(status) );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* OpenSemaphoreW (kernelbase.@)
|
||||
*/
|
||||
HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW( DWORD access, BOOL inherit, LPCWSTR name )
|
||||
{
|
||||
HANDLE ret;
|
||||
UNICODE_STRING nameW;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
NTSTATUS status;
|
||||
|
||||
if (!is_version_nt()) access = SEMAPHORE_ALL_ACCESS;
|
||||
|
||||
if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
|
||||
|
||||
status = NtOpenSemaphore( &ret, access, &attr );
|
||||
if (status != STATUS_SUCCESS)
|
||||
{
|
||||
SetLastError( RtlNtStatusToDosError(status) );
|
||||
return 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* ReleaseSemaphore (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore( HANDLE handle, LONG count, LONG *previous )
|
||||
{
|
||||
return set_ntstatus( NtReleaseSemaphore( handle, count, (PULONG)previous ));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue