[PATCH 1/3] include: Add more Wait Chain Traversal definitions.

Gijs Vermeulen gijsvrm at gmail.com
Sat Mar 12 17:27:57 CST 2022


Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
This series allows Cubase 12 to proceed to the next problem.

 include/wct.h | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)

diff --git a/include/wct.h b/include/wct.h
index 0cef59d7174e..6c239786916e 100644
--- a/include/wct.h
+++ b/include/wct.h
@@ -19,9 +19,85 @@
 #ifndef __WINE_WCT_H
 #define __WINE_WCT_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WCT_MAX_NODE_COUNT  16
+#define WCT_OBJNAME_LENGTH  128
+
+#define WCT_ASYNC_OPEN_FLAG     0x1
+#define WCTP_OPEN_ALL_FLAGS     (WCT_ASYNC_OPEN_FLAG)
+
+#define WCT_OUT_OF_PROC_FLAG        0x1
+#define WCT_OUT_OF_PROC_COM_FLAG    0x2
+#define WCT_OUT_OF_PROC_CS_FLAG     0x4
+#define WCT_NETWORK_IO_FLAG         0x8
+#define WCTP_GETINFO_ALL_FLAGS      (WCT_OUT_OF_PROC_FLAG|WCT_OUT_OF_PROC_COM_FLAG|WCT_OUT_OF_PROC_CS_FLAG)
+
+typedef enum _WCT_OBJECT_TYPE
+{
+    WctCriticalSectionType = 1,
+    WctSendMessageType,
+    WctMutexType,
+    WctAlpcType,
+    WctComType,
+    WctThreadWaitType,
+    WctProcessWaitType,
+    WctThreadType,
+    WctComActivationType,
+    WctUnknownType,
+    WctSocketIoType,
+    WctSmbIoType,
+    WctMaxType
+} WCT_OBJECT_TYPE;
+
+typedef enum _WCT_OBJECT_STATUS
+{
+    WctStatusNoAccess = 1,
+    WctStatusRunning,
+    WctStatusBlocked,
+    WctStatusPidOnly,
+    WctStatusPidOnlyRpcss,
+    WctStatusOwned,
+    WctStatusNotOwned,
+    WctStatusAbandoned,
+    WctStatusUnknown,
+    WctStatusError,
+    WctStatusMax
+} WCT_OBJECT_STATUS;
+
+typedef struct _WAITCHAIN_NODE_INFO
+{
+    WCT_OBJECT_TYPE   ObjectType;
+    WCT_OBJECT_STATUS ObjectStatus;
+    __C89_NAMELESS union {
+        struct {
+            WCHAR ObjectName[WCT_OBJNAME_LENGTH];
+            LARGE_INTEGER Timeout;
+            BOOL Alertable;
+        } LockObject;
+        struct {
+            DWORD ProcessId;
+            DWORD ThreadId;
+            DWORD WaitTime;
+            DWORD ContextSwitches;
+        } ThreadObject;
+    };
+} WAITCHAIN_NODE_INFO, *PWAITCHAIN_NODE_INFO;
+
+typedef LPVOID HWCT;
+typedef VOID (CALLBACK *PWAITCHAINCALLBACK) (HWCT,DWORD_PTR,DWORD,LPDWORD,PWAITCHAIN_NODE_INFO,LPBOOL);
 typedef HRESULT (WINAPI *PCOGETCALLSTATE)(int,PULONG);
 typedef HRESULT (WINAPI *PCOGETACTIVATIONSTATE)(GUID,DWORD,DWORD*);
 
+VOID WINAPI CloseThreadWaitChainSession(HWCT);
+BOOL WINAPI GetThreadWaitChain(HWCT,DWORD_PTR,DWORD,DWORD,LPDWORD,PWAITCHAIN_NODE_INFO,LPBOOL);
+HWCT WINAPI OpenThreadWaitChainSession(DWORD,PWAITCHAINCALLBACK);
 void WINAPI RegisterWaitChainCOMCallback(PCOGETCALLSTATE,PCOGETACTIVATIONSTATE);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* __WINE_WCT_H */
-- 
2.35.1




More information about the wine-devel mailing list