windows-nt/Source/XPSP1/NT/base/ntsetup/win95upg/tools/migid/migid.c

133 lines
2.6 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
migid.c
Abstract:
Implements a small program that loads a migration DLL and prints
its vendor info.
Author:
<full name> (<alias>) <date>
Revision History:
<alias> <date> <comments>
--*/
#include "pch.h"
VOID
HelpAndExit (
VOID
)
{
printf ("Command Line Syntax:\n\n"
"migid [directory]\n\n"
"directory - Specifies the directory migrate.dll is in.\n"
" If not specified, the current directory is\n"
" used.\n"
);
exit (1);
}
INT
__cdecl
main (
INT argc,
CHAR *argv[]
)
{
HANDLE Library;
TCHAR Path[MAX_TCHAR_PATH];
DWORD d;
P_QUERY_VERSION QueryVersion;
PCSTR ProductID = NULL;
UINT DllVersion = 0;
PINT CodePageArray;
PCSTR ExeNamesBuf;
PVENDORINFO VendorInfo = NULL;
BOOL SpecCompliant = TRUE;
if (argc == 0 || argc > 2) {
HelpAndExit();
}
if (argc == 2) {
d = GetFileAttributes (argv[1]);
if (d == INVALID_ATTRIBUTES) {
HelpAndExit();
}
if (!(d & FILE_ATTRIBUTE_DIRECTORY)) {
HelpAndExit();
}
lstrcpy (Path, argv[1]);
lstrcat (Path, TEXT("\\"));
} else {
lstrcpy (Path, TEXT(".\\"));
}
lstrcat (Path, TEXT("migrate.dll"));
Library = LoadLibrary (Path);
if (!Library) {
fprintf (stderr, "Can't open %s\n", Path);
return 1;
}
(FARPROC) QueryVersion = GetProcAddress (Library, "QueryVersion");
if (!QueryVersion) {
fprintf (stderr, "%s is not spec-compliant\n", Path);
return 1;
}
__try {
QueryVersion (&ProductID, &DllVersion, &CodePageArray, &ExeNamesBuf, &VendorInfo);
if (!ProductID || !VendorInfo) {
SpecCompliant = FALSE;
}
printf ("Product ID: %s\n"
"DLL Version: %u\n"
"Company Name: %s\n"
"Support Number: %s\n"
"Support URL: %s\n"
"Failure Help: %s\n",
ProductID ? ProductID : "(nul)",
DllVersion,
VendorInfo ? VendorInfo->CompanyName : "(nul)",
VendorInfo ? VendorInfo->SupportNumber : "(nul)",
VendorInfo ? VendorInfo->SupportUrl : "(nul)",
VendorInfo ? VendorInfo->InstructionsToUser : "(nul)"
);
}
__except (TRUE) {
SpecCompliant = FALSE;
}
if (!SpecCompliant) {
fprintf (stderr, "%s is not spec-compliant\n", Path);
return 1;
}
return 0;
}