ntdll: Move the event functions to the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
39915c9bc4
commit
efd59e378c
|
@ -285,28 +285,10 @@ NTSTATUS WINAPI NtReleaseSemaphore( HANDLE handle, ULONG count, PULONG previous
|
||||||
* NtCreateEvent (NTDLL.@)
|
* NtCreateEvent (NTDLL.@)
|
||||||
* ZwCreateEvent (NTDLL.@)
|
* ZwCreateEvent (NTDLL.@)
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtCreateEvent( PHANDLE EventHandle, ACCESS_MASK DesiredAccess,
|
NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr,
|
||||||
const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN InitialState)
|
EVENT_TYPE type, BOOLEAN state )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtCreateEvent( handle, access, attr, type, state );
|
||||||
data_size_t len;
|
|
||||||
struct object_attributes *objattr;
|
|
||||||
|
|
||||||
if ((ret = alloc_object_attributes( attr, &objattr, &len ))) return ret;
|
|
||||||
|
|
||||||
SERVER_START_REQ( create_event )
|
|
||||||
{
|
|
||||||
req->access = DesiredAccess;
|
|
||||||
req->manual_reset = (type == NotificationEvent);
|
|
||||||
req->initial_state = InitialState;
|
|
||||||
wine_server_add_data( req, objattr, len );
|
|
||||||
ret = wine_server_call( req );
|
|
||||||
*EventHandle = wine_server_ptr_handle( reply->handle );
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
|
|
||||||
RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -315,22 +297,7 @@ NTSTATUS WINAPI NtCreateEvent( PHANDLE EventHandle, ACCESS_MASK DesiredAccess,
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr )
|
NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtOpenEvent( handle, access, attr );
|
||||||
|
|
||||||
if ((ret = validate_open_object_attributes( attr ))) return ret;
|
|
||||||
|
|
||||||
SERVER_START_REQ( open_event )
|
|
||||||
{
|
|
||||||
req->access = access;
|
|
||||||
req->attributes = attr->Attributes;
|
|
||||||
req->rootdir = wine_server_obj_handle( attr->RootDirectory );
|
|
||||||
if (attr->ObjectName)
|
|
||||||
wine_server_add_data( req, attr->ObjectName->Buffer, attr->ObjectName->Length );
|
|
||||||
ret = wine_server_call( req );
|
|
||||||
*handle = wine_server_ptr_handle( reply->handle );
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -340,16 +307,7 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state )
|
NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtSetEvent( handle, prev_state );
|
||||||
SERVER_START_REQ( event_op )
|
|
||||||
{
|
|
||||||
req->handle = wine_server_obj_handle( handle );
|
|
||||||
req->op = SET_EVENT;
|
|
||||||
ret = wine_server_call( req );
|
|
||||||
if (!ret && prev_state) *prev_state = reply->state;
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -357,16 +315,7 @@ NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state )
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state )
|
NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtResetEvent( handle, prev_state );
|
||||||
SERVER_START_REQ( event_op )
|
|
||||||
{
|
|
||||||
req->handle = wine_server_obj_handle( handle );
|
|
||||||
req->op = RESET_EVENT;
|
|
||||||
ret = wine_server_call( req );
|
|
||||||
if (!ret && prev_state) *prev_state = reply->state;
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -377,7 +326,7 @@ NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state )
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtClearEvent ( HANDLE handle )
|
NTSTATUS WINAPI NtClearEvent ( HANDLE handle )
|
||||||
{
|
{
|
||||||
return NtResetEvent( handle, NULL );
|
return unix_funcs->NtClearEvent( handle );
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -388,17 +337,7 @@ NTSTATUS WINAPI NtClearEvent ( HANDLE handle )
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state )
|
NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtPulseEvent( handle, prev_state );
|
||||||
|
|
||||||
SERVER_START_REQ( event_op )
|
|
||||||
{
|
|
||||||
req->handle = wine_server_obj_handle( handle );
|
|
||||||
req->op = PULSE_EVENT;
|
|
||||||
ret = wine_server_call( req );
|
|
||||||
if (!ret && prev_state) *prev_state = reply->state;
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -407,33 +346,7 @@ NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state )
|
||||||
NTSTATUS WINAPI NtQueryEvent( HANDLE handle, EVENT_INFORMATION_CLASS class,
|
NTSTATUS WINAPI NtQueryEvent( HANDLE handle, EVENT_INFORMATION_CLASS class,
|
||||||
void *info, ULONG len, ULONG *ret_len )
|
void *info, ULONG len, ULONG *ret_len )
|
||||||
{
|
{
|
||||||
NTSTATUS ret;
|
return unix_funcs->NtQueryEvent( handle, class, info, len, ret_len );
|
||||||
EVENT_BASIC_INFORMATION *out = info;
|
|
||||||
|
|
||||||
TRACE("(%p, %u, %p, %u, %p)\n", handle, class, info, len, ret_len);
|
|
||||||
|
|
||||||
if (class != EventBasicInformation)
|
|
||||||
{
|
|
||||||
FIXME("(%p, %d, %d) Unknown class\n",
|
|
||||||
handle, class, len);
|
|
||||||
return STATUS_INVALID_INFO_CLASS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len != sizeof(EVENT_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
|
|
||||||
SERVER_START_REQ( query_event )
|
|
||||||
{
|
|
||||||
req->handle = wine_server_obj_handle( handle );
|
|
||||||
if (!(ret = wine_server_call( req )))
|
|
||||||
{
|
|
||||||
out->EventType = reply->manual_reset ? NotificationEvent : SynchronizationEvent;
|
|
||||||
out->EventState = reply->state;
|
|
||||||
if (ret_len) *ret_len = sizeof(EVENT_BASIC_INFORMATION);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SERVER_END_REQ;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -985,7 +985,9 @@ static struct unix_funcs unix_funcs =
|
||||||
{
|
{
|
||||||
NtAllocateVirtualMemory,
|
NtAllocateVirtualMemory,
|
||||||
NtAreMappedFilesTheSame,
|
NtAreMappedFilesTheSame,
|
||||||
|
NtClearEvent,
|
||||||
NtClose,
|
NtClose,
|
||||||
|
NtCreateEvent,
|
||||||
NtCreateSemaphore,
|
NtCreateSemaphore,
|
||||||
NtCurrentTeb,
|
NtCurrentTeb,
|
||||||
NtDelayExecution,
|
NtDelayExecution,
|
||||||
|
@ -996,15 +998,20 @@ static struct unix_funcs unix_funcs =
|
||||||
NtGetWriteWatch,
|
NtGetWriteWatch,
|
||||||
NtLockVirtualMemory,
|
NtLockVirtualMemory,
|
||||||
NtMapViewOfSection,
|
NtMapViewOfSection,
|
||||||
|
NtOpenEvent,
|
||||||
NtOpenSemaphore,
|
NtOpenSemaphore,
|
||||||
NtProtectVirtualMemory,
|
NtProtectVirtualMemory,
|
||||||
|
NtPulseEvent,
|
||||||
|
NtQueryEvent,
|
||||||
NtQuerySection,
|
NtQuerySection,
|
||||||
NtQuerySemaphore,
|
NtQuerySemaphore,
|
||||||
NtQueryVirtualMemory,
|
NtQueryVirtualMemory,
|
||||||
NtReadVirtualMemory,
|
NtReadVirtualMemory,
|
||||||
NtReleaseSemaphore,
|
NtReleaseSemaphore,
|
||||||
|
NtResetEvent,
|
||||||
NtResetWriteWatch,
|
NtResetWriteWatch,
|
||||||
NtSetContextThread,
|
NtSetContextThread,
|
||||||
|
NtSetEvent,
|
||||||
NtSetLdtEntries,
|
NtSetLdtEntries,
|
||||||
NtSignalAndWaitForSingleObject,
|
NtSignalAndWaitForSingleObject,
|
||||||
NtUnlockVirtualMemory,
|
NtUnlockVirtualMemory,
|
||||||
|
|
|
@ -274,6 +274,160 @@ NTSTATUS WINAPI NtReleaseSemaphore( HANDLE handle, ULONG count, ULONG *previous
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* NtCreateEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr,
|
||||||
|
EVENT_TYPE type, BOOLEAN state )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
data_size_t len;
|
||||||
|
struct object_attributes *objattr;
|
||||||
|
|
||||||
|
if ((ret = alloc_object_attributes( attr, &objattr, &len ))) return ret;
|
||||||
|
|
||||||
|
SERVER_START_REQ( create_event )
|
||||||
|
{
|
||||||
|
req->access = access;
|
||||||
|
req->manual_reset = (type == NotificationEvent);
|
||||||
|
req->initial_state = state;
|
||||||
|
wine_server_add_data( req, objattr, len );
|
||||||
|
ret = wine_server_call( req );
|
||||||
|
*handle = wine_server_ptr_handle( reply->handle );
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
|
||||||
|
RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtOpenEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
|
||||||
|
if ((ret = validate_open_object_attributes( attr ))) return ret;
|
||||||
|
|
||||||
|
SERVER_START_REQ( open_event )
|
||||||
|
{
|
||||||
|
req->access = access;
|
||||||
|
req->attributes = attr->Attributes;
|
||||||
|
req->rootdir = wine_server_obj_handle( attr->RootDirectory );
|
||||||
|
if (attr->ObjectName)
|
||||||
|
wine_server_add_data( req, attr->ObjectName->Buffer, attr->ObjectName->Length );
|
||||||
|
ret = wine_server_call( req );
|
||||||
|
*handle = wine_server_ptr_handle( reply->handle );
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtSetEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
|
||||||
|
SERVER_START_REQ( event_op )
|
||||||
|
{
|
||||||
|
req->handle = wine_server_obj_handle( handle );
|
||||||
|
req->op = SET_EVENT;
|
||||||
|
ret = wine_server_call( req );
|
||||||
|
if (!ret && prev_state) *prev_state = reply->state;
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtResetEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
|
||||||
|
SERVER_START_REQ( event_op )
|
||||||
|
{
|
||||||
|
req->handle = wine_server_obj_handle( handle );
|
||||||
|
req->op = RESET_EVENT;
|
||||||
|
ret = wine_server_call( req );
|
||||||
|
if (!ret && prev_state) *prev_state = reply->state;
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtClearEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtClearEvent( HANDLE handle )
|
||||||
|
{
|
||||||
|
/* FIXME: same as NtResetEvent ??? */
|
||||||
|
return NtResetEvent( handle, NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtPulseEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
|
||||||
|
SERVER_START_REQ( event_op )
|
||||||
|
{
|
||||||
|
req->handle = wine_server_obj_handle( handle );
|
||||||
|
req->op = PULSE_EVENT;
|
||||||
|
ret = wine_server_call( req );
|
||||||
|
if (!ret && prev_state) *prev_state = reply->state;
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* NtQueryEvent (NTDLL.@)
|
||||||
|
*/
|
||||||
|
NTSTATUS WINAPI NtQueryEvent( HANDLE handle, EVENT_INFORMATION_CLASS class,
|
||||||
|
void *info, ULONG len, ULONG *ret_len )
|
||||||
|
{
|
||||||
|
NTSTATUS ret;
|
||||||
|
EVENT_BASIC_INFORMATION *out = info;
|
||||||
|
|
||||||
|
TRACE("(%p, %u, %p, %u, %p)\n", handle, class, info, len, ret_len);
|
||||||
|
|
||||||
|
if (class != EventBasicInformation)
|
||||||
|
{
|
||||||
|
FIXME("(%p, %d, %d) Unknown class\n",
|
||||||
|
handle, class, len);
|
||||||
|
return STATUS_INVALID_INFO_CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len != sizeof(EVENT_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH;
|
||||||
|
|
||||||
|
SERVER_START_REQ( query_event )
|
||||||
|
{
|
||||||
|
req->handle = wine_server_obj_handle( handle );
|
||||||
|
if (!(ret = wine_server_call( req )))
|
||||||
|
{
|
||||||
|
out->EventType = reply->manual_reset ? NotificationEvent : SynchronizationEvent;
|
||||||
|
out->EventState = reply->state;
|
||||||
|
if (ret_len) *ret_len = sizeof(EVENT_BASIC_INFORMATION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* NtWaitForMultipleObjects (NTDLL.@)
|
* NtWaitForMultipleObjects (NTDLL.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct ldt_copy;
|
||||||
struct msghdr;
|
struct msghdr;
|
||||||
|
|
||||||
/* increment this when you change the function table */
|
/* increment this when you change the function table */
|
||||||
#define NTDLL_UNIXLIB_VERSION 22
|
#define NTDLL_UNIXLIB_VERSION 23
|
||||||
|
|
||||||
struct unix_funcs
|
struct unix_funcs
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,10 @@ struct unix_funcs
|
||||||
NTSTATUS (WINAPI *NtAllocateVirtualMemory)( HANDLE process, PVOID *ret, ULONG_PTR zero_bits,
|
NTSTATUS (WINAPI *NtAllocateVirtualMemory)( HANDLE process, PVOID *ret, ULONG_PTR zero_bits,
|
||||||
SIZE_T *size_ptr, ULONG type, ULONG protect );
|
SIZE_T *size_ptr, ULONG type, ULONG protect );
|
||||||
NTSTATUS (WINAPI *NtAreMappedFilesTheSame)(PVOID addr1, PVOID addr2);
|
NTSTATUS (WINAPI *NtAreMappedFilesTheSame)(PVOID addr1, PVOID addr2);
|
||||||
|
NTSTATUS (WINAPI *NtClearEvent)( HANDLE handle );
|
||||||
NTSTATUS (WINAPI *NtClose)( HANDLE handle );
|
NTSTATUS (WINAPI *NtClose)( HANDLE handle );
|
||||||
|
NTSTATUS (WINAPI *NtCreateEvent)( HANDLE *handle, ACCESS_MASK access,
|
||||||
|
const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN state );
|
||||||
NTSTATUS (WINAPI *NtCreateSemaphore)( HANDLE *handle, ACCESS_MASK access,
|
NTSTATUS (WINAPI *NtCreateSemaphore)( HANDLE *handle, ACCESS_MASK access,
|
||||||
const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max );
|
const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max );
|
||||||
TEB * (WINAPI *NtCurrentTeb)(void);
|
TEB * (WINAPI *NtCurrentTeb)(void);
|
||||||
|
@ -56,10 +59,15 @@ struct unix_funcs
|
||||||
ULONG_PTR zero_bits, SIZE_T commit_size,
|
ULONG_PTR zero_bits, SIZE_T commit_size,
|
||||||
const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr,
|
const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr,
|
||||||
SECTION_INHERIT inherit, ULONG alloc_type, ULONG protect );
|
SECTION_INHERIT inherit, ULONG alloc_type, ULONG protect );
|
||||||
|
NTSTATUS (WINAPI *NtOpenEvent)( HANDLE *handle, ACCESS_MASK access,
|
||||||
|
const OBJECT_ATTRIBUTES *attr );
|
||||||
NTSTATUS (WINAPI *NtOpenSemaphore)( HANDLE *handle, ACCESS_MASK access,
|
NTSTATUS (WINAPI *NtOpenSemaphore)( HANDLE *handle, ACCESS_MASK access,
|
||||||
const OBJECT_ATTRIBUTES *attr );
|
const OBJECT_ATTRIBUTES *attr );
|
||||||
NTSTATUS (WINAPI *NtProtectVirtualMemory)( HANDLE process, PVOID *addr_ptr, SIZE_T *size_ptr,
|
NTSTATUS (WINAPI *NtProtectVirtualMemory)( HANDLE process, PVOID *addr_ptr, SIZE_T *size_ptr,
|
||||||
ULONG new_prot, ULONG *old_prot );
|
ULONG new_prot, ULONG *old_prot );
|
||||||
|
NTSTATUS (WINAPI *NtPulseEvent)( HANDLE handle, LONG *prev_state );
|
||||||
|
NTSTATUS (WINAPI *NtQueryEvent)( HANDLE handle, EVENT_INFORMATION_CLASS class,
|
||||||
|
void *info, ULONG len, ULONG *ret_len );
|
||||||
NTSTATUS (WINAPI *NtQuerySection)( HANDLE handle, SECTION_INFORMATION_CLASS class,
|
NTSTATUS (WINAPI *NtQuerySection)( HANDLE handle, SECTION_INFORMATION_CLASS class,
|
||||||
void *ptr, SIZE_T size, SIZE_T *ret_size );
|
void *ptr, SIZE_T size, SIZE_T *ret_size );
|
||||||
NTSTATUS (WINAPI *NtQuerySemaphore)( HANDLE handle, SEMAPHORE_INFORMATION_CLASS class,
|
NTSTATUS (WINAPI *NtQuerySemaphore)( HANDLE handle, SEMAPHORE_INFORMATION_CLASS class,
|
||||||
|
@ -70,8 +78,10 @@ struct unix_funcs
|
||||||
NTSTATUS (WINAPI *NtReadVirtualMemory)( HANDLE process, const void *addr, void *buffer,
|
NTSTATUS (WINAPI *NtReadVirtualMemory)( HANDLE process, const void *addr, void *buffer,
|
||||||
SIZE_T size, SIZE_T *bytes_read );
|
SIZE_T size, SIZE_T *bytes_read );
|
||||||
NTSTATUS (WINAPI *NtReleaseSemaphore)( HANDLE handle, ULONG count, ULONG *previous );
|
NTSTATUS (WINAPI *NtReleaseSemaphore)( HANDLE handle, ULONG count, ULONG *previous );
|
||||||
|
NTSTATUS (WINAPI *NtResetEvent)( HANDLE handle, LONG *prev_state );
|
||||||
NTSTATUS (WINAPI *NtResetWriteWatch)( HANDLE process, PVOID base, SIZE_T size );
|
NTSTATUS (WINAPI *NtResetWriteWatch)( HANDLE process, PVOID base, SIZE_T size );
|
||||||
NTSTATUS (WINAPI *NtSetContextThread)( HANDLE handle, const CONTEXT *context );
|
NTSTATUS (WINAPI *NtSetContextThread)( HANDLE handle, const CONTEXT *context );
|
||||||
|
NTSTATUS (WINAPI *NtSetEvent)( HANDLE handle, LONG *prev_state );
|
||||||
NTSTATUS (WINAPI *NtSetLdtEntries)( ULONG sel1, LDT_ENTRY entry1, ULONG sel2, LDT_ENTRY entry2 );
|
NTSTATUS (WINAPI *NtSetLdtEntries)( ULONG sel1, LDT_ENTRY entry1, ULONG sel2, LDT_ENTRY entry2 );
|
||||||
NTSTATUS (WINAPI *NtSignalAndWaitForSingleObject)( HANDLE signal, HANDLE wait,
|
NTSTATUS (WINAPI *NtSignalAndWaitForSingleObject)( HANDLE signal, HANDLE wait,
|
||||||
BOOLEAN alertable, const LARGE_INTEGER *timeout );
|
BOOLEAN alertable, const LARGE_INTEGER *timeout );
|
||||||
|
|
Loading…
Reference in New Issue