windows-nt/Source/XPSP1/NT/net/rras/routemon/utils.c
2020-09-26 16:20:57 +08:00

144 lines
2.3 KiB
C

#include "precomp.h"
UINT APIENTRY
get_str_id (
ENUM_TO_STR Array[],
ULONG ArraySz,
ULONG EnumVal
) {
ULONG i;
for (i=0; (i<ArraySz) && (Array->enumVal!=EnumVal); i++, Array++) ;
if (i<ArraySz)
return Array->strId;
else
return (UINT)(-1);
}
BOOL APIENTRY
get_enum_val (
HINSTANCE hModule,
ENUM_TO_STR Array[],
ULONG ArraySz,
LPTSTR String,
PULONG EnumVal
) {
ULONG i;
TCHAR buffer[MAX_VALUE];
for (i=0; (i<ArraySz)
&& (_tcsicmp (
String,
GetString (
hModule,
Array->strId,
buffer
)
)!=0); i++, Array++) ;
if (i<ArraySz) {
*EnumVal = Array->enumVal;
return TRUE;
}
else
return FALSE;
}
ULONG APIENTRY
put_msg (
HINSTANCE hModule,
UINT MsgId,
...
) {
DWORD msglen;
LPTSTR vp;
va_list arglist;
va_start (arglist, MsgId);
msglen = FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
hModule,
MsgId,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&vp,
0,
&arglist);
if (msglen != 0) {
_fputts (vp, stdout);
LocalFree(vp);
}
va_end (arglist);
return msglen;
}
ULONG APIENTRY
put_str_msg (
HINSTANCE hModule,
UINT StrId,
...
) {
DWORD msglen;
static TCHAR buffer[MAX_STR_MESSAGE];
LPTSTR vp;
va_list arglist;
va_start (arglist, StrId);
msglen = FormatMessage(
FORMAT_MESSAGE_FROM_STRING |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
GetString (hModule,StrId,buffer),
0,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&vp,
0,
&arglist);
if (msglen != 0) {
_fputts (vp, stdout);
LocalFree(vp);
}
va_end (arglist);
return msglen;
}
ULONG APIENTRY
put_error_msg (
DWORD error
) {
LPWSTR vp;
DWORD msglen;
if ((msglen=FormatMessageW (
FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL,
error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //The user default language
(LPWSTR)&vp,
0,
NULL))>0) {
fputws (vp, stdout);
LocalFree (vp);
return msglen;
}
else if (MprAdminGetErrorString (error, &vp)==NO_ERROR) {
msglen = wcslen (vp);
fputws (vp, stdout);
MprAdminBufferFree (vp);
return msglen;
}
else if (MprAdminGetErrorString (error, &vp)==NO_ERROR) {
msglen = wcslen (vp);
fputws (vp, stdout);
MprAdminBufferFree (vp);
return msglen;
}
else
return 0;
}