2015-08-03 11:26:33 +02:00
|
|
|
/*
|
|
|
|
* Copyright 2015 Hans Leidekker for CodeWeavers
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __WINE_WCT_H
|
|
|
|
#define __WINE_WCT_H
|
|
|
|
|
2022-03-13 00:27:57 +01:00
|
|
|
#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);
|
2015-08-03 11:26:33 +02:00
|
|
|
typedef HRESULT (WINAPI *PCOGETCALLSTATE)(int,PULONG);
|
|
|
|
typedef HRESULT (WINAPI *PCOGETACTIVATIONSTATE)(GUID,DWORD,DWORD*);
|
|
|
|
|
2022-03-13 00:27:57 +01:00
|
|
|
VOID WINAPI CloseThreadWaitChainSession(HWCT);
|
|
|
|
BOOL WINAPI GetThreadWaitChain(HWCT,DWORD_PTR,DWORD,DWORD,LPDWORD,PWAITCHAIN_NODE_INFO,LPBOOL);
|
|
|
|
HWCT WINAPI OpenThreadWaitChainSession(DWORD,PWAITCHAINCALLBACK);
|
2015-08-03 11:26:33 +02:00
|
|
|
void WINAPI RegisterWaitChainCOMCallback(PCOGETCALLSTATE,PCOGETACTIVATIONSTATE);
|
|
|
|
|
2022-03-13 00:27:57 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2015-08-03 11:26:33 +02:00
|
|
|
#endif /* __WINE_WCT_H */
|