From cf9f016820eb6335fedd43918f491ea7d757de92 Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Tue, 12 Dec 2017 18:20:56 +0100 Subject: [PATCH] win-capture: Rename structs to avoid SDK conflict Windows SDK 10.0.16299.0 defines these structures as part of winternl.h but using different types and names. Unfortunately there's no macro to detect the SDK version, so to avoid conflicting with newer / older SDKs the OBS structs have been renamed. --- plugins/win-capture/nt-stuff.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/win-capture/nt-stuff.h b/plugins/win-capture/nt-stuff.h index 15f0823d9..a8a3b1664 100644 --- a/plugins/win-capture/nt-stuff.h +++ b/plugins/win-capture/nt-stuff.h @@ -5,7 +5,7 @@ #define THREAD_STATE_WAITING 5 #define THREAD_WAIT_REASON_SUSPENDED 5 -typedef struct _SYSTEM_PROCESS_INFORMATION2 { +typedef struct _OBS_SYSTEM_PROCESS_INFORMATION2 { ULONG NextEntryOffset; ULONG ThreadCount; BYTE Reserved1[48]; @@ -18,9 +18,9 @@ typedef struct _SYSTEM_PROCESS_INFORMATION2 { SIZE_T PeakPagefileUsage; SIZE_T PrivatePageCount; LARGE_INTEGER Reserved6[6]; -} SYSTEM_PROCESS_INFORMATION2; +} OBS_SYSTEM_PROCESS_INFORMATION2; -typedef struct _SYSTEM_THREAD_INFORMATION { +typedef struct _OBS_SYSTEM_THREAD_INFORMATION { FILETIME KernelTime; FILETIME UserTime; FILETIME CreateTime; @@ -34,7 +34,7 @@ typedef struct _SYSTEM_THREAD_INFORMATION { DWORD ThreadState; DWORD WaitReason; DWORD Reserved1; -} SYSTEM_THREAD_INFORMATION; +} OBS_SYSTEM_THREAD_INFORMATION; #ifndef NT_SUCCESS #define NT_SUCCESS(status) ((NTSTATUS)(status) >= 0) @@ -137,7 +137,7 @@ static bool thread_is_suspended(DWORD process_id, DWORD thread_id) data = malloc(size); } - SYSTEM_PROCESS_INFORMATION2 *spi = data; + OBS_SYSTEM_PROCESS_INFORMATION2 *spi = data; for (;;) { if (spi->UniqueProcessId == (HANDLE)process_id) { @@ -148,12 +148,12 @@ static bool thread_is_suspended(DWORD process_id, DWORD thread_id) if (!offset) goto fail; - spi = (SYSTEM_PROCESS_INFORMATION2*)((BYTE*)spi + offset); + spi = (OBS_SYSTEM_PROCESS_INFORMATION2*)((BYTE*)spi + offset); } - SYSTEM_THREAD_INFORMATION *sti; - SYSTEM_THREAD_INFORMATION *info = NULL; - sti = (SYSTEM_THREAD_INFORMATION*)((BYTE*)spi + sizeof(*spi)); + OBS_SYSTEM_THREAD_INFORMATION *sti; + OBS_SYSTEM_THREAD_INFORMATION *info = NULL; + sti = (OBS_SYSTEM_THREAD_INFORMATION*)((BYTE*)spi + sizeof(*spi)); for (ULONG i = 0; i < spi->ThreadCount; i++) { if (sti[i].UniqueThreadId == (HANDLE)thread_id) {