[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