125 lines
2.1 KiB
C
125 lines
2.1 KiB
C
|
|
||
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
buildhive.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Contains macros, type and function declarations
|
||
|
used by buildhive.cpp
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Mike Cirello
|
||
|
Vijay Jayaseelan (vijayj)
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
03 March 2001 :
|
||
|
Rewamp the whole source to make it more maintainable
|
||
|
(particularly readable)
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <setupapi.h>
|
||
|
#include <stdio.h>
|
||
|
#include <iostream>
|
||
|
#include <list>
|
||
|
#include <tchar.h>
|
||
|
#include <string>
|
||
|
#include <setupapi.hpp>
|
||
|
|
||
|
//
|
||
|
// Macros
|
||
|
//
|
||
|
#define ELEMENT_COUNT(x) (sizeof(x)/sizeof((x)[0]))
|
||
|
|
||
|
//
|
||
|
// forward declarations
|
||
|
//
|
||
|
class File;
|
||
|
|
||
|
//
|
||
|
// Types
|
||
|
//
|
||
|
typedef std::list<PCTSTR> StringList;
|
||
|
typedef std::list<File*> FileList;
|
||
|
typedef std::list<HINF> HandleList;
|
||
|
|
||
|
//
|
||
|
// constants
|
||
|
//
|
||
|
const DWORD errFILE_LOCKED = 10000001;
|
||
|
const DWORD errBAD_FLAGS = 10000002;
|
||
|
const DWORD errFILE_NOT_FOUND= 10000003;
|
||
|
const DWORD errGENERAL_ERROR = 10000004;
|
||
|
const DWORD errOUT_OF_MEMORY = 10000005;
|
||
|
|
||
|
//
|
||
|
// Prototypes
|
||
|
//
|
||
|
PCTSTR
|
||
|
Error(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SetPrivilege(
|
||
|
IN HANDLE hToken,
|
||
|
IN LPCTSTR PriviledgeName,
|
||
|
IN BOOL Set);
|
||
|
|
||
|
INT
|
||
|
ShowProgramUsage(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// Exceptions
|
||
|
//
|
||
|
struct ProgramException : public std::exception {
|
||
|
virtual void Dump(std::ostream &os) = 0;
|
||
|
};
|
||
|
|
||
|
//
|
||
|
// Abstracts a Win32 error
|
||
|
//
|
||
|
struct W32Error : public ProgramException {
|
||
|
DWORD ErrorCode;
|
||
|
|
||
|
W32Error(DWORD ErrCode = GetLastError()) : ErrorCode(ErrCode){}
|
||
|
|
||
|
void Dump(std::ostream &os) {
|
||
|
WCHAR MsgBuffer[4096];
|
||
|
|
||
|
MsgBuffer[0] = UNICODE_NULL;
|
||
|
|
||
|
DWORD CharCount = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM,
|
||
|
NULL,
|
||
|
ErrorCode,
|
||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||
|
MsgBuffer,
|
||
|
sizeof(MsgBuffer)/sizeof(WCHAR),
|
||
|
NULL);
|
||
|
|
||
|
if (CharCount) {
|
||
|
std::wstring Msg(MsgBuffer);
|
||
|
|
||
|
os << Msg;
|
||
|
} else {
|
||
|
os << std::hex << ErrorCode;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|