windows-nt/Source/XPSP1/NT/net/atm/arp/atmarp/utils.c

171 lines
3.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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);
}