1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync/* $Id */
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync/** @file
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * tstVBoxGINA.cpp - Simple testcase for invoking VBoxGINA.dll.
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync */
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync/*
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * Copyright (C) 2012 Oracle Corporation
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync *
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * available from http://www.virtualbox.org. This file is free software;
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * you can redistribute it and/or modify it under the terms of the GNU
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * General Public License (GPL) as published by the Free Software
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync */
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync#define UNICODE
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync#include <windows.h>
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync#include <stdio.h>
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsyncint main(int argc, TCHAR* argv[])
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync{
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync DWORD dwErr;
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync /**
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * Be sure that:
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * - the debug VBoxGINA gets loaded instead of a maybe installed
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync * release version in "C:\Windows\system32".
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync */
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync HMODULE hMod = LoadLibrary(L"VBoxGINA.dll");
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync if (!hMod)
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync {
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync dwErr = GetLastError();
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync wprintf(L"VBoxGINA.dll not found, error=%ld\n", dwErr);
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync }
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync else
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync {
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync wprintf(L"VBoxGINA found\n");
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync FARPROC pfnDebug = GetProcAddress(hMod, "VBoxGINADebug");
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync if (!pfnDebug)
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync {
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync dwErr = GetLastError();
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync wprintf(L"Could not load VBoxGINADebug, error=%ld\n", dwErr);
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync }
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync else
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync {
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync wprintf(L"Calling VBoxGINA ...\n");
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync dwErr = pfnDebug();
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync }
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync FreeLibrary(hMod);
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync }
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync wprintf(L"Test returned: %ld\n", dwErr);
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync return dwErr == ERROR_SUCCESS ? 0 : 1;
1681bebee475eb9c05ba6ee5b405f799a627c574vboxsync}