You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.6 KiB
112 lines
2.6 KiB
//--------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 2000, Microsoft Corporation
|
|
//
|
|
// File: misc.c
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#define UNICODE 1
|
|
|
|
#include <stdio.h>
|
|
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
#include <windows.h>
|
|
#include <shellapi.h>
|
|
#include <winldap.h>
|
|
#include <stdlib.h>
|
|
#include <dsgetdc.h>
|
|
#include <lm.h>
|
|
#include <rpc.h>
|
|
|
|
#include "struct.h"
|
|
#include "messages.h"
|
|
|
|
#define MAX_BUF_SIZE 10000
|
|
|
|
WCHAR MsgBuf[MAX_BUF_SIZE];
|
|
CHAR AnsiBuf[MAX_BUF_SIZE*3];
|
|
|
|
#define ARRAYLEN(x) (sizeof(x) / sizeof((x)[0]))
|
|
|
|
VOID
|
|
MyFormatMessageText(
|
|
HRESULT dwMsgId,
|
|
PWSTR pszBuffer,
|
|
DWORD dwBufferSize,
|
|
va_list *parglist)
|
|
{
|
|
DWORD dwReturn = 0;
|
|
|
|
dwReturn = FormatMessage(
|
|
(dwMsgId >= MSG_FIRST_MESSAGE)
|
|
? FORMAT_MESSAGE_FROM_HMODULE
|
|
: FORMAT_MESSAGE_FROM_SYSTEM,
|
|
NULL,
|
|
dwMsgId,
|
|
LANG_USER_DEFAULT,
|
|
pszBuffer,
|
|
dwBufferSize,
|
|
parglist);
|
|
|
|
if (dwReturn == 0)
|
|
MyPrintf(L"Formatmessage failed %d\r\n", GetLastError());
|
|
}
|
|
|
|
VOID
|
|
ErrorMessage(
|
|
IN HRESULT hr,
|
|
...)
|
|
{
|
|
ULONG cch;
|
|
va_list arglist;
|
|
|
|
va_start(arglist, hr);
|
|
MyFormatMessageText(hr, MsgBuf, ARRAYLEN(MsgBuf), &arglist);
|
|
cch = WideCharToMultiByte(CP_OEMCP, 0,
|
|
MsgBuf, wcslen(MsgBuf),
|
|
AnsiBuf, MAX_BUF_SIZE*3,
|
|
NULL, NULL);
|
|
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), AnsiBuf, cch, &cch, NULL);
|
|
va_end(arglist);
|
|
}
|
|
|
|
VOID
|
|
MyPrintf(
|
|
PWCHAR format,
|
|
...)
|
|
{
|
|
ULONG cch;
|
|
va_list va;
|
|
|
|
va_start(va, format);
|
|
wvsprintf(MsgBuf, format, va);
|
|
cch = WideCharToMultiByte(CP_OEMCP, 0,
|
|
MsgBuf, wcslen(MsgBuf),
|
|
AnsiBuf, MAX_BUF_SIZE*3,
|
|
NULL, NULL);
|
|
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), AnsiBuf, cch, &cch, NULL);
|
|
va_end(va);
|
|
return;
|
|
}
|
|
|
|
VOID
|
|
MyFPrintf(
|
|
HANDLE hHandle,
|
|
PWCHAR format,
|
|
...)
|
|
{
|
|
ULONG cch;
|
|
va_list va;
|
|
|
|
va_start(va, format);
|
|
wvsprintf(MsgBuf, format, va);
|
|
cch = WideCharToMultiByte(CP_OEMCP, 0,
|
|
MsgBuf, wcslen(MsgBuf),
|
|
AnsiBuf, MAX_BUF_SIZE*3,
|
|
NULL, NULL);
|
|
WriteFile(hHandle, AnsiBuf, cch, &cch, NULL);
|
|
va_end(va);
|
|
return;
|
|
}
|