Gijs Vermeulen : include: Add more Wait Chain Traversal definitions.
Alexandre Julliard
julliard at winehq.org
Mon Mar 14 17:47:36 CDT 2022
Module: wine
Branch: master
Commit: e3421d50fd1b1273e1d5758666c72e069a9597f9
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e3421d50fd1b1273e1d5758666c72e069a9597f9
Author: Gijs Vermeulen <gijsvrm at gmail.com>
Date: Sun Mar 13 00:27:57 2022 +0100
include: Add more Wait Chain Traversal definitions.
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/wct.h | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/include/wct.h b/include/wct.h
index 0cef59d7174..6c239786916 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 */
More information about the wine-cvs
mailing list