WindowsXP-SP1/base/published/pchrexec.w
2020-09-30 16:53:49 +02:00

100 lines
2.4 KiB
OpenEdge ABL

#ifndef PCHREXEC_H
#define PCHREXEC_H
#define ERRORREP_HANG_PIPENAME L"\\\\.\\pipe\\PCHHangRepExecPipe"
#define ERRORREP_FAULT_PIPENAME L"\\\\.\\pipe\\PCHFaultRepExecPipe"
#define ERRORREP_PIPE_BUF_SIZE 8192
/*
* Data structure passed for a remote exec request
*
* NOTE: pointers are self relative
*
*/
typedef enum tagEExecServStatus
{
essErr = 0,
essOk,
essOkQueued,
} EExecServStatus;
// *** Note: the size of these structures must be divisible by sizeof(WCHAR)
// or we'll get an alignment fault on ia64 (and other alignment
// sensitive processors)
typedef struct tagSPCHExecServGenericReply
{
DWORD cb;
EExecServStatus ess;
DWORD dwErr;
} SPCHExecServGenericReply;
typedef struct tagSPCHExecServHangRequest
{
DWORD cbTotal;
DWORD cbESR;
DWORD pidReqProcess;
BOOL fIs64bit;
ULONG ulSessionId;
UINT64 wszEventName;
DWORD dwpidHung;
DWORD dwtidHung;
} SPCHExecServHangRequest;
// this structure MUST have the same initial 3 elements as SPCHExecServGenericReply
typedef struct tagSPCHExecServHangReply
{
DWORD cb;
EExecServStatus ess;
DWORD dwErr;
// NOTE: The handle for hProcess is converted from the remove exec
// server into the requestors process using the pidReqProcess
// in the request.
HANDLE hProcess;
} SPCHExecServHangReply;
typedef struct tagSPCHExecServFaultRequest
{
DWORD cbTotal;
DWORD cbESR;
DWORD pidReqProcess;
BOOL fIs64bit;
DWORD thidFault;
UINT64 pvFaultAddr;
UINT64 wszExe;
UINT64 pEP;
} SPCHExecServFaultRequest;
// this structure MUST have the same initial 3 elements as SPCHExecServGenericReply
typedef struct tagSPCHExecServFaultReply
{
DWORD cb;
EExecServStatus ess;
DWORD dwErr;
// NOTE: The handle for hProcess is converted from the remove exec
// server into the requestors process using the pidReqProcess
// in the request.
HANDLE hProcess;
// these point into data immediately following the struct
UINT64 wszDir;
UINT64 wszDumpName;
} SPCHExecServFaultReply;
#endif