|
|
/*++
Copyright (c) 1997 FORE Systems, Inc. Copyright (c) 1997 Microsoft Corporation
Module Name:
utils.c
Abstract:
ATM ARP Admin Utility.
Usage:
atmarp
Revision History:
Who When What -------- -------- --------------------------------------------- josephj 06-10-1998 Created (adapted from atmlane admin utility).
Notes:
Modelled after atmlane utility.
--*/
#include "common.h"
//
// LoadMessageTable
//
// Loads internationalizable strings into a table, replacing the default for
// each. If an error occurs, the English language default is left in place.
//
//
VOID LoadMessageTable( PMESSAGE_STRING Table, UINT MessageCount ) { LPTSTR string; DWORD count;
//
// for all messages in a MESSAGE_STRING table, load the string from this
// module, replacing the default string in the table (only there in case
// we get an error while loading the string, so we at least have English
// to fall back on)
//
while (MessageCount--) { if (Table->Message != MSG_NO_MESSAGE) {
//
// we really want LoadString here, but LoadString doesn't indicate
// how big the string is, so it doesn't give us an opportunity to
// allocate exactly the right buffer size. FormatMessage does the
// right thing
//
count = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE, NULL, // use default hModule
Table->Message, 0, // use default language
(LPTSTR)&string, 0, // minimum size to allocate
NULL // no arguments for inclusion in strings
); if (count) {
//
// Format message returned the string: replace the English
// language default
//
Table->String = string; } else {
//
// this is ok if there is no string (e.g. just %0) in the .mc
// file
//
Table->String = TEXT(""); } } ++Table; } }
VOID DisplayMessage( IN BOOLEAN Tabbed, IN DWORD MessageId, ... ) { va_list pArg; CHAR MessageBuffer[2048]; INT Count;
va_start(pArg, MessageId);
Count = FormatMessage( FORMAT_MESSAGE_FROM_HMODULE, NULL, // default hModule
MessageId, 0, // default language
MessageBuffer, sizeof(MessageBuffer), &pArg );
va_end(pArg);
if (Tabbed) { putchar('\t'); }
printf(MessageBuffer); }
HANDLE OpenDevice( CHAR *pDeviceName ) { DWORD DesiredAccess; DWORD ShareMode; LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL;
DWORD CreationDistribution; DWORD FlagsAndAttributes; HANDLE TemplateFile; HANDLE Handle;
DesiredAccess = GENERIC_READ|GENERIC_WRITE; ShareMode = 0; CreationDistribution = OPEN_EXISTING; FlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; TemplateFile = (HANDLE)INVALID_HANDLE_VALUE;
Handle = CreateFile( pDeviceName, DesiredAccess, ShareMode, lpSecurityAttributes, CreationDistribution, FlagsAndAttributes, TemplateFile );
return (Handle); }
VOID CloseDevice( HANDLE DeviceHandle ) { CloseHandle(DeviceHandle); }
|