mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 00:55:09 +00:00
83 lines
2.3 KiB
C
83 lines
2.3 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
#ifndef _INC_WCT
|
|
#define _INC_WCT
|
|
#if (_WIN32_WINNT >= 0x0600)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef LPVOID HWCT;
|
|
|
|
typedef enum _WCT_OBJECT_TYPE {
|
|
WctCriticalSectionType = 1,
|
|
WctSendMessageType,
|
|
WctMutexType,
|
|
WctAlpcType,
|
|
WctComType,
|
|
WctThreadWaitType,
|
|
WctProcessWaitType,
|
|
WctThreadType,
|
|
WctComActivationType,
|
|
WctUnknownType
|
|
} WCT_OBJECT_TYPE;
|
|
|
|
typedef enum _WCT_OBJECT_STATUS {
|
|
WctStatusNoAccess = 1,
|
|
WctStatusRunning,
|
|
WctStatusBlocked,
|
|
WctStatusPidOnly,
|
|
WctStatusPidOnlyRpcss,
|
|
WctStatusOwned,
|
|
WctStatusNotOwned,
|
|
WctStatusAbandoned,
|
|
WctStatusUnknown,
|
|
WctStatusError
|
|
} WCT_OBJECT_STATUS;
|
|
|
|
/* According to http://msdn.microsoft.com/en-us/magazine/cc163395.aspx
|
|
RealObjectName has 0x8 offset and TimeOutLowPart has 0x108
|
|
WCT_OBJNAME_LENGTH assumed to be 128 ((0x108-0x8)/sizeof (ushort) = 128)
|
|
*/
|
|
#define WCT_OBJNAME_LENGTH 128
|
|
|
|
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;
|
|
WINBOOL Alertable;
|
|
} LockObject;
|
|
struct {
|
|
DWORD ProcessId;
|
|
DWORD ThreadId;
|
|
DWORD WaitTime;
|
|
DWORD ContextSwitches;
|
|
} ThreadObject;
|
|
};
|
|
} WAITCHAIN_NODE_INFO, *PWAITCHAIN_NODE_INFO;
|
|
|
|
typedef VOID (CALLBACK *PWAITCHAINCALLBACK)(HWCT WctHandle,DWORD_PTR Context,DWORD CallbackStatus,LPDWORD NodeCount,PWAITCHAIN_NODE_INFO NodeInfoArray,LPBOOL IsCycle);
|
|
|
|
HWCT WINAPI OpenThreadWaitChainSession(DWORD Flags,PWAITCHAINCALLBACK callback);
|
|
VOID WINAPI CloseThreadWaitChainSession(HWCT WctHandle);
|
|
WINBOOL WINAPI GetThreadWaitChain(HWCT WctHandle,DWORD_PTR Context,DWORD Flags,DWORD ThreadId,LPDWORD NodeCount,PWAITCHAIN_NODE_INFO NodeInfoArray,LPBOOL IsCycle);
|
|
|
|
/* Unknown Callbacks */
|
|
typedef LPVOID (WINAPI *PCOGETCALLSTATE)();
|
|
typedef LPVOID (WINAPI *PCOGETACTIVATIONSTATE)();
|
|
|
|
VOID WINAPI RegisterWaitChainCOMCallback(PCOGETCALLSTATE CallStateCallback,PCOGETACTIVATIONSTATE ActivationStateCallback);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* (_WIN32_WINNT >= 0x0600) */
|
|
#endif /*_INC_WCT*/
|