1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * 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*/
|