289 lines
7.5 KiB
C
289 lines
7.5 KiB
C
|
/*++ BUILD Version: 0001 Increment if a change has global effects
|
||
|
|
||
|
Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
info.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Header file for the internal information interfaces (util\info.c)
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode - Win32
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
--*/
|
||
|
#ifndef _NTFRS_INFO_INCLUDED_
|
||
|
#define _NTFRS_INFO_INCLUDED_
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define IPRINT0(_Info, _Format) \
|
||
|
InfoPrint(_Info, _Format)
|
||
|
|
||
|
#define IPRINT1(_Info, _Format, _p1) \
|
||
|
InfoPrint(_Info, _Format, _p1)
|
||
|
|
||
|
#define IPRINT2(_Info, _Format, _p1, _p2) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2)
|
||
|
|
||
|
#define IPRINT3(_Info, _Format, _p1, _p2, _p3) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2, _p3)
|
||
|
|
||
|
#define IPRINT4(_Info, _Format, _p1, _p2, _p3, _p4) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2, _p3, _p4)
|
||
|
|
||
|
#define IPRINT5(_Info, _Format, _p1, _p2, _p3, _p4, _p5) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2, _p3, _p4, _p5)
|
||
|
|
||
|
#define IPRINT6(_Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6)
|
||
|
|
||
|
#define IPRINT7(_Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6, _p7) \
|
||
|
InfoPrint(_Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6, _p7)
|
||
|
|
||
|
#define IDPRINT0(_Severity, _Info, _Format) \
|
||
|
if (_Info) { \
|
||
|
IPRINT0(_Info, _Format); \
|
||
|
} else { \
|
||
|
DPRINT(_Severity, _Format); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT1(_Severity, _Info, _Format, _p1) \
|
||
|
if (_Info) { \
|
||
|
IPRINT1(_Info, _Format, _p1); \
|
||
|
} else { \
|
||
|
DPRINT1(_Severity, _Format, _p1); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT2(_Severity, _Info, _Format, _p1, _p2) \
|
||
|
if (_Info) { \
|
||
|
IPRINT2(_Info, _Format, _p1, _p2); \
|
||
|
} else { \
|
||
|
DPRINT2(_Severity, _Format, _p1, _p2); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT3(_Severity, _Info, _Format, _p1, _p2, _p3) \
|
||
|
if (_Info) { \
|
||
|
IPRINT3(_Info, _Format, _p1, _p2, _p3); \
|
||
|
} else { \
|
||
|
DPRINT3(_Severity, _Format, _p1, _p2, _p3); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT4(_Severity, _Info, _Format, _p1, _p2, _p3, _p4) \
|
||
|
if (_Info) { \
|
||
|
IPRINT4(_Info, _Format, _p1, _p2, _p3, _p4); \
|
||
|
} else { \
|
||
|
DPRINT4(_Severity, _Format, _p1, _p2, _p3, _p4); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT5(_Severity, _Info, _Format, _p1, _p2, _p3, _p4, _p5) \
|
||
|
if (_Info) { \
|
||
|
IPRINT5(_Info, _Format, _p1, _p2, _p3, _p4, _p5); \
|
||
|
} else { \
|
||
|
DPRINT5(_Severity, _Format, _p1, _p2, _p3, _p4, _p5); \
|
||
|
}
|
||
|
|
||
|
#define IDPRINT6(_Severity, _Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6) \
|
||
|
if (_Info) { \
|
||
|
IPRINT6(_Info, _Format, _p1, _p2, _p3, _p4, _p5, _p6); \
|
||
|
} else { \
|
||
|
DPRINT6(_Severity, _Format, _p1, _p2, _p3, _p4, _p5, _p6); \
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Used by FrsPrintType and its subroutines
|
||
|
//
|
||
|
// WARNING - THESE MACROS DEPEND ON LOCAL VARIABLES!
|
||
|
//
|
||
|
#define ITPRINT0(_Format) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT0(Info, _Format); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo); \
|
||
|
} \
|
||
|
}
|
||
|
#define ITPRINT1(_Format, _p1) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT1(Info, _Format, _p1); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, _p1); \
|
||
|
} \
|
||
|
}
|
||
|
#define ITPRINT2(_Format, _p1, _p2) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT2(Info, _Format, _p1, _p2); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, _p1, _p2); \
|
||
|
} \
|
||
|
}
|
||
|
#define ITPRINT3(_Format, _p1, _p2, _p3) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT3(Info, _Format, _p1, _p2, _p3); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, _p1, _p2, _p3); \
|
||
|
} \
|
||
|
}
|
||
|
#define ITPRINT4(_Format, _p1, _p2, _p3, _p4) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT4(Info, _Format, _p1, _p2, _p3, _p4); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, _p1, _p2, _p3, _p4); \
|
||
|
} \
|
||
|
}
|
||
|
#define ITPRINT5(_Format, _p1, _p2, _p3, _p4, _p5) \
|
||
|
{ \
|
||
|
if (Info) { \
|
||
|
IPRINT3(Info, _Format, _p1, _p2, _p3, _p4, _p5); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, _p1, _p2, _p3, _p4, _p5); \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
#define ITPRINTGNAME(_GName, _Format) \
|
||
|
{ \
|
||
|
if ((_GName) && (_GName)->Guid && (_GName)->Name) { \
|
||
|
GuidToStr(_GName->Guid, Guid); \
|
||
|
if (Info) { \
|
||
|
IPRINT3(Info, _Format, TabW, (_GName)->Name, Guid); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, TabW, (_GName)->Name, Guid); \
|
||
|
} \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
#define ITPRINTGUID(_Guid, _Format) \
|
||
|
{ \
|
||
|
if ((_Guid)) { \
|
||
|
GuidToStr((_Guid), Guid); \
|
||
|
if (Info) { \
|
||
|
IPRINT2(Info, _Format, TabW, Guid); \
|
||
|
} else { \
|
||
|
DebPrintNoLock(Severity, TRUE, _Format, Debsub, uLineNo, TabW, Guid); \
|
||
|
} \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID
|
||
|
FrsPrintAllocStats(
|
||
|
IN ULONG Severity,
|
||
|
IN PNTFRSAPI_INFO Info, OPTIONAL
|
||
|
IN DWORD Tabs
|
||
|
);
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Print the memory stats into the info buffer or using DPRINT (Info == NULL).
|
||
|
|
||
|
Arguments:
|
||
|
Severity - for DPRINT
|
||
|
Info - for IPRINT (use DPRINT if NULL)
|
||
|
Tabs - indentation for prettyprint
|
||
|
|
||
|
Return Value:
|
||
|
None.
|
||
|
--*/
|
||
|
|
||
|
//
|
||
|
// PrettyPrint (set tabs at 3 wchars)
|
||
|
//
|
||
|
#define MAX_TABS (16)
|
||
|
#define MAX_TAB_WCHARS (MAX_TABS * 3)
|
||
|
VOID
|
||
|
InfoTabs(
|
||
|
IN DWORD Tabs,
|
||
|
IN PWCHAR TabW
|
||
|
);
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Create a string of tabs for prettyprint
|
||
|
|
||
|
Arguments:
|
||
|
Tabs - number of tabs
|
||
|
TabW - preallocated string to receive tabs
|
||
|
|
||
|
Return Value:
|
||
|
Win32 Status
|
||
|
--*/
|
||
|
|
||
|
DWORD
|
||
|
Info(
|
||
|
IN ULONG BlobSize,
|
||
|
IN OUT PBYTE Blob
|
||
|
);
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Return internal info (see private\net\inc\ntfrsapi.h).
|
||
|
|
||
|
Arguments:
|
||
|
BlobSize - total bytes of Blob
|
||
|
Blob - details desired info and provides buffer for info
|
||
|
|
||
|
Return Value:
|
||
|
Win32 Status
|
||
|
--*/
|
||
|
|
||
|
VOID
|
||
|
InfoPrint(
|
||
|
IN PNTFRSAPI_INFO Info,
|
||
|
IN PCHAR Format,
|
||
|
IN ... );
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Format and print a line of information output into the info buffer.
|
||
|
|
||
|
Arguments:
|
||
|
Info - Info buffer
|
||
|
Format - printf format
|
||
|
|
||
|
Return Value:
|
||
|
None.
|
||
|
--*/
|
||
|
|
||
|
DWORD
|
||
|
InfoVerify(
|
||
|
IN ULONG BlobSize,
|
||
|
IN OUT PBYTE Blob
|
||
|
);
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Verify the consistency of the blob.
|
||
|
|
||
|
Arguments:
|
||
|
BlobSize - total bytes of Blob
|
||
|
Blob - details desired info and provides buffer for info
|
||
|
|
||
|
Return Value:
|
||
|
Win32 Status
|
||
|
--*/
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Context global to InfoPrintIDTable...
|
||
|
//
|
||
|
typedef struct _INFO_TABLE{
|
||
|
PREPLICA Replica;
|
||
|
PTHREAD_CTX ThreadCtx;
|
||
|
PTABLE_CTX TableCtx;
|
||
|
PNTFRSAPI_INFO Info;
|
||
|
DWORD Tabs;
|
||
|
} INFO_TABLE, *PINFO_TABLE;
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|