diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 0f601d8ade7..808635dccc6 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -671,7 +671,7 @@ # @ stub GetVolumePathNamesForVolumeNameW @ stdcall GetWindowsDirectoryA(ptr long) @ stdcall GetWindowsDirectoryW(ptr long) -@ stub GetWriteWatch +@ stdcall GetWriteWatch(long ptr long ptr ptr ptr) @ stdcall GlobalAddAtomA(str) @ stdcall GlobalAddAtomW(wstr) @ stdcall GlobalAlloc(long long) @@ -917,7 +917,7 @@ @ stub RequestDeviceWakeup @ stdcall RequestWakeupLatency(long) @ stdcall ResetEvent(long) -@ stub ResetWriteWatch +@ stdcall ResetWriteWatch(ptr long) @ stdcall RestoreLastError(long) ntdll.RtlRestoreLastWin32Error @ stdcall ResumeThread(long) # @ stub RtlCaptureContext ( -> ntdll.RtlCaptureContext) diff --git a/dlls/kernel32/virtual.c b/dlls/kernel32/virtual.c index 6a128853689..56c72285a7b 100644 --- a/dlls/kernel32/virtual.c +++ b/dlls/kernel32/virtual.c @@ -601,6 +601,33 @@ BOOL WINAPI FlushViewOfFile( LPCVOID base, SIZE_T size ) } +/*********************************************************************** + * GetWriteWatch (KERNEL32.@) + */ +UINT WINAPI GetWriteWatch( DWORD flags, LPVOID base, SIZE_T size, LPVOID *addresses, + ULONG_PTR *count, ULONG *granularity ) +{ + NTSTATUS status; + + status = NtGetWriteWatch( GetCurrentProcess(), flags, base, size, addresses, count, granularity ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return status ? ~0u : 0; +} + + +/*********************************************************************** + * ResetWriteWatch (KERNEL32.@) + */ +UINT WINAPI ResetWriteWatch( LPVOID base, SIZE_T size ) +{ + NTSTATUS status; + + status = NtResetWriteWatch( GetCurrentProcess(), base, size ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return status ? ~0u : 0; +} + + /*********************************************************************** * IsBadReadPtr (KERNEL32.@) * diff --git a/include/winbase.h b/include/winbase.h index a7733b02734..714a6700f4c 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1759,6 +1759,7 @@ WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DW WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT); WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT); #define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory) +WINBASEAPI UINT WINAPI GetWriteWatch(DWORD,LPVOID,SIZE_T,LPVOID*,ULONG_PTR*,ULONG*); WINBASEAPI ATOM WINAPI GlobalAddAtomA(LPCSTR); WINBASEAPI ATOM WINAPI GlobalAddAtomW(LPCWSTR); #define GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom) @@ -1989,6 +1990,7 @@ WINADVAPI BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWOR WINBASEAPI BOOL WINAPI RequestWakeupLatency(LATENCY_TIME latency); #define ReportEvent WINELIB_NAME_AW(ReportEvent) WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); +WINBASEAPI UINT WINAPI ResetWriteWatch(LPVOID,SIZE_T); WINBASEAPI DWORD WINAPI ResumeThread(HANDLE); WINADVAPI BOOL WINAPI RevertToSelf(void); WINBASEAPI DWORD WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);