#include <windef.h>
#include <winuser.h>
#define MAX_STRING_LEN 1024
#define STRING_DXDIAG_TOOL 101
#define STRING_USAGE 102
struct system_information
{
WCHAR *szTimeEnglish;
WCHAR *szTimeLocalized;
WCHAR *szMachineNameEnglish;
WCHAR *szOSExLongEnglish;
WCHAR *szOSExLocalized;
WCHAR *szLanguagesEnglish;
WCHAR *szLanguagesLocalized;
WCHAR *szSystemManufacturerEnglish;
WCHAR *szSystemModelEnglish;
WCHAR *szBIOSEnglish;
WCHAR *szProcessorEnglish;
WCHAR *szPhysicalMemoryEnglish;
WCHAR *szPageFileEnglish;
WCHAR *szPageFileLocalized;
WCHAR *szWindowsDir;
WCHAR *szDirectXVersionLongEnglish;
WCHAR *szSetupParamEnglish;
WCHAR *szDxDiagVersion;
BOOL win64;
};
struct dxdiag_information
{
struct system_information system_info;
};
struct dxdiag_information *collect_dxdiag_information(BOOL whql_check);
void free_dxdiag_information(struct dxdiag_information *dxdiag_info);
enum output_type
{
OUTPUT_NONE,
OUTPUT_TEXT,
OUTPUT_XML,
};
static inline const char *debugstr_output_type(enum output_type type)
{
switch (type)
{
case OUTPUT_NONE:
return "(none)";
case OUTPUT_TEXT:
return "Plain-text output";
case OUTPUT_XML:
return "XML output";
default:
return "(unknown)";
}
}
const WCHAR *get_output_extension(enum output_type type);
BOOL output_dxdiag_information(struct dxdiag_information *dxdiag_info, const WCHAR *filename, enum output_type type);