218 lines
3.7 KiB
C
218 lines
3.7 KiB
C
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
w64logp.h
|
|
|
|
Abstract:
|
|
|
|
Private header for wow64log.dll
|
|
|
|
Author:
|
|
|
|
03-OCt-1999 SamerA
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _W64LOGP_INCLUDE
|
|
#define _W64LOGP_INCLUDE
|
|
|
|
#define _WOW64LOGAPI_
|
|
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
#include <windef.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include "nt32.h"
|
|
#include "wow64.h"
|
|
#include "wow64log.h"
|
|
|
|
//
|
|
// bring in INVALID_HANDLE_VALUE
|
|
//
|
|
#include "winbase.h"
|
|
|
|
|
|
//
|
|
// Max buffer size for output logging
|
|
//
|
|
#define MAX_LOG_BUFFER 1024
|
|
|
|
//
|
|
// Default logging flags if no reg value is found
|
|
//
|
|
#define LF_DEFAULT (LF_ERROR)
|
|
|
|
|
|
//
|
|
// Prototype for data type handler log function
|
|
//
|
|
typedef NTSTATUS (*PFNLOGDATATYPEHANDLER)(PLOGINFO,
|
|
ULONG_PTR,
|
|
PSZ,
|
|
BOOLEAN);
|
|
|
|
typedef struct _LOGDATATYPE
|
|
{
|
|
PFNLOGDATATYPEHANDLER Handler;
|
|
} LOGDATATYPE, *PLOGDATATYPE;
|
|
|
|
//
|
|
// The layout of each entry in thunk debug info should be as follow :
|
|
//
|
|
// "ServiceName1", ServiceNumber, NumerOfArgument,
|
|
// "ArgName1", ArgType1, ...., ArgNameN, ArgTypeN
|
|
// "ServiceName2", ...and so on
|
|
//
|
|
|
|
typedef struct _ArgTypes
|
|
{
|
|
char *Name;
|
|
ULONG_PTR Type;
|
|
} ArgType, *PArgType;
|
|
|
|
//
|
|
// helper structures to help parsing the thunk debugging info
|
|
//
|
|
typedef struct _ThunkDebugInfo
|
|
{
|
|
char *ApiName;
|
|
UINT_PTR ServiceNumber;
|
|
UINT_PTR NumberOfArg;
|
|
ArgType Arg[0];
|
|
} THUNK_DEBUG_INFO, *PTHUNK_DEBUG_INFO;
|
|
|
|
typedef struct _LOGINFO
|
|
{
|
|
PSZ OutputBuffer;
|
|
ULONG_PTR BufferSize;
|
|
} LOGINFO, *PLOGINFO;
|
|
|
|
|
|
// from whnt32.c
|
|
extern PULONG_PTR NtThunkDebugInfo[];
|
|
|
|
// from whwin32.c
|
|
extern PULONG_PTR Win32ThunkDebugInfo[];
|
|
|
|
// from whcon.c
|
|
extern PULONG_PTR ConsoleThunkDebugInfo[];
|
|
|
|
// from whbase.c
|
|
extern PULONG_PTR BaseThunkDebugInfo[];
|
|
|
|
// from wow64log.c
|
|
extern UINT_PTR Wow64LogFlags;
|
|
extern HANDLE Wow64LogFileHandle;
|
|
|
|
|
|
NTSTATUS
|
|
LogInitializeFlags(
|
|
IN OUT PUINT_PTR Flags);
|
|
|
|
ULONG
|
|
GetThunkDebugTableSize(
|
|
IN PTHUNK_DEBUG_INFO DebugInfoTable);
|
|
|
|
NTSTATUS
|
|
BuildDebugThunkInfo(
|
|
IN PTHUNK_DEBUG_INFO DebugInfoTable,
|
|
OUT PULONG_PTR *LogTable);
|
|
|
|
NTSTATUS
|
|
LogTypeValue(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypeUnicodeString(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypePULongInOut(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypePULongOut(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypeObjectAttrbiutes(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypeIoStatusBlock(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypePWStr(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypePRectIn(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
NTSTATUS
|
|
LogTypePLargeIntegerIn(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN ULONG_PTR Data,
|
|
IN PSZ FieldName,
|
|
IN BOOLEAN ServiceReturn);
|
|
|
|
|
|
|
|
// from logutil.c
|
|
NTSTATUS
|
|
LogFormat(
|
|
IN OUT PLOGINFO LogInfo,
|
|
IN PSZ Format,
|
|
...);
|
|
|
|
VOID
|
|
LogOut(
|
|
IN PSZ Text,
|
|
UINT_PTR Flags
|
|
);
|
|
|
|
NTSTATUS
|
|
LogWriteFile(
|
|
IN HANDLE FileHandle,
|
|
IN PSZ LogText);
|
|
|
|
NTSTATUS
|
|
Wow64LogMessageInternal(
|
|
IN UINT_PTR Flags,
|
|
IN PSZ Format,
|
|
IN ...);
|
|
|
|
|
|
#endif
|