ReactOS 0.4.16-dev-1457-g02ea0aa
sync.c File Reference
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include "ntstatus.h"
#include "windef.h"
#include "winbase.h"
#include "wincon.h"
#include "winerror.h"
#include "winnls.h"
#include "winternl.h"
#include "winioctl.h"
#include "ddk/wdm.h"
#include "kernelbase.h"
#include "wine/asm.h"
#include "wine/exception.h"
#include "wine/debug.h"
Include dependency graph for sync.c:

Go to the source code of this file.

Macros

#define WIN32_NO_STATUS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (sync)
 
static BOOL is_version_nt (void)
 
static LARGE_INTEGERget_nt_timeout (LARGE_INTEGER *time, DWORD timeout)
 
NTSTATUS WINAPI BaseGetNamedObjectDirectory (HANDLE *dir)
 
static void get_create_object_attributes (OBJECT_ATTRIBUTES *attr, UNICODE_STRING *nameW, SECURITY_ATTRIBUTES *sa, const WCHAR *name)
 
static BOOL get_open_object_attributes (OBJECT_ATTRIBUTES *attr, UNICODE_STRING *nameW, BOOL inherit, const WCHAR *name)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimes (FILETIME *idle, FILETIME *kernel, FILETIME *user)
 
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount (void)
 
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64 (void)
 
void WINAPI DECLSPEC_HOTPATCH QueryInterruptTime (ULONGLONG *time)
 
void WINAPI DECLSPEC_HOTPATCH QueryInterruptTimePrecise (ULONGLONG *time)
 
void WINAPI DECLSPEC_HOTPATCH QueryUnbiasedInterruptTimePrecise (ULONGLONG *time)
 
BOOL WINAPI QueryIdleProcessorCycleTime (ULONG *size, ULONG64 *times)
 
BOOL WINAPI QueryIdleProcessorCycleTimeEx (USHORT group_id, ULONG *size, ULONG64 *times)
 
static HANDLE normalize_std_handle (HANDLE handle)
 
HANDLE WINAPI DECLSPEC_HOTPATCH RegisterWaitForSingleObjectEx (HANDLE handle, WAITORTIMERCALLBACK callback, PVOID context, ULONG timeout, ULONG flags)
 
DWORD WINAPI DECLSPEC_HOTPATCH SignalObjectAndWait (HANDLE signal, HANDLE wait, DWORD timeout, BOOL alertable)
 
void WINAPI DECLSPEC_HOTPATCH Sleep (DWORD timeout)
 
DWORD WINAPI DECLSPEC_HOTPATCH SleepEx (DWORD timeout, BOOL alertable)
 
BOOL WINAPI DECLSPEC_HOTPATCH UnregisterWaitEx (HANDLE handle, HANDLE event)
 
DWORD WINAPI DECLSPEC_HOTPATCH WaitForSingleObject (HANDLE handle, DWORD timeout)
 
DWORD WINAPI DECLSPEC_HOTPATCH WaitForSingleObjectEx (HANDLE handle, DWORD timeout, BOOL alertable)
 
DWORD WINAPI DECLSPEC_HOTPATCH WaitForMultipleObjects (DWORD count, const HANDLE *handles, BOOL wait_all, DWORD timeout)
 
DWORD WINAPI DECLSPEC_HOTPATCH WaitForMultipleObjectsEx (DWORD count, const HANDLE *handles, BOOL wait_all, DWORD timeout, BOOL alertable)
 
BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEvent (DEBUG_EVENT *event, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEventEx (DEBUG_EVENT *event, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH WaitOnAddress (volatile void *addr, void *cmp, SIZE_T size, DWORD timeout)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA (SECURITY_ATTRIBUTES *sa, BOOL manual_reset, BOOL initial_state, LPCSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW (SECURITY_ATTRIBUTES *sa, BOOL manual_reset, BOOL initial_state, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExA (SECURITY_ATTRIBUTES *sa, LPCSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExW (SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventA (DWORD access, BOOL inherit, LPCSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW (DWORD access, BOOL inherit, LPCWSTR name)
 
BOOL WINAPI DECLSPEC_HOTPATCH PulseEvent (HANDLE handle)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent (HANDLE handle)
 
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent (HANDLE handle)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexA (SECURITY_ATTRIBUTES *sa, BOOL owner, LPCSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW (SECURITY_ATTRIBUTES *sa, BOOL owner, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExA (SECURITY_ATTRIBUTES *sa, LPCSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExW (SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenMutexW (DWORD access, BOOL inherit, LPCWSTR name)
 
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex (HANDLE handle)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW (SECURITY_ATTRIBUTES *sa, LONG initial, LONG max, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW (SECURITY_ATTRIBUTES *sa, LONG initial, LONG max, LPCWSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW (DWORD access, BOOL inherit, LPCWSTR name)
 
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore (HANDLE handle, LONG count, LONG *previous)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerW (SECURITY_ATTRIBUTES *sa, BOOL manual, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerExW (SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenWaitableTimerW (DWORD access, BOOL inherit, LPCWSTR name)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimer (HANDLE handle, const LARGE_INTEGER *when, LONG period, PTIMERAPCROUTINE callback, LPVOID arg, BOOL resume)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimerEx (HANDLE handle, const LARGE_INTEGER *when, LONG period, PTIMERAPCROUTINE callback, LPVOID arg, REASON_CONTEXT *context, ULONG tolerabledelay)
 
BOOL WINAPI DECLSPEC_HOTPATCH CancelWaitableTimer (HANDLE handle)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateTimerQueue (void)
 
BOOL WINAPI DECLSPEC_HOTPATCH CreateTimerQueueTimer (PHANDLE timer, HANDLE queue, WAITORTIMERCALLBACK callback, PVOID arg, DWORD when, DWORD period, ULONG flags)
 
BOOL WINAPI DECLSPEC_HOTPATCH ChangeTimerQueueTimer (HANDLE queue, HANDLE timer, ULONG when, ULONG period)
 
BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueEx (HANDLE queue, HANDLE event)
 
BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueTimer (HANDLE queue, HANDLE timer, HANDLE event)
 
BOOL WINAPI DECLSPEC_HOTPATCH InitializeCriticalSectionAndSpinCount (CRITICAL_SECTION *crit, DWORD count)
 
BOOL WINAPI DECLSPEC_HOTPATCH InitializeCriticalSectionEx (CRITICAL_SECTION *crit, DWORD spincount, DWORD flags)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingW (HANDLE file, LPSECURITY_ATTRIBUTES sa, DWORD protect, DWORD size_high, DWORD size_low, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingFromApp (HANDLE file, LPSECURITY_ATTRIBUTES sa, ULONG protect, ULONG64 size, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingW (DWORD access, BOOL inherit, LPCWSTR name)
 
HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingFromApp (ULONG access, BOOL inherit, LPCWSTR name)
 
BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableCS (CONDITION_VARIABLE *variable, CRITICAL_SECTION *crit, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableSRW (RTL_CONDITION_VARIABLE *variable, RTL_SRWLOCK *lock, DWORD timeout, ULONG flags)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateIoCompletionPort (HANDLE handle, HANDLE port, ULONG_PTR key, DWORD threads)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatus (HANDLE port, LPDWORD count, PULONG_PTR key, LPOVERLAPPED *overlapped, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatusEx (HANDLE port, OVERLAPPED_ENTRY *entries, ULONG count, ULONG *written, DWORD timeout, BOOL alertable)
 
BOOL WINAPI DECLSPEC_HOTPATCH PostQueuedCompletionStatus (HANDLE port, DWORD count, ULONG_PTR key, LPOVERLAPPED overlapped)
 
BOOL WINAPI DECLSPEC_HOTPATCH CallNamedPipeW (LPCWSTR name, LPVOID input, DWORD in_size, LPVOID output, DWORD out_size, LPDWORD read_size, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH ConnectNamedPipe (HANDLE pipe, LPOVERLAPPED overlapped)
 
HANDLE WINAPI DECLSPEC_HOTPATCH CreateNamedPipeW (LPCWSTR name, DWORD open_mode, DWORD pipe_mode, DWORD instances, DWORD out_buff, DWORD in_buff, DWORD timeout, LPSECURITY_ATTRIBUTES sa)
 
BOOL WINAPI DECLSPEC_HOTPATCH CreatePipe (HANDLE *read_pipe, HANDLE *write_pipe, SECURITY_ATTRIBUTES *sa, DWORD size)
 
BOOL WINAPI DECLSPEC_HOTPATCH DisconnectNamedPipe (HANDLE pipe)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetNamedPipeHandleStateW (HANDLE pipe, DWORD *state, DWORD *instances, DWORD *max_count, DWORD *timeout, WCHAR *user, DWORD size)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetNamedPipeInfo (HANDLE pipe, LPDWORD flags, LPDWORD out_size, LPDWORD in_size, LPDWORD instances)
 
BOOL WINAPI DECLSPEC_HOTPATCH PeekNamedPipe (HANDLE pipe, LPVOID out_buffer, DWORD size, LPDWORD read_size, LPDWORD avail, LPDWORD message)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetNamedPipeHandleState (HANDLE pipe, LPDWORD mode, LPDWORD count, LPDWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH TransactNamedPipe (HANDLE handle, LPVOID write_buf, DWORD write_size, LPVOID read_buf, DWORD read_size, LPDWORD bytes_read, LPOVERLAPPED overlapped)
 
BOOL WINAPI DECLSPEC_HOTPATCH WaitNamedPipeW (LPCWSTR name, DWORD timeout)
 
BOOL WINAPI DECLSPEC_HOTPATCH InitOnceBeginInitialize (INIT_ONCE *once, DWORD flags, BOOL *pending, void **context)
 
BOOL WINAPI DECLSPEC_HOTPATCH InitOnceComplete (INIT_ONCE *once, DWORD flags, void *context)
 
BOOL WINAPI DECLSPEC_HOTPATCH InitOnceExecuteOnce (INIT_ONCE *once, PINIT_ONCE_FN func, void *param, void **context)
 

Variables

static const struct _KUSER_SHARED_DATA * user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000
 

Macro Definition Documentation

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 26 of file sync.c.

Function Documentation

◆ BaseGetNamedObjectDirectory()

NTSTATUS WINAPI BaseGetNamedObjectDirectory ( HANDLE dir)

Definition at line 63 of file sync.c.

64{
65 static HANDLE handle;
66 WCHAR buffer[64];
70
71 if (!handle)
72 {
73 HANDLE dir;
74
75 swprintf( buffer, ARRAY_SIZE(buffer), L"\\Sessions\\%u\\BaseNamedObjects",
81 {
82 /* someone beat us here... */
84 }
85 }
86 *dir = handle;
87 return status;
88}
unsigned int dir
Definition: maze.c:112
LONG NTSTATUS
Definition: precomp.h:26
#define ARRAY_SIZE(A)
Definition: main.h:20
#define NULL
Definition: types.h:112
#define CloseHandle
Definition: compat.h:739
PPEB Peb
Definition: dllmain.c:27
#define swprintf
Definition: precomp.h:40
#define L(x)
Definition: resources.c:13
GLuint buffer
Definition: glext.h:5915
#define InterlockedCompareExchangePointer
Definition: interlocked.h:144
#define NtCurrentTeb
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define DIRECTORY_CREATE_OBJECT
Definition: nt_native.h:1256
#define DIRECTORY_TRAVERSE
Definition: nt_native.h:1255
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSTATUS NTAPI NtOpenDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: obdir.c:393
const WCHAR * str
#define STATUS_SUCCESS
Definition: shellext.h:65
ULONG SessionId
Definition: btrfs_drv.h:1919
Definition: cookie.c:202
Definition: ps.c:97
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by get_create_object_attributes(), and get_open_object_attributes().

◆ CallNamedPipeW()

BOOL WINAPI DECLSPEC_HOTPATCH CallNamedPipeW ( LPCWSTR  name,
LPVOID  input,
DWORD  in_size,
LPVOID  output,
DWORD  out_size,
LPDWORD  read_size,
DWORD  timeout 
)

Definition at line 1249 of file sync.c.

1252{
1253 HANDLE pipe;
1254 BOOL ret;
1255 DWORD mode;
1256
1257 TRACE( "%s %p %ld %p %ld %p %ld\n", debugstr_w(name),
1258 input, in_size, output, out_size, read_size, timeout );
1259
1261 if (pipe == INVALID_HANDLE_VALUE)
1262 {
1263 if (!WaitNamedPipeW( name, timeout )) return FALSE;
1265 if (pipe == INVALID_HANDLE_VALUE) return FALSE;
1266 }
1267
1270 if (ret) ret = TransactNamedPipe( pipe, input, in_size, output, out_size, read_size, NULL );
1271 CloseHandle( pipe );
1272 return ret;
1273}
#define FALSE
Definition: types.h:117
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
BOOL WINAPI DECLSPEC_HOTPATCH TransactNamedPipe(HANDLE handle, LPVOID write_buf, DWORD write_size, LPVOID read_buf, DWORD read_size, LPDWORD bytes_read, LPOVERLAPPED overlapped)
Definition: sync.c:1574
BOOL WINAPI DECLSPEC_HOTPATCH WaitNamedPipeW(LPCWSTR name, DWORD timeout)
Definition: sync.c:1613
BOOL WINAPI DECLSPEC_HOTPATCH SetNamedPipeHandleState(HANDLE pipe, LPDWORD mode, LPDWORD count, LPDWORD timeout)
Definition: sync.c:1546
return ret
Definition: mutex.c:146
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum mode
Definition: glext.h:6217
GLenum GLenum GLenum input
Definition: glext.h:9031
#define debugstr_w
Definition: kernel32.h:32
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
Definition: file.c:100
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG in_size
Definition: file.c:100
#define GENERIC_WRITE
Definition: nt_native.h:90
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:39
Definition: dhcpd.h:245
#define PIPE_READMODE_MESSAGE
Definition: winbase.h:178

◆ CancelWaitableTimer()

BOOL WINAPI DECLSPEC_HOTPATCH CancelWaitableTimer ( HANDLE  handle)

Definition at line 896 of file sync.c.

897{
899}
static __inline BOOL set_ntstatus(NTSTATUS status)
Definition: security.c:227
NTSTATUS NTAPI NtCancelTimer(IN HANDLE TimerHandle, OUT PBOOLEAN CurrentState OPTIONAL)
Definition: timer.c:252

◆ ChangeTimerQueueTimer()

BOOL WINAPI DECLSPEC_HOTPATCH ChangeTimerQueueTimer ( HANDLE  queue,
HANDLE  timer,
ULONG  when,
ULONG  period 
)

Definition at line 933 of file sync.c.

935{
936 return set_ntstatus( RtlUpdateTimer( queue, timer, when, period ));
937}
Definition: _queue.h:67
NTSYSAPI NTSTATUS NTAPI RtlUpdateTimer(_In_ HANDLE TimerQueue, _In_ HANDLE Timer, _In_ ULONG DueTime, _In_ ULONG Period)

Referenced by test_timer_queue(), timer_queue_cb3(), and timer_queue_cb4().

◆ ConnectNamedPipe()

BOOL WINAPI DECLSPEC_HOTPATCH ConnectNamedPipe ( HANDLE  pipe,
LPOVERLAPPED  overlapped 
)

Definition at line 1279 of file sync.c.

1280{
1282 IO_STATUS_BLOCK status_block;
1283 LPVOID cvalue = NULL;
1284
1285 TRACE( "(%p,%p)\n", pipe, overlapped );
1286
1287 if (overlapped)
1288 {
1289 overlapped->Internal = STATUS_PENDING;
1290 overlapped->InternalHigh = 0;
1291 if (((ULONG_PTR)overlapped->hEvent & 1) == 0) cvalue = overlapped;
1292 }
1293
1294 status = NtFsControlFile( pipe, overlapped ? overlapped->hEvent : NULL, NULL, cvalue,
1295 overlapped ? (IO_STATUS_BLOCK *)overlapped : &status_block,
1296 FSCTL_PIPE_LISTEN, NULL, 0, NULL, 0 );
1297 if (status == STATUS_PENDING && !overlapped)
1298 {
1300 status = status_block.Status;
1301 }
1302 return set_ntstatus( status );
1303}
#define STATUS_PENDING
Definition: d3dkmdt.h:43
DWORD WINAPI DECLSPEC_HOTPATCH WaitForSingleObject(HANDLE handle, DWORD timeout)
Definition: sync.c:364
#define INFINITE
Definition: serial.h:102
#define FSCTL_PIPE_LISTEN
Definition: pipe.c:63
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED * overlapped
Definition: sock.c:81
uint32_t ULONG_PTR
Definition: typedefs.h:65

◆ CreateEventA()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA ( SECURITY_ATTRIBUTES sa,
BOOL  manual_reset,
BOOL  initial_state,
LPCSTR  name 
)

Definition at line 510 of file sync.c.

512{
513 DWORD flags = 0;
514
515 if (manual_reset) flags |= CREATE_EVENT_MANUAL_RESET;
516 if (initial_state) flags |= CREATE_EVENT_INITIAL_SET;
518}
static struct sockaddr_in sa
Definition: adnsresfilter.c:69
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExA(SECURITY_ATTRIBUTES *sa, LPCSTR name, DWORD flags, DWORD access)
Definition: sync.c:538
GLbitfield flags
Definition: glext.h:7161
#define EVENT_ALL_ACCESS
Definition: isotest.c:82

Referenced by test_apc_deadlock(), and test_event().

◆ CreateEventExA()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExA ( SECURITY_ATTRIBUTES sa,
LPCSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 538 of file sync.c.

540{
542
543 if (!name) return CreateEventExW( sa, NULL, flags, access );
544
546 {
548 return 0;
549 }
550 return CreateEventExW( sa, buffer, flags, access );
551}
#define CP_ACP
Definition: compat.h:109
#define SetLastError(x)
Definition: compat.h:752
#define MAX_PATH
Definition: compat.h:34
#define MultiByteToWideChar
Definition: compat.h:110
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExW(SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
Definition: sync.c:557
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
#define ERROR_FILENAME_EXCED_RANGE
Definition: winerror.h:263

Referenced by CreateEventA().

◆ CreateEventExW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExW ( SECURITY_ATTRIBUTES sa,
LPCWSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 557 of file sync.c.

559{
560 HANDLE ret = 0;
564
565 /* one buggy program needs this
566 * ("Van Dale Groot woordenboek der Nederlandse taal")
567 */
568 __TRY
569 {
571 }
573 {
575 return 0;
576 }
578
580 (flags & CREATE_EVENT_MANUAL_RESET) ? NotificationEvent : SynchronizationEvent,
581 (flags & CREATE_EVENT_INITIAL_SET) != 0 );
584 else
586 return ret;
587}
static const WCHAR nameW[]
Definition: main.c:49
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define __TRY
Definition: compat.h:80
#define __ENDTRY
Definition: compat.h:82
#define __EXCEPT_PAGE_FAULT
Definition: compat.h:81
static void get_create_object_attributes(OBJECT_ATTRIBUTES *attr, UNICODE_STRING *nameW, SECURITY_ATTRIBUTES *sa, const WCHAR *name)
Definition: sync.c:90
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80
@ NotificationEvent
@ SynchronizationEvent
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
Definition: event.c:96
#define STATUS_OBJECT_NAME_EXISTS
Definition: ntstatus.h:114

Referenced by CreateEventExA(), and CreateEventW().

◆ CreateEventW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW ( SECURITY_ATTRIBUTES sa,
BOOL  manual_reset,
BOOL  initial_state,
LPCWSTR  name 
)

Definition at line 524 of file sync.c.

526{
527 DWORD flags = 0;
528
529 if (manual_reset) flags |= CREATE_EVENT_MANUAL_RESET;
530 if (initial_state) flags |= CREATE_EVENT_INITIAL_SET;
532}

Referenced by test_signalandwait(), test_timer_queue(), test_WaitForMultipleObjects(), and test_WaitForSingleObject().

◆ CreateFileMappingFromApp()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingFromApp ( HANDLE  file,
LPSECURITY_ATTRIBUTES  sa,
ULONG  protect,
ULONG64  size,
LPCWSTR  name 
)

Definition at line 1057 of file sync.c.

1059{
1060 return CreateFileMappingW( file, sa, protect, size << 32, size, name );
1061}
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:744
GLsizeiptr size
Definition: glext.h:5919
Definition: fci.c:127

◆ CreateFileMappingW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingW ( HANDLE  file,
LPSECURITY_ATTRIBUTES  sa,
DWORD  protect,
DWORD  size_high,
DWORD  size_low,
LPCWSTR  name 
)

Definition at line 990 of file sync.c.

992{
993 static const int sec_flags = (SEC_FILE | SEC_IMAGE | SEC_RESERVE | SEC_COMMIT |
995 HANDLE ret;
997 DWORD access, sec_type;
1001
1002 sec_type = protect & sec_flags;
1003 protect &= ~sec_flags;
1004 if (!sec_type) sec_type = SEC_COMMIT;
1005
1006 /* Win9x compatibility */
1007 if (!protect && !is_version_nt()) protect = PAGE_READONLY;
1008
1009 switch(protect)
1010 {
1011 case PAGE_READONLY:
1012 case PAGE_WRITECOPY:
1014 break;
1015 case PAGE_READWRITE:
1017 break;
1018 case PAGE_EXECUTE_READ:
1021 break;
1024 break;
1025 default:
1027 return 0;
1028 }
1029
1030 size.u.LowPart = size_low;
1031 size.u.HighPart = size_high;
1032
1034 {
1035 file = 0;
1036 if (!size.QuadPart)
1037 {
1039 return 0;
1040 }
1041 }
1042
1044
1045 status = NtCreateSection( &ret, access, &attr, &size, protect, sec_type, file );
1048 else
1050 return ret;
1051}
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
Definition: section.c:3076
#define PAGE_READONLY
Definition: compat.h:138
#define SECTION_MAP_READ
Definition: compat.h:139
static BOOL is_version_nt(void)
Definition: sync.c:46
#define SEC_NOCACHE
Definition: mmtypes.h:101
#define SEC_COMMIT
Definition: mmtypes.h:100
#define SEC_IMAGE
Definition: mmtypes.h:97
#define SEC_FILE
Definition: mmtypes.h:96
#define SEC_LARGE_PAGES
Definition: mmtypes.h:103
#define SEC_WRITECOMBINE
Definition: mmtypes.h:102
#define SECTION_MAP_EXECUTE
Definition: nt_native.h:1290
#define PAGE_WRITECOPY
Definition: nt_native.h:1305
#define SECTION_MAP_WRITE
Definition: nt_native.h:1288
#define PAGE_READWRITE
Definition: nt_native.h:1304
#define PAGE_EXECUTE_READ
Definition: nt_native.h:1307
#define SECTION_QUERY
Definition: nt_native.h:1287
#define SEC_RESERVE
Definition: nt_native.h:1323
#define PAGE_EXECUTE_WRITECOPY
Definition: nt_native.h:1309
#define PAGE_EXECUTE_READWRITE
Definition: nt_native.h:1308
#define STANDARD_RIGHTS_REQUIRED
Definition: nt_native.h:63

◆ CreateIoCompletionPort()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateIoCompletionPort ( HANDLE  handle,
HANDLE  port,
ULONG_PTR  key,
DWORD  threads 
)

Definition at line 1143 of file sync.c.

1145{
1148 HANDLE ret = port;
1149
1150 TRACE( "(%p, %p, %08Ix, %08lx)\n", handle, port, key, threads );
1151
1152 if (!port)
1153 {
1155 return 0;
1156 }
1157 else if (handle == INVALID_HANDLE_VALUE)
1158 {
1160 return 0;
1161 }
1162
1164 {
1165 info.CompletionPort = ret;
1166 info.CompletionKey = key;
1168 {
1169 if (!port) CloseHandle( ret );
1170 return 0;
1171 }
1172 }
1173 return ret;
1174}
USHORT port
Definition: uri.c:228
@ FileCompletionInformation
Definition: from_kernel.h:91
NTSTATUS NTAPI NtCreateIoCompletion(OUT PHANDLE IoCompletionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG NumberOfConcurrentThreads)
Definition: iocomp.c:253
static HANDLE ULONG_PTR DWORD threads
Definition: process.c:81
#define IO_COMPLETION_ALL_ACCESS
Definition: file.c:72
static PIO_STATUS_BLOCK iosb
Definition: file.c:98
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
Definition: iofunc.c:3096
Definition: copy.c:22

◆ CreateMutexA()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexA ( SECURITY_ATTRIBUTES sa,
BOOL  owner,
LPCSTR  name 
)

Definition at line 660 of file sync.c.

661{
662 return CreateMutexExA( sa, name, owner ? CREATE_MUTEX_INITIAL_OWNER : 0, MUTEX_ALL_ACCESS );
663}
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExA(SECURITY_ATTRIBUTES *sa, LPCSTR name, DWORD flags, DWORD access)
Definition: sync.c:678
#define MUTEX_ALL_ACCESS
Definition: winbase.h:166

Referenced by test_mutex().

◆ CreateMutexExA()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExA ( SECURITY_ATTRIBUTES sa,
LPCSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 678 of file sync.c.

680{
681 ANSI_STRING nameA;
683
684 if (!name) return CreateMutexExW( sa, NULL, flags, access );
685
686 RtlInitAnsiString( &nameA, name );
687 status = RtlAnsiStringToUnicodeString( &NtCurrentTeb()->StaticUnicodeString, &nameA, FALSE );
688 if (status != STATUS_SUCCESS)
689 {
691 return 0;
692 }
693 return CreateMutexExW( sa, NtCurrentTeb()->StaticUnicodeString.Buffer, flags, access );
694}
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExW(SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
Definition: sync.c:700
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)

Referenced by CreateMutexA().

◆ CreateMutexExW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExW ( SECURITY_ATTRIBUTES sa,
LPCWSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 700 of file sync.c.

702{
703 HANDLE ret = 0;
707
709
710 status = NtCreateMutant( &ret, access, &attr, (flags & CREATE_MUTEX_INITIAL_OWNER) != 0 );
713 else
715 return ret;
716}
NTSTATUS NTAPI NtCreateMutant(OUT PHANDLE MutantHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN BOOLEAN InitialOwner)
Definition: mutant.c:79

Referenced by CreateMutexExA(), CreateMutexW(), and OutputDebugStringA().

◆ CreateMutexW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW ( SECURITY_ATTRIBUTES sa,
BOOL  owner,
LPCWSTR  name 
)

Definition at line 669 of file sync.c.

670{
671 return CreateMutexExW( sa, name, owner ? CREATE_MUTEX_INITIAL_OWNER : 0, MUTEX_ALL_ACCESS );
672}

◆ CreateNamedPipeW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateNamedPipeW ( LPCWSTR  name,
DWORD  open_mode,
DWORD  pipe_mode,
DWORD  instances,
DWORD  out_buff,
DWORD  in_buff,
DWORD  timeout,
LPSECURITY_ATTRIBUTES  sa 
)

Definition at line 1308 of file sync.c.

1311{
1312 HANDLE handle;
1313 UNICODE_STRING nt_name;
1316 BOOLEAN pipe_type, read_mode, non_block;
1320
1321 TRACE( "(%s, %#08lx, %#08lx, %ld, %ld, %ld, %ld, %p)\n", debugstr_w(name),
1322 open_mode, pipe_mode, instances, out_buff, in_buff, timeout, sa );
1323
1324 if (!RtlDosPathNameToNtPathName_U( name, &nt_name, NULL, NULL ))
1325 {
1327 return INVALID_HANDLE_VALUE;
1328 }
1329 if (nt_name.Length >= MAX_PATH * sizeof(WCHAR) )
1330 {
1332 RtlFreeUnicodeString( &nt_name );
1333 return INVALID_HANDLE_VALUE;
1334 }
1335
1336 attr.Length = sizeof(attr);
1337 attr.RootDirectory = 0;
1338 attr.ObjectName = &nt_name;
1339 attr.Attributes = OBJ_CASE_INSENSITIVE | ((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
1340 attr.SecurityDescriptor = sa ? sa->lpSecurityDescriptor : NULL;
1341 attr.SecurityQualityOfService = NULL;
1342
1343 switch (open_mode & 3)
1344 {
1348 break;
1352 break;
1353 case PIPE_ACCESS_DUPLEX:
1356 break;
1357 default:
1359 return INVALID_HANDLE_VALUE;
1360 }
1362 options = 0;
1363 if (open_mode & WRITE_DAC) access |= WRITE_DAC;
1364 if (open_mode & WRITE_OWNER) access |= WRITE_OWNER;
1368 pipe_type = (pipe_mode & PIPE_TYPE_MESSAGE) != 0;
1369 read_mode = (pipe_mode & PIPE_READMODE_MESSAGE) != 0;
1370 non_block = (pipe_mode & PIPE_NOWAIT) != 0;
1371 if (instances >= PIPE_UNLIMITED_INSTANCES) instances = ~0U;
1372
1373 time.QuadPart = (ULONGLONG)timeout * -10000;
1376 read_mode, non_block, instances, in_buff, out_buff, &time );
1377 RtlFreeUnicodeString( &nt_name );
1380 return handle;
1381}
unsigned char BOOLEAN
#define U(x)
Definition: wordpad.c:45
#define ERROR_SUCCESS
Definition: deptool.c:10
#define FILE_SHARE_READ
Definition: compat.h:136
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
#define FILE_WRITE_THROUGH
Definition: from_kernel.h:26
#define FILE_OPEN_IF
Definition: from_kernel.h:56
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define OBJ_INHERIT
Definition: winternl.h:225
__u16 time
Definition: mkdosfs.c:8
#define FILE_FLAG_OVERLAPPED
Definition: disk.h:46
#define FILE_FLAG_WRITE_THROUGH
Definition: disk.h:47
static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG sharing
Definition: pipe.c:70
static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG ULONG ULONG ULONG ULONG read_mode
Definition: pipe.c:71
static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG ULONG ULONG ULONG pipe_type
Definition: pipe.c:71
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
#define SYNCHRONIZE
Definition: nt_native.h:61
#define WRITE_DAC
Definition: nt_native.h:59
#define ACCESS_SYSTEM_SECURITY
Definition: nt_native.h:77
#define FILE_CREATED
Definition: nt_native.h:770
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define WRITE_OWNER
Definition: nt_native.h:60
NTSTATUS NTAPI NtCreateNamedPipeFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN ULONG NamedPipeType, IN ULONG ReadMode, IN ULONG CompletionMode, IN ULONG MaximumInstances, IN ULONG InboundQuota, IN ULONG OutboundQuota, IN PLARGE_INTEGER DefaultTimeout)
Definition: file.c:3859
uint64_t ULONGLONG
Definition: typedefs.h:67
#define PIPE_ACCESS_INBOUND
Definition: winbase.h:173
#define PIPE_ACCESS_DUPLEX
Definition: winbase.h:172
#define PIPE_ACCESS_OUTBOUND
Definition: winbase.h:174
#define PIPE_NOWAIT
Definition: winbase.h:180
#define PIPE_TYPE_MESSAGE
Definition: winbase.h:176
#define PIPE_UNLIMITED_INSTANCES
Definition: winbase.h:183
#define ERROR_PATH_NOT_FOUND
Definition: winerror.h:106

◆ CreatePipe()

BOOL WINAPI DECLSPEC_HOTPATCH CreatePipe ( HANDLE read_pipe,
HANDLE write_pipe,
SECURITY_ATTRIBUTES sa,
DWORD  size 
)

Definition at line 1387 of file sync.c.

1389{
1390 static unsigned int index;
1391 WCHAR name[64];
1392 UNICODE_STRING nt_name;
1396
1397 *read_pipe = *write_pipe = INVALID_HANDLE_VALUE;
1398
1399 attr.Length = sizeof(attr);
1400 attr.RootDirectory = 0;
1401 attr.ObjectName = &nt_name;
1402 attr.Attributes = OBJ_CASE_INSENSITIVE | ((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
1403 attr.SecurityDescriptor = sa ? sa->lpSecurityDescriptor : NULL;
1404 attr.SecurityQualityOfService = NULL;
1405
1406 if (!size) size = 4096;
1407
1408 timeout.QuadPart = (ULONGLONG)NMPWAIT_USE_DEFAULT_WAIT * -10000;
1409
1410 /* generate a unique pipe name (system wide) */
1411 for (;;)
1412 {
1413 swprintf( name, ARRAY_SIZE(name), L"\\??\\pipe\\Win32.Pipes.%08lu.%08u",
1415 RtlInitUnicodeString( &nt_name, name );
1419 FALSE, FALSE, FALSE, 1, size, size, &timeout ))
1420 break;
1421 }
1424 {
1425 NtClose( *read_pipe );
1426 return FALSE;
1427 }
1428 return TRUE;
1429}
#define FILE_NON_DIRECTORY_FILE
Definition: constants.h:492
#define index(s, c)
Definition: various.h:29
#define TRUE
Definition: types.h:120
GLuint index
Definition: glext.h:6031
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
Definition: file.c:3953
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
#define FILE_WRITE_ATTRIBUTES
Definition: nt_native.h:649
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3402
LONG read_pipe(HANDLE hPipe, SOCKET sock)
Definition: pipetunnel.cpp:202
#define NMPWAIT_USE_DEFAULT_WAIT
Definition: winbase.h:142
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158

◆ CreateSemaphoreExW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW ( SECURITY_ATTRIBUTES sa,
LONG  initial,
LONG  max,
LPCWSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 764 of file sync.c.

766{
767 HANDLE ret = 0;
771
773
774 status = NtCreateSemaphore( &ret, access, &attr, initial, max );
777 else
779 return ret;
780}
NTSTATUS NTAPI NtCreateSemaphore(OUT PHANDLE SemaphoreHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN LONG InitialCount, IN LONG MaximumCount)
Definition: sem.c:69
#define max(a, b)
Definition: svc.c:63

Referenced by CreateSemaphoreW().

◆ CreateSemaphoreW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW ( SECURITY_ATTRIBUTES sa,
LONG  initial,
LONG  max,
LPCWSTR  name 
)

Definition at line 754 of file sync.c.

756{
757 return CreateSemaphoreExW( sa, initial, max, name, 0, SEMAPHORE_ALL_ACCESS );
758}
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW(SECURITY_ATTRIBUTES *sa, LONG initial, LONG max, LPCWSTR name, DWORD flags, DWORD access)
Definition: sync.c:764
#define SEMAPHORE_ALL_ACCESS
Definition: winbase.h:168

Referenced by test_alertable_wait(), test_iocp_callback(), and test_signalandwait().

◆ CreateTimerQueue()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateTimerQueue ( void  )

Definition at line 910 of file sync.c.

911{
912 HANDLE q;
913
914 if (!set_ntstatus( RtlCreateTimerQueue( &q ))) return NULL;
915 return q;
916}
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
NTSYSAPI NTSTATUS NTAPI RtlCreateTimerQueue(PHANDLE TimerQueue)
Definition: threadpool.c:867

Referenced by test_timer_queue().

◆ CreateTimerQueueTimer()

BOOL WINAPI DECLSPEC_HOTPATCH CreateTimerQueueTimer ( PHANDLE  timer,
HANDLE  queue,
WAITORTIMERCALLBACK  callback,
PVOID  arg,
DWORD  when,
DWORD  period,
ULONG  flags 
)

Definition at line 922 of file sync.c.

925{
926 return set_ntstatus( RtlCreateTimer( queue, timer, callback, arg, when, period, flags ));
927}
static IPrintDialogCallback callback
Definition: printdlg.c:326
NTSYSAPI NTSTATUS NTAPI RtlCreateTimer(_In_ HANDLE TimerQueue, _In_ PHANDLE phNewTimer, _In_ WAITORTIMERCALLBACKFUNC Callback, _In_ PVOID Parameter, _In_ ULONG DueTime, _In_ ULONG Period, _In_ ULONG Flags)

Referenced by test_timer_queue(), and timer_queue_cb6().

◆ CreateWaitableTimerExW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerExW ( SECURITY_ATTRIBUTES sa,
LPCWSTR  name,
DWORD  flags,
DWORD  access 
)

Definition at line 828 of file sync.c.

830{
835
837
839 (flags & CREATE_WAITABLE_TIMER_MANUAL_RESET) ? NotificationTimer : SynchronizationTimer );
842 else
844 return handle;
845}
@ SynchronizationTimer
@ NotificationTimer
NTSTATUS NTAPI NtCreateTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN TIMER_TYPE TimerType)
Definition: timer.c:372

Referenced by CreateWaitableTimerW().

◆ CreateWaitableTimerW()

HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerW ( SECURITY_ATTRIBUTES sa,
BOOL  manual,
LPCWSTR  name 
)

Definition at line 818 of file sync.c.

819{
820 return CreateWaitableTimerExW( sa, name, manual ? CREATE_WAITABLE_TIMER_MANUAL_RESET : 0,
822}
HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerExW(SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
Definition: sync.c:828
#define TIMER_ALL_ACCESS
Definition: extypes.h:116

◆ DeleteTimerQueueEx()

BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueEx ( HANDLE  queue,
HANDLE  event 
)

Definition at line 943 of file sync.c.

944{
946}
struct _cl_event * event
Definition: glext.h:7739
NTSYSAPI NTSTATUS NTAPI RtlDeleteTimerQueueEx(_In_ HANDLE TimerQueue, _In_opt_ HANDLE CompletionEvent)

Referenced by test_timer_queue().

◆ DeleteTimerQueueTimer()

BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueTimer ( HANDLE  queue,
HANDLE  timer,
HANDLE  event 
)

Definition at line 952 of file sync.c.

953{
954 return set_ntstatus( RtlDeleteTimer( queue, timer, event ));
955}
NTSYSAPI NTSTATUS NTAPI RtlDeleteTimer(_In_ HANDLE TimerQueue, _In_ HANDLE Timer, _In_ HANDLE CompletionEvent)

Referenced by test_timer_queue(), timer_queue_cb2(), and timer_queue_cb6().

◆ DisconnectNamedPipe()

BOOL WINAPI DECLSPEC_HOTPATCH DisconnectNamedPipe ( HANDLE  pipe)

Definition at line 1435 of file sync.c.

1436{
1437 IO_STATUS_BLOCK io_block;
1438
1439 TRACE( "(%p)\n", pipe );
1440 return set_ntstatus( NtFsControlFile( pipe, 0, NULL, NULL, &io_block,
1441 FSCTL_PIPE_DISCONNECT, NULL, 0, NULL, 0 ));
1442}
#define FSCTL_PIPE_DISCONNECT
Definition: winioctl.h:194

◆ get_create_object_attributes()

static void get_create_object_attributes ( OBJECT_ATTRIBUTES attr,
UNICODE_STRING nameW,
SECURITY_ATTRIBUTES sa,
const WCHAR name 
)
static

Definition at line 90 of file sync.c.

92{
93 attr->Length = sizeof(*attr);
94 attr->RootDirectory = 0;
95 attr->ObjectName = NULL;
96 attr->Attributes = OBJ_OPENIF | ((sa && sa->bInheritHandle) ? OBJ_INHERIT : 0);
97 attr->SecurityDescriptor = sa ? sa->lpSecurityDescriptor : NULL;
98 attr->SecurityQualityOfService = NULL;
99 if (name)
100 {
102 attr->ObjectName = nameW;
103 BaseGetNamedObjectDirectory( &attr->RootDirectory );
104 }
105}
NTSTATUS WINAPI BaseGetNamedObjectDirectory(HANDLE *dir)
Definition: sync.c:63
#define OBJ_OPENIF
Definition: winternl.h:229

Referenced by CreateEventExW(), CreateFileMappingW(), CreateMutexExW(), CreateSemaphoreExW(), and CreateWaitableTimerExW().

◆ get_nt_timeout()

static LARGE_INTEGER * get_nt_timeout ( LARGE_INTEGER time,
DWORD  timeout 
)
inlinestatic

◆ get_open_object_attributes()

static BOOL get_open_object_attributes ( OBJECT_ATTRIBUTES attr,
UNICODE_STRING nameW,
BOOL  inherit,
const WCHAR name 
)
static

Definition at line 107 of file sync.c.

109{
110 HANDLE dir;
111
112 if (!name)
113 {
115 return FALSE;
116 }
120 return TRUE;
121}

Referenced by OpenEventW(), OpenFileMappingFromApp(), OpenFileMappingW(), OpenMutexW(), OpenSemaphoreW(), and OpenWaitableTimerW().

◆ GetNamedPipeHandleStateW()

BOOL WINAPI DECLSPEC_HOTPATCH GetNamedPipeHandleStateW ( HANDLE  pipe,
DWORD state,
DWORD instances,
DWORD max_count,
DWORD timeout,
WCHAR user,
DWORD  size 
)

Definition at line 1448 of file sync.c.

1451{
1453
1454 FIXME( "%p %p %p %p %p %p %ld: semi-stub\n", pipe, state, instances, max_count, timeout, user, size );
1455
1456 if (max_count) *max_count = 0;
1457 if (timeout) *timeout = 0;
1458 if (user && size && !GetEnvironmentVariableW( L"WINEUSERNAME", user, size )) user[0] = 0;
1459
1460 if (state)
1461 {
1463
1465 return FALSE;
1466
1468 (info.CompletionMode ? PIPE_NOWAIT : PIPE_WAIT);
1469 }
1470 if (instances)
1471 {
1473
1474 if (!set_ntstatus( NtQueryInformationFile( pipe, &io, &info, sizeof(info),
1476 return FALSE;
1477 *instances = info.CurrentInstances;
1478 }
1479 return TRUE;
1480}
static int state
Definition: maze.c:121
void user(int argc, const char *argv[])
Definition: cmds.c:1350
#define FIXME(fmt,...)
Definition: precomp.h:53
#define GetEnvironmentVariableW(x, y, z)
Definition: compat.h:755
@ FilePipeLocalInformation
Definition: from_kernel.h:85
@ FilePipeInformation
Definition: from_kernel.h:84
Character const *const size_t const max_count
Definition: fullpath.cpp:66
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
Definition: file.c:100
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
#define PIPE_READMODE_BYTE
Definition: winbase.h:177
#define PIPE_WAIT
Definition: winbase.h:179

◆ GetNamedPipeInfo()

BOOL WINAPI DECLSPEC_HOTPATCH GetNamedPipeInfo ( HANDLE  pipe,
LPDWORD  flags,
LPDWORD  out_size,
LPDWORD  in_size,
LPDWORD  instances 
)

Definition at line 1486 of file sync.c.

1488{
1491
1493 return FALSE;
1494
1495 if (flags)
1496 {
1499 }
1500 if (out_size) *out_size = info.OutboundQuota;
1501 if (in_size) *in_size = info.InboundQuota;
1502 if (instances) *instances = info.MaximumInstances;
1503 return TRUE;
1504}
#define FILE_PIPE_TYPE_MESSAGE
Definition: winternl.h:1863
#define FILE_PIPE_SERVER_END
Definition: iotypes.h:85
#define PIPE_CLIENT_END
Definition: winbase.h:181
#define PIPE_SERVER_END
Definition: winbase.h:182
#define PIPE_TYPE_BYTE
Definition: winbase.h:175

◆ GetQueuedCompletionStatus()

BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatus ( HANDLE  port,
LPDWORD  count,
PULONG_PTR  key,
LPOVERLAPPED overlapped,
DWORD  timeout 
)

Definition at line 1180 of file sync.c.

1182{
1185 LARGE_INTEGER wait_time;
1186
1187 TRACE( "(%p,%p,%p,%p,%ld)\n", port, count, key, overlapped, timeout );
1188
1189 *overlapped = NULL;
1191 get_nt_timeout( &wait_time, timeout ) );
1192 if (status == STATUS_SUCCESS)
1193 {
1195 if (iosb.Status >= 0) return TRUE;
1197 return FALSE;
1198 }
1199
1203 return FALSE;
1204}
#define STATUS_TIMEOUT
Definition: d3dkmdt.h:49
#define WAIT_TIMEOUT
Definition: dderror.h:14
static LARGE_INTEGER * get_nt_timeout(LARGE_INTEGER *time, DWORD timeout)
Definition: sync.c:52
GLuint GLuint GLsizei count
Definition: gl.h:1545
NTSTATUS NTAPI NtRemoveIoCompletion(IN HANDLE IoCompletionHandle, OUT PVOID *KeyContext, OUT PVOID *ApcContext, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER Timeout OPTIONAL)
Definition: iocomp.c:445
#define STATUS_ABANDONED
Definition: ntstatus.h:75
uint32_t * PULONG_PTR
Definition: typedefs.h:65
#define ERROR_ABANDONED_WAIT_0
Definition: winerror.h:516

◆ GetQueuedCompletionStatusEx()

BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatusEx ( HANDLE  port,
OVERLAPPED_ENTRY entries,
ULONG  count,
ULONG written,
DWORD  timeout,
BOOL  alertable 
)

Definition at line 1209 of file sync.c.

1212{
1214 NTSTATUS ret;
1215
1216 TRACE( "%p %p %lu %p %lu %u\n", port, entries, count, written, timeout, alertable );
1217
1218 ret = NtRemoveIoCompletionEx( port, (FILE_IO_COMPLETION_INFORMATION *)entries, count,
1219 written, get_nt_timeout( &time, timeout ), alertable );
1220 if (ret == STATUS_SUCCESS) return TRUE;
1225 return FALSE;
1226}
#define STATUS_USER_APC
Definition: ntstatus.h:78
#define WAIT_IO_COMPLETION
Definition: winbase.h:444

◆ GetSystemTimes()

BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimes ( FILETIME idle,
FILETIME kernel,
FILETIME user 
)

Definition at line 132 of file sync.c.

133{
134 LARGE_INTEGER idle_time, kernel_time, user_time;
136 ULONG ret_size;
137 DWORD i, cpus = NtCurrentTeb()->Peb->NumberOfProcessors;
138
139 if (!(info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) * cpus )))
140 {
142 return FALSE;
143 }
145 sizeof(*info) * cpus, &ret_size )))
146 {
148 return FALSE;
149 }
150 idle_time.QuadPart = 0;
151 kernel_time.QuadPart = 0;
152 user_time.QuadPart = 0;
153 for (i = 0; i < cpus; i++)
154 {
155 idle_time.QuadPart += info[i].IdleTime.QuadPart;
156 kernel_time.QuadPart += info[i].KernelTime.QuadPart;
157 user_time.QuadPart += info[i].UserTime.QuadPart;
158 }
159 if (idle)
160 {
161 idle->dwLowDateTime = idle_time.u.LowPart;
162 idle->dwHighDateTime = idle_time.u.HighPart;
163 }
164 if (kernel)
165 {
166 kernel->dwLowDateTime = kernel_time.u.LowPart;
167 kernel->dwHighDateTime = kernel_time.u.HighPart;
168 }
169 if (user)
170 {
171 user->dwLowDateTime = user_time.u.LowPart;
172 user->dwHighDateTime = user_time.u.HighPart;
173 }
175 return TRUE;
176}
void idle(int argc, const char *argv[])
Definition: cmds.c:1581
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
@ SystemProcessorPerformanceInformation
Definition: ntddk_ex.h:19
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
DWORD dwHighDateTime
Definition: mapidefs.h:66
DWORD dwLowDateTime
Definition: mapidefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
LONGLONG QuadPart
Definition: typedefs.h:114
struct _LARGE_INTEGER::@2473 u

◆ GetTickCount()

ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount ( void  )

Definition at line 182 of file sync.c.

183{
184 /* note: we ignore TickCountMultiplier */
185 return user_shared_data->TickCount.LowPart;
186}
static const struct _KUSER_SHARED_DATA * user_shared_data
Definition: sync.c:43

Referenced by __security_init_cookie(), _FileOpCount(), _FileOpCountManager(), _tmain(), _tWinMain(), apartment_freeunusedlibraries(), BiosMiscService(), CalibrateTest(), CardWindow::CardWindow(), check_exe(), ClockUpdate(), collect_connections(), CommandChoice(), CommandTimer(), CoWaitForMultipleHandles(), CProgressDialog::CProgressDialog(), Defragment::Defragment(), DispatchMessageA(), DispatchMessageW(), DoControlService(), DoStartService(), DoStartStartupItems(), DoStopService(), DrawGLScene(), DSOUND_callback(), DSOUND_capture_callback(), DSOUND_PrimaryGetPosition(), DSOUND_timer(), empty_message_queue(), EnableHardwareTimer(), extract_resource(), FileTypesDlg_Refresh(), flush_events(), FormatBufferFat(), GdiSAPCallback(), GenerateComputerName(), GenerateRandomPassword(), http_release_netconn(), IDirectSoundBufferImpl_GetCurrentPosition(), IDirectSoundBufferImpl_Lock(), IDirectSoundCaptureBufferImpl_Lock(), CFileDefExt::InitDirStats(), InitMatrixMessage(), InitScreenSaveClass(), InputWait(), install_cab_file(), KmtEnsureServiceState(), LBItemFromPt(), LISTVIEW_ProcessLetterKeys(), mailslot_test(), main(), make_discover(), MediaControl_GetState(), MIDI_player(), midiStreamRestart(), MMSYSTEM_MidiStream_MessageHandler(), MMSYSTEM_MidiStream_Player(), NotifyInfo::modify(), msi_create_empty_local_file(), mstsc_mousewheel(), NBNameCacheAddEntry(), NBNameCacheWalk(), NetBTAstatRemote(), NetBTNameWaitLoop(), NetBTWaitForNameResponse(), NetrRemoteTOD(), NotifyInfo::NotifyInfo(), NotifyTopLevelWindow(), AirBrushTool::OnButtonDown(), open_clipboard(), open_clipboard_(), OSK_Command(), OSK_ReleaseKey(), PeekMessageWorker(), PreInit(), PrimaryBufferImpl_GetCurrentPosition(), PrimaryBufferImpl_Lock(), process_timer(), processPendingMessages(), ProcessTest(), PulseSample(), pump_msg_loop_timeout(), QUARTZ_CreateSystemClock(), QueryTime(), NotifyArea::Refresh(), TrayNotifyDlg::RefreshProperties(), remove_target_tasks(), RetrieveQuote(), RPC_GetLocalClassObject(), rpcrt4_http_timer_calc_timeout(), rpcrt4_http_timer_thread(), rpcrt4_ncacn_http_open(), rpcrt4_ncacn_http_write(), run_benchmark(), CWineTest::RunTest(), ScreenSaverProc(), ScreenSaverThreadMain(), SendGetState(), ServeSomeMessages(), ServiceStart(), set_task_timer(), SetAbortProc(), CProgressDialog::SetProgress64(), SHChangeNotify(), SHChangeNotifyReceive(), SHWaitForSendMessageThread(), SlideWindow(), SpeakerChange(), Defragment::Start(), START_TEST(), StartDocW(), StartScreenSaver(), state_reboot(), StorageImpl_LockRegionSync(), swapchain_gdi_present(), swapchain_gl_present(), SystemClockImpl_GetTime(), taskdialog_init(), taskdialog_proc(), test1(), test_AbortWaitCts(), test_api(), test_buffer(), test_buffer8(), test_dbcs_wm_char(), test_get_input_report(), test_get_state(), test_globalness(), test_ime_wnd_proc(), test_ImmGetCompositionString(), test_InputObject(), test_LoopbackRead(), test_not_modified(), test_OpenFileById(), test_QueueUserWorkItem(), test_read_device(), test_read_write(), test_ReadTimeOut(), test_runner(), test_select(), test_timers(), test_timers_no_wnd(), test_tp_timer(), test_WaitBreak(), test_WaitCommEvent(), test_WaitCts(), test_WaitDcd(), test_WaitDsr(), test_WaitRing(), test_WaitRx(), test_waittxempty(), test_WM_GETDLGCODE(), testW1(), ThemeWaitForServiceReady(), TIME_MMSysTimeCallback(), TIME_SetEventInternal(), time_stamp_callback(), TIME_TriggerCallBack(), timeGetSystemTime(), timeGetTime(), TreeListChar(), TreeListProc(), TREEVIEW_ProcessLetterKeys(), UpdateLanStatusUiDlg(), UpdateProgressBar(), verify_cert_revocation_from_dist_points_ext(), wait_for_event(), wait_move_event(), WaitService(), CFileDefExt::WalkDirTree(), WDML_SyncWaitTransactionReply(), window_length_cb(), WindowProc(), wmain(), WndProc(), and NotifyArea::WndProc().

◆ GetTickCount64()

ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64 ( void  )

Definition at line 192 of file sync.c.

193{
194 ULONG high, low;
195
196 do
197 {
198 high = user_shared_data->TickCount.High1Time;
199 low = user_shared_data->TickCount.LowPart;
200 }
201 while (high != user_shared_data->TickCount.High2Time);
202 /* note: we ignore TickCountMultiplier */
203 return (ULONGLONG)high << 32 | low;
204}

Referenced by cache_connection(), collect_connections(), collect_uptime(), connection_collector(), DllMain(), downloadcb_OnProgress(), InstallEngineTiming_GetInstallProgress(), ITERATE_StartService(), nfs41_client_owner(), nfs41_session_bad_slot(), nfs41_session_bump_seq(), nfs41_session_recall_slot(), SnmpSvcGetUptime(), start_rpcss(), and UpdateLanStatusUiDlg().

◆ InitializeCriticalSectionAndSpinCount()

BOOL WINAPI DECLSPEC_HOTPATCH InitializeCriticalSectionAndSpinCount ( CRITICAL_SECTION crit,
DWORD  count 
)

Definition at line 966 of file sync.c.

967{
969}
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(_In_ PRTL_CRITICAL_SECTION CriticalSection, _In_ ULONG SpinCount)

◆ InitializeCriticalSectionEx()

BOOL WINAPI DECLSPEC_HOTPATCH InitializeCriticalSectionEx ( CRITICAL_SECTION crit,
DWORD  spincount,
DWORD  flags 
)

Definition at line 974 of file sync.c.

976{
977 NTSTATUS ret = RtlInitializeCriticalSectionEx( crit, spincount, flags );
978 if (ret) RtlRaiseStatus( ret );
979 return !ret;
980}
NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *, ULONG, ULONG)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)

◆ InitOnceBeginInitialize()

BOOL WINAPI DECLSPEC_HOTPATCH InitOnceBeginInitialize ( INIT_ONCE once,
DWORD  flags,
BOOL pending,
void **  context 
)

Definition at line 1687 of file sync.c.

1689{
1691 if (status >= 0) *pending = (status == STATUS_PENDING);
1693 return status >= 0;
1694}
_Must_inspect_result_ NTSTATUS NTAPI RtlRunOnceBeginInitialize(_Inout_ PRTL_RUN_ONCE RunOnce, _In_ ULONG Flags, _Outptr_opt_result_maybenull_ PVOID *Context)
Definition: runonce.c:22
Definition: http.c:7252

◆ InitOnceComplete()

BOOL WINAPI DECLSPEC_HOTPATCH InitOnceComplete ( INIT_ONCE once,
DWORD  flags,
void context 
)

Definition at line 1700 of file sync.c.

1701{
1702 return set_ntstatus( RtlRunOnceComplete( once, flags, context ));
1703}
NTSTATUS NTAPI RtlRunOnceComplete(_Inout_ PRTL_RUN_ONCE RunOnce, _In_ ULONG Flags, _In_opt_ PVOID Context)
Definition: runonce.c:73

◆ InitOnceExecuteOnce()

BOOL WINAPI DECLSPEC_HOTPATCH InitOnceExecuteOnce ( INIT_ONCE once,
PINIT_ONCE_FN  func,
void param,
void **  context 
)

Definition at line 1709 of file sync.c.

1711{
1713}
GLenum func
Definition: glext.h:6028
GLfloat param
Definition: glext.h:5796
_Maybe_raises_SEH_exception_ NTSTATUS NTAPI RtlRunOnceExecuteOnce(_Inout_ PRTL_RUN_ONCE RunOnce, _In_ __inner_callback PRTL_RUN_ONCE_INIT_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ PVOID *Context)
Definition: runonce.c:121
RTL_RUN_ONCE_INIT_FN * PRTL_RUN_ONCE_INIT_FN
Definition: rtltypes.h:338

◆ is_version_nt()

static BOOL is_version_nt ( void  )
inlinestatic

Definition at line 46 of file sync.c.

47{
48 return !(GetVersion() & 0x80000000);
49}
DWORD WINAPI GetVersion(void)
Definition: version.c:1458

Referenced by CreateFileMappingW(), OpenEventW(), OpenFileMappingW(), OpenMutexW(), OpenSemaphoreW(), and OpenWaitableTimerW().

◆ normalize_std_handle()

static HANDLE normalize_std_handle ( HANDLE  handle)
static

Definition at line 279 of file sync.c.

280{
281 if ((handle == (HANDLE)STD_INPUT_HANDLE) ||
285
286 return handle;
287}
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:203
#define HandleToULong(h)
Definition: basetsd.h:95
#define STD_OUTPUT_HANDLE
Definition: winbase.h:301
#define STD_INPUT_HANDLE
Definition: winbase.h:300
#define STD_ERROR_HANDLE
Definition: winbase.h:302

Referenced by RegisterWaitForSingleObjectEx(), and WaitForMultipleObjectsEx().

◆ OpenEventA()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventA ( DWORD  access,
BOOL  inherit,
LPCSTR  name 
)

Definition at line 593 of file sync.c.

594{
596
597 if (!name) return OpenEventW( access, inherit, NULL );
598
600 {
602 return 0;
603 }
604 return OpenEventW( access, inherit, buffer );
605}
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW(DWORD access, BOOL inherit, LPCWSTR name)
Definition: sync.c:611

Referenced by test_event().

◆ OpenEventW()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW ( DWORD  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 611 of file sync.c.

612{
613 HANDLE ret;
616
618
619 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
620
621 if (!set_ntstatus( NtOpenEvent( &ret, access, &attr ))) return 0;
622 return ret;
623}
static BOOL get_open_object_attributes(OBJECT_ATTRIBUTES *attr, UNICODE_STRING *nameW, BOOL inherit, const WCHAR *name)
Definition: sync.c:107
NTSTATUS NTAPI NtOpenEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: event.c:181

Referenced by OpenEventA(), and test_event().

◆ OpenFileMappingFromApp()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingFromApp ( ULONG  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 1090 of file sync.c.

1091{
1094 HANDLE ret;
1095
1096 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
1097
1099
1100 if (!set_ntstatus( NtOpenSection( &ret, access, &attr ))) return 0;
1101 return ret;
1102}
NTSTATUS NTAPI NtOpenSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: section.c:3204
#define FILE_MAP_COPY
Definition: winbase.h:161

◆ OpenFileMappingW()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingW ( DWORD  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 1066 of file sync.c.

1067{
1070 HANDLE ret;
1071
1072 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
1073
1075
1076 if (!is_version_nt())
1077 {
1078 /* win9x doesn't do access checks, so try with full access first */
1080 }
1081
1082 if (!set_ntstatus( NtOpenSection( &ret, access, &attr ))) return 0;
1083 return ret;
1084}

◆ OpenMutexW()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenMutexW ( DWORD  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 722 of file sync.c.

723{
724 HANDLE ret;
727
729
730 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
731
732 if (!set_ntstatus( NtOpenMutant( &ret, access, &attr ))) return 0;
733 return ret;
734}
NTSTATUS NTAPI NtOpenMutant(OUT PHANDLE MutantHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: mutant.c:162

Referenced by test_mutex().

◆ OpenSemaphoreW()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW ( DWORD  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 786 of file sync.c.

787{
788 HANDLE ret;
791
793
794 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
795
796 if (!set_ntstatus( NtOpenSemaphore( &ret, access, &attr ))) return 0;
797 return ret;
798}
NTSTATUS NTAPI NtOpenSemaphore(OUT PHANDLE SemaphoreHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: sem.c:161

Referenced by test_semaphore().

◆ OpenWaitableTimerW()

HANDLE WINAPI DECLSPEC_HOTPATCH OpenWaitableTimerW ( DWORD  access,
BOOL  inherit,
LPCWSTR  name 
)

Definition at line 851 of file sync.c.

852{
856
858
859 if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
860
861 if (!set_ntstatus( NtOpenTimer( &handle, access, &attr ))) return 0;
862 return handle;
863}
NTSTATUS NTAPI NtOpenTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: timer.c:463

Referenced by test_waitable_timer().

◆ PeekNamedPipe()

BOOL WINAPI DECLSPEC_HOTPATCH PeekNamedPipe ( HANDLE  pipe,
LPVOID  out_buffer,
DWORD  size,
LPDWORD  read_size,
LPDWORD  avail,
LPDWORD  message 
)

Definition at line 1510 of file sync.c.

1512{
1513 FILE_PIPE_PEEK_BUFFER local_buffer;
1514 FILE_PIPE_PEEK_BUFFER *buffer = &local_buffer;
1517
1518 if (size && !(buffer = HeapAlloc( GetProcessHeap(), 0,
1520 {
1522 return FALSE;
1523 }
1524
1528 if (!status)
1529 {
1531 if (avail) *avail = buffer->ReadDataAvailable;
1532 if (read_size) *read_size = count;
1533 if (message) *message = buffer->MessageLength - count;
1534 if (out_buffer) memcpy( out_buffer, buffer->Data, count );
1535 }
1537
1538 if (buffer != &local_buffer) HeapFree( GetProcessHeap(), 0, buffer );
1539 return !status;
1540}
static int avail
Definition: adh-main.c:39
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID out_buffer
Definition: file.c:100
#define FSCTL_PIPE_PEEK
Definition: winioctl.h:196
#define STATUS_BUFFER_OVERFLOW
Definition: shellext.h:66
Definition: tftpd.h:60
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255

◆ PostQueuedCompletionStatus()

BOOL WINAPI DECLSPEC_HOTPATCH PostQueuedCompletionStatus ( HANDLE  port,
DWORD  count,
ULONG_PTR  key,
LPOVERLAPPED  overlapped 
)

Definition at line 1232 of file sync.c.

1234{
1235 TRACE( "%p %ld %08Ix %p\n", port, count, key, overlapped );
1236
1238}
NTSTATUS NTAPI NtSetIoCompletion(IN HANDLE IoCompletionPortHandle, IN PVOID CompletionKey, IN PVOID CompletionContext, IN NTSTATUS CompletionStatus, IN ULONG CompletionInformation)
Definition: iocomp.c:569

◆ PulseEvent()

BOOL WINAPI DECLSPEC_HOTPATCH PulseEvent ( HANDLE  handle)

Definition at line 628 of file sync.c.

629{
631}
NTSTATUS NTAPI NtPulseEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
Definition: event.c:244

◆ QueryIdleProcessorCycleTime()

BOOL WINAPI QueryIdleProcessorCycleTime ( ULONG size,
ULONG64 times 
)

Definition at line 251 of file sync.c.

252{
253 ULONG ret_size;
255
256 if (!*size || !status) *size = ret_size;
257 return TRUE;
258}
static const struct encodedFiletime times[]
Definition: encode.c:556
@ SystemProcessorIdleCycleTimeInformation
Definition: extypes.h:300

◆ QueryIdleProcessorCycleTimeEx()

BOOL WINAPI QueryIdleProcessorCycleTimeEx ( USHORT  group_id,
ULONG size,
ULONG64 times 
)

Definition at line 264 of file sync.c.

265{
266 ULONG ret_size;
268 times, *size, &ret_size );
269 if (!*size || !status) *size = ret_size;
270 return TRUE;
271}
NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS, void *, ULONG, void *, ULONG, ULONG *)

◆ QueryInterruptTime()

void WINAPI DECLSPEC_HOTPATCH QueryInterruptTime ( ULONGLONG time)

Definition at line 210 of file sync.c.

211{
212 ULONG high, low;
213
214 do
215 {
216 high = user_shared_data->InterruptTime.High1Time;
217 low = user_shared_data->InterruptTime.LowPart;
218 }
219 while (high != user_shared_data->InterruptTime.High2Time);
220 *time = (ULONGLONG)high << 32 | low;
221}

Referenced by QueryInterruptTimePrecise().

◆ QueryInterruptTimePrecise()

void WINAPI DECLSPEC_HOTPATCH QueryInterruptTimePrecise ( ULONGLONG time)

Definition at line 227 of file sync.c.

228{
229 static int once;
230 if (!once++) FIXME( "(%p) semi-stub\n", time );
231
233}
void WINAPI DECLSPEC_HOTPATCH QueryInterruptTime(ULONGLONG *time)
Definition: sync.c:210

◆ QueryUnbiasedInterruptTimePrecise()

void WINAPI DECLSPEC_HOTPATCH QueryUnbiasedInterruptTimePrecise ( ULONGLONG time)

Definition at line 239 of file sync.c.

240{
241 static int once;
242 if (!once++) FIXME( "(%p): semi-stub.\n", time );
243
245}
NTSYSAPI NTSTATUS WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG *)

◆ RegisterWaitForSingleObjectEx()

HANDLE WINAPI DECLSPEC_HOTPATCH RegisterWaitForSingleObjectEx ( HANDLE  handle,
WAITORTIMERCALLBACK  callback,
PVOID  context,
ULONG  timeout,
ULONG  flags 
)

Definition at line 293 of file sync.c.

295{
296 HANDLE ret;
297
298 TRACE( "%p %p %p %ld %ld\n", handle, callback, context, timeout, flags );
299
302 return ret;
303}
static HANDLE normalize_std_handle(HANDLE handle)
Definition: sync.c:279
NTSYSAPI NTSTATUS NTAPI RtlRegisterWait(_In_ PHANDLE phNewWaitObject, _In_ HANDLE hObject, _In_ WAITORTIMERCALLBACKFUNC Callback, _In_ PVOID pvContext, _In_ ULONG ulMilliseconds, _In_ ULONG ulFlags)

◆ ReleaseMutex()

BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex ( HANDLE  handle)

Definition at line 740 of file sync.c.

741{
743}
NTSTATUS NTAPI NtReleaseMutant(IN HANDLE MutantHandle, IN PLONG PreviousCount OPTIONAL)
Definition: mutant.c:296

Referenced by test_mutex().

◆ ReleaseSemaphore()

BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore ( HANDLE  handle,
LONG  count,
LONG previous 
)

Definition at line 804 of file sync.c.

805{
806 return set_ntstatus( NtReleaseSemaphore( handle, count, (PULONG)previous ));
807}
NTSTATUS NTAPI NtReleaseSemaphore(IN HANDLE SemaphoreHandle, IN LONG ReleaseCount, OUT PLONG PreviousCount OPTIONAL)
Definition: sem.c:295
uint32_t * PULONG
Definition: typedefs.h:59

Referenced by alertable_wait_apc(), alertable_wait_thread(), iocp_callback(), test_alertable_wait(), and test_signalandwait().

◆ ResetEvent()

BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent ( HANDLE  handle)

Definition at line 646 of file sync.c.

647{
649}
NTSTATUS NTAPI NtResetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
Definition: event.c:386

Referenced by test_signalandwait(), and test_WaitForMultipleObjects().

◆ SetEvent()

BOOL WINAPI DECLSPEC_HOTPATCH SetEvent ( HANDLE  handle)

Definition at line 637 of file sync.c.

638{
639 return set_ntstatus( NtSetEvent( handle, NULL ));
640}
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
Definition: event.c:455

Referenced by apc_deadlock_thread(), and test_WaitForMultipleObjects().

◆ SetNamedPipeHandleState()

BOOL WINAPI DECLSPEC_HOTPATCH SetNamedPipeHandleState ( HANDLE  pipe,
LPDWORD  mode,
LPDWORD  count,
LPDWORD  timeout 
)

Definition at line 1546 of file sync.c.

1548{
1552
1553 TRACE( "%p %p/%ld %p %p\n", pipe, mode, mode ? *mode : 0, count, timeout );
1554 if (count || timeout) FIXME( "Unsupported arguments\n" );
1555
1556 if (mode)
1557 {
1559 else
1560 {
1561 info.CompletionMode = (*mode & PIPE_NOWAIT) ?
1563 info.ReadMode = (*mode & PIPE_READMODE_MESSAGE) ?
1566 }
1567 }
1568 return set_ntstatus( status );
1569}
#define FILE_PIPE_BYTE_STREAM_MODE
Definition: iotypes.h:77
#define FILE_PIPE_COMPLETE_OPERATION
Definition: iotypes.h:80
#define FILE_PIPE_MESSAGE_MODE
Definition: iotypes.h:78
#define FILE_PIPE_QUEUE_OPERATION
Definition: iotypes.h:79
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by CallNamedPipeW().

◆ SetWaitableTimer()

BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimer ( HANDLE  handle,
const LARGE_INTEGER when,
LONG  period,
PTIMERAPCROUTINE  callback,
LPVOID  arg,
BOOL  resume 
)

Definition at line 869 of file sync.c.

871{
873 arg, resume, period, NULL );
875}
VOID(CALLBACK * PTIMER_APC_ROUTINE)(PVOID, ULONG, LONG)
Definition: winternl.h:2018
NTSTATUS NTAPI NtSetTimer(IN HANDLE TimerHandle, IN PLARGE_INTEGER DueTime, IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, IN PVOID TimerContext OPTIONAL, IN BOOLEAN WakeTimer, IN LONG Period OPTIONAL, OUT PBOOLEAN PreviousState OPTIONAL)
Definition: timer.c:583
#define STATUS_TIMER_RESUME_IGNORED
Definition: ntstatus.h:151

Referenced by SetWaitableTimerEx().

◆ SetWaitableTimerEx()

BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimerEx ( HANDLE  handle,
const LARGE_INTEGER when,
LONG  period,
PTIMERAPCROUTINE  callback,
LPVOID  arg,
REASON_CONTEXT *  context,
ULONG  tolerabledelay 
)

Definition at line 881 of file sync.c.

884{
885 static int once;
886 if (!once++) FIXME( "(%p, %p, %ld, %p, %p, %p, %ld) semi-stub\n",
887 handle, when, period, callback, arg, context, tolerabledelay );
888
889 return SetWaitableTimer( handle, when, period, callback, arg, FALSE );
890}
BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimer(HANDLE handle, const LARGE_INTEGER *when, LONG period, PTIMERAPCROUTINE callback, LPVOID arg, BOOL resume)
Definition: sync.c:869

◆ SignalObjectAndWait()

DWORD WINAPI DECLSPEC_HOTPATCH SignalObjectAndWait ( HANDLE  signal,
HANDLE  wait,
DWORD  timeout,
BOOL  alertable 
)

Definition at line 309 of file sync.c.

311{
314
315 TRACE( "%p %p %ld %d\n", signal, wait, timeout, alertable );
316
318 if (HIWORD(status))
319 {
322 }
323 return status;
324}
NTSTATUS NTAPI NtSignalAndWaitForSingleObject(IN HANDLE ObjectHandleToSignal, IN HANDLE WaitableObjectHandle, IN BOOLEAN Alertable, IN PLARGE_INTEGER TimeOut OPTIONAL)
Definition: obwait.c:473
int signal
Definition: except.c:84
#define HIWORD(l)
Definition: typedefs.h:247
#define WAIT_FAILED
Definition: winbase.h:446

Referenced by test_signalandwait().

◆ Sleep()

◆ SleepConditionVariableCS()

BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableCS ( CONDITION_VARIABLE *  variable,
CRITICAL_SECTION crit,
DWORD  timeout 
)

Definition at line 1113 of file sync.c.

1115{
1117
1119}
GLenum GLenum variable
Definition: glext.h:9031
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableCS(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_CRITICAL_SECTION CriticalSection, _In_opt_ PLARGE_INTEGER TimeOut)

◆ SleepConditionVariableSRW()

BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableSRW ( RTL_CONDITION_VARIABLE variable,
RTL_SRWLOCK lock,
DWORD  timeout,
ULONG  flags 
)

Definition at line 1125 of file sync.c.

1127{
1129
1132}
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableSRW(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_SRWLOCK SRWLock, _In_opt_ PLARGE_INTEGER TimeOut, _In_ ULONG Flags)
rwlock_t lock
Definition: tcpcore.h:0

◆ SleepEx()

DWORD WINAPI DECLSPEC_HOTPATCH SleepEx ( DWORD  timeout,
BOOL  alertable 
)

Definition at line 341 of file sync.c.

342{
345
348 return 0;
349}

Referenced by START_TEST().

◆ TransactNamedPipe()

BOOL WINAPI DECLSPEC_HOTPATCH TransactNamedPipe ( HANDLE  handle,
LPVOID  write_buf,
DWORD  write_size,
LPVOID  read_buf,
DWORD  read_size,
LPDWORD  bytes_read,
LPOVERLAPPED  overlapped 
)

Definition at line 1574 of file sync.c.

1577{
1578 IO_STATUS_BLOCK default_iosb, *iosb = &default_iosb;
1579 HANDLE event = NULL;
1580 void *cvalue = NULL;
1582
1583 TRACE( "%p %p %lu %p %lu %p %p\n", handle,
1584 write_buf, write_size, read_buf, read_size, bytes_read, overlapped );
1585
1586 if (overlapped)
1587 {
1588 event = overlapped->hEvent;
1590 if (((ULONG_PTR)event & 1) == 0) cvalue = overlapped;
1591 }
1592 else
1593 {
1594 iosb->Information = 0;
1595 }
1596
1598 write_buf, write_size, read_buf, read_size );
1599 if (status == STATUS_PENDING && !overlapped)
1600 {
1602 status = iosb->Status;
1603 }
1604
1605 if (bytes_read) *bytes_read = overlapped && status ? 0 : iosb->Information;
1606 return set_ntstatus( status );
1607}
#define read_buf
Definition: intsym.h:279
#define FSCTL_PIPE_TRANSCEIVE
Definition: winioctl.h:198

Referenced by CallNamedPipeW().

◆ UnregisterWaitEx()

BOOL WINAPI DECLSPEC_HOTPATCH UnregisterWaitEx ( HANDLE  handle,
HANDLE  event 
)

Definition at line 355 of file sync.c.

356{
358}
NTSYSAPI NTSTATUS NTAPI RtlDeregisterWaitEx(_In_ HANDLE hWaitHandle, _In_opt_ HANDLE hCompletionEvent)

◆ WaitForDebugEvent()

BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEvent ( DEBUG_EVENT event,
DWORD  timeout 
)

Definition at line 421 of file sync.c.

422{
426
427 for (;;)
428 {
430 switch (status)
431 {
432 case STATUS_SUCCESS:
433 /* continue on wide print exceptions to force resending an ANSI one. */
434 if (state.NewState == DbgExceptionStateChange)
435 {
436 DBGKM_EXCEPTION *info = &state.StateInfo.Exception;
437 DWORD code = info->ExceptionRecord.ExceptionCode;
438 if (code == DBG_PRINTEXCEPTION_WIDE_C && info->ExceptionRecord.NumberParameters >= 2)
439 {
441 break;
442 }
443 }
445 return TRUE;
446 case STATUS_USER_APC:
447 continue;
448 case STATUS_TIMEOUT:
450 return FALSE;
451 default:
452 return set_ntstatus( status );
453 }
454 }
455}
@ DbgExceptionStateChange
Definition: dbgktypes.h:119
NTSTATUS NTAPI DbgUiContinue(IN PCLIENT_ID ClientId, IN NTSTATUS ContinueStatus)
Definition: dbgui.c:47
NTSTATUS NTAPI DbgUiConvertStateChangeStructure(IN PDBGUI_WAIT_STATE_CHANGE WaitStateChange, OUT PVOID Win32DebugEvent)
Definition: dbgui.c:61
NTSTATUS NTAPI DbgUiWaitStateChange(OUT PDBGUI_WAIT_STATE_CHANGE WaitStateChange, IN PLARGE_INTEGER TimeOut OPTIONAL)
Definition: dbgui.c:274
#define DBG_EXCEPTION_NOT_HANDLED
Definition: ntstatus.h:57
Definition: inflate.c:139
#define ERROR_SEM_TIMEOUT
Definition: winerror.h:193
#define DBG_PRINTEXCEPTION_WIDE_C
Definition: winnt_old.h:145

◆ WaitForDebugEventEx()

BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEventEx ( DEBUG_EVENT event,
DWORD  timeout 
)

Definition at line 460 of file sync.c.

461{
465
466 for (;;)
467 {
469 switch (status)
470 {
471 case STATUS_SUCCESS:
473 return TRUE;
474 case STATUS_USER_APC:
475 continue;
476 case STATUS_TIMEOUT:
478 return FALSE;
479 default:
480 return set_ntstatus( status );
481 }
482 }
483}

◆ WaitForMultipleObjects()

DWORD WINAPI DECLSPEC_HOTPATCH WaitForMultipleObjects ( DWORD  count,
const HANDLE handles,
BOOL  wait_all,
DWORD  timeout 
)

Definition at line 382 of file sync.c.

384{
385 return WaitForMultipleObjectsEx( count, handles, wait_all, timeout, FALSE );
386}
DWORD WINAPI DECLSPEC_HOTPATCH WaitForMultipleObjectsEx(DWORD count, const HANDLE *handles, BOOL wait_all, DWORD timeout, BOOL alertable)
Definition: sync.c:392
static EFI_HANDLE * handles
Definition: uefidisk.c:62

Referenced by test_WaitForMultipleObjects().

◆ WaitForMultipleObjectsEx()

DWORD WINAPI DECLSPEC_HOTPATCH WaitForMultipleObjectsEx ( DWORD  count,
const HANDLE handles,
BOOL  wait_all,
DWORD  timeout,
BOOL  alertable 
)

Definition at line 392 of file sync.c.

394{
398 unsigned int i;
399
401 {
403 return WAIT_FAILED;
404 }
405 for (i = 0; i < count; i++) hloc[i] = normalize_std_handle( handles[i] );
406
407 status = NtWaitForMultipleObjects( count, hloc, !wait_all, alertable,
409 if (HIWORD(status)) /* is it an error code? */
410 {
413 }
414 return status;
415}
NTSTATUS NTAPI NtWaitForMultipleObjects(IN ULONG ObjectCount, IN PHANDLE HandleArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, IN PLARGE_INTEGER TimeOut OPTIONAL)
Definition: obwait.c:46
#define MAXIMUM_WAIT_OBJECTS
Definition: winbase.h:437

Referenced by alertable_wait_thread(), WaitForMultipleObjects(), WaitForSingleObject(), and WaitForSingleObjectEx().

◆ WaitForSingleObject()

◆ WaitForSingleObjectEx()

DWORD WINAPI DECLSPEC_HOTPATCH WaitForSingleObjectEx ( HANDLE  handle,
DWORD  timeout,
BOOL  alertable 
)

Definition at line 373 of file sync.c.

374{
375 return WaitForMultipleObjectsEx( 1, &handle, FALSE, timeout, alertable );
376}

◆ WaitNamedPipeW()

BOOL WINAPI DECLSPEC_HOTPATCH WaitNamedPipeW ( LPCWSTR  name,
DWORD  timeout 
)

Definition at line 1613 of file sync.c.

1614{
1615 static const int prefix_len = sizeof(L"\\??\\PIPE\\") - sizeof(WCHAR);
1617 UNICODE_STRING nt_name, pipe_dev_name;
1618 FILE_PIPE_WAIT_FOR_BUFFER *pipe_wait;
1621 ULONG wait_size;
1622 HANDLE pipe_dev;
1623
1624 TRACE( "%s 0x%08lx\n", debugstr_w(name), timeout );
1625
1626 if (!RtlDosPathNameToNtPathName_U( name, &nt_name, NULL, NULL )) return FALSE;
1627
1628 if (nt_name.Length >= MAX_PATH * sizeof(WCHAR) ||
1629 nt_name.Length < prefix_len ||
1630 wcsnicmp( nt_name.Buffer, L"\\??\\PIPE\\", prefix_len / sizeof(WCHAR) ))
1631 {
1632 RtlFreeUnicodeString( &nt_name );
1634 return FALSE;
1635 }
1636
1637 wait_size = offsetof( FILE_PIPE_WAIT_FOR_BUFFER, Name[(nt_name.Length - prefix_len) / sizeof(WCHAR)] );
1638 if (!(pipe_wait = HeapAlloc( GetProcessHeap(), 0, wait_size)))
1639 {
1640 RtlFreeUnicodeString( &nt_name );
1642 return FALSE;
1643 }
1644
1645 pipe_dev_name.Buffer = nt_name.Buffer;
1646 pipe_dev_name.Length = prefix_len;
1647 pipe_dev_name.MaximumLength = prefix_len;
1652 if (status != STATUS_SUCCESS)
1653 {
1654 HeapFree( GetProcessHeap(), 0, pipe_wait );
1655 RtlFreeUnicodeString( &nt_name );
1657 return FALSE;
1658 }
1659
1662 pipe_wait->Timeout.QuadPart = ((ULONGLONG)0x7fffffff << 32) | 0xffffffff;
1663 else
1664 pipe_wait->Timeout.QuadPart = (ULONGLONG)timeout * -10000;
1665 pipe_wait->NameLength = nt_name.Length - prefix_len;
1666 memcpy( pipe_wait->Name, nt_name.Buffer + prefix_len/sizeof(WCHAR), pipe_wait->NameLength );
1667 RtlFreeUnicodeString( &nt_name );
1668
1670 pipe_wait, wait_size, NULL, 0 );
1671
1672 HeapFree( GetProcessHeap(), 0, pipe_wait );
1673 NtClose( pipe_dev );
1674 return set_ntstatus( status );
1675}
LPWSTR Name
Definition: desk.c:124
#define wcsnicmp
Definition: compat.h:14
#define FSCTL_PIPE_WAIT
Definition: winioctl.h:199
#define offsetof(TYPE, MEMBER)
LARGE_INTEGER Timeout
Definition: winioctl.h:457
USHORT MaximumLength
Definition: env_spec_w32.h:370
#define NMPWAIT_WAIT_FOREVER
Definition: winbase.h:141

Referenced by CallNamedPipeW().

◆ WaitOnAddress()

BOOL WINAPI DECLSPEC_HOTPATCH WaitOnAddress ( volatile void addr,
void cmp,
SIZE_T  size,
DWORD  timeout 
)

Definition at line 489 of file sync.c.

490{
491 LARGE_INTEGER to;
492
493 if (timeout != INFINITE)
494 {
495 to.QuadPart = -(LONGLONG)timeout * 10000;
496 return set_ntstatus( RtlWaitOnAddress( (const void *)addr, cmp, size, &to ));
497 }
498 return set_ntstatus( RtlWaitOnAddress( (const void *)addr, cmp, size, NULL ));
499}
GLenum const GLvoid * addr
Definition: glext.h:9621
#define cmp(status, error)
Definition: error.c:114
int64_t LONGLONG
Definition: typedefs.h:68

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( sync  )

Variable Documentation

◆ user_shared_data

const struct _KUSER_SHARED_DATA* user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000
static

Definition at line 43 of file sync.c.

Referenced by GetTickCount(), GetTickCount64(), QueryInterruptTime(), and test_NtGetTickCount().