/*++ Copyright (c) 1994 - 1995 Microsoft Corporation Module Name: Win9x.c Abstract: Test pre-migration of Win95 to NT Author: MuhuntS Revision History: 01-17-97 --*/ #define NOMINMAX #include #include #include #include #include #include #include P_QUERY_VERSION QueryVersion; P_INITIALIZE_9X Initialize9x; P_MIGRATE_SYSTEM_9X MigrateSystem9x; P_INITIALIZE_NT InitializeNT; P_MIGRATE_SYSTEM_NT MigrateSystemNT; WCHAR szSrcDir[MAX_PATH], szWrkDir[MAX_PATH]; int __cdecl main (argc, argv) int argc; char *argv[]; { PVENDORINFO pVI; HMODULE hModule; HANDLE hAlive = NULL; DWORD dwLastError; LPSTR p1, p2, p3, p4, p5; LONG x; UINT v; INT c; LONG lLastErr; char error_buffer[300]; p1 = p2 = p3 = p4 = p5 = NULL; if ( argc < 3 ) { printf("Usage: %s \n", argv[0]); return 0; } hModule = LoadLibraryA("migrate.dll"); if ( !hModule ) { lLastErr = GetLastError(); FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM, NULL, lLastErr, 0L, error_buffer, sizeof(error_buffer), NULL ); printf("%s: LoadLibrary failed with %d - %s\n", argv[0], lLastErr, error_buffer); goto Cleanup; } // // Nt only? // if ( argc == 4 && argv[3][0] == '+' ) goto DoNT; (FARPROC) QueryVersion = GetProcAddress(hModule, "QueryVersion"); (FARPROC) Initialize9x = GetProcAddress(hModule, "Initialize9x"); (FARPROC) MigrateSystem9x = GetProcAddress(hModule, "MigrateSystem9x"); if ( !QueryVersion || !Initialize9x || !MigrateSystem9x ) goto Cleanup; x = QueryVersion(&p1, (LPUINT)&p2, (LPINT*)&p3, &p4, (PVENDORINFO*)&pVI); printf("QueryVersion returned %d\n", x); x = Initialize9x(argv[1], argv[2], 0); printf("Initialize9x returned %d\n", x); x = MigrateSystem9x(0, NULL, 0); printf("MigrateSystem9x returned %d\n", x); FreeLibrary(hModule); // // Win95 only? // if ( argc == 4 && argv[3][0] == '-' ) goto Cleanup; hModule = LoadLibraryA("migrate.dll"); if ( !hModule ) { lLastErr = GetLastError(); FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM, NULL, lLastErr, 0L, error_buffer, sizeof(error_buffer), NULL ); printf("%s: LoadLibrary II failed with %d - %s\n", argv[0], lLastErr, error_buffer); goto Cleanup; } DoNT: MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, argv[1], -1, szWrkDir, MAX_PATH); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, argv[2], -1, szSrcDir, MAX_PATH); InitializeNT = (P_INITIALIZE_NT)GetProcAddress(hModule, "InitializeNT"); MigrateSystemNT = (P_MIGRATE_SYSTEM_NT)GetProcAddress(hModule, "MigrateSystemNT"); if ( !InitializeNT || !MigrateSystemNT ) goto Cleanup; hAlive = CreateEventA(NULL, FALSE, FALSE, "MigDllAlive"); if ( ERROR_SUCCESS == InitializeNT(szWrkDir, szSrcDir, 0) ) MigrateSystemNT(INVALID_HANDLE_VALUE, 0); FreeLibrary(hModule); Cleanup: if ( hModule ) FreeLibrary(hModule); if ( hAlive ) CloseHandle(hAlive); return 0; }