Helper.cpp revision e55433cb7d930b803d6aff5794b20e5e202ba1fd
2N/A * VBoxGINA -- Windows Logon DLL for VirtualBox Helper Functions 2N/A * Copyright (C) 2006-2007 Oracle Corporation 2N/A * This file is part of VirtualBox Open Source Edition (OSE), as 2N/A * you can redistribute it and/or modify it under the terms of the GNU 2N/A * General Public License (GPL) as published by the Free Software 2N/A * Foundation, in version 2 as it comes in the "COPYING" file of the 2N/A * VirtualBox OSE distribution. VirtualBox OSE is distributed in the 2N/A * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. 2N/A/* the credentials */ 2N/A Log((
"VBoxGINA::sVBoxDriver: failed to open VBoxGuest driver, last error = %d\n",
GetLastError()));
/* query the VMMDev whether there are credentials */ Log((
"VBoxGINA::credentialsAvailable: error doing IOCTL, last error: %d\n",
GetLastError()));
/*Log(("VBoxGINA::credentialsAvailable: fAvailable: %d\n", fAvailable));*/ Log((
"VBoxGINA::credentialsRetrieve\n"));
/* to be safe, reset the credentials */ /* query the credentials */ Log((
"VBoxGINA::credentialsRetrieve: error doing IOCTL, last error: %d\n",
GetLastError()));
/* convert from UTF-8 to UTF-16 and store in global variables */ Log((
"VBoxGINA::credentialsRetrieve: returning user '%s', password '%s', domain '%s'\n",
/* handle of the poller thread */ * Poller thread. Checks periodically whether there are credentials. Log((
"VBoxGINA::credentialsPoller\n"));
Log((
"VBoxGINA::credentialsPoller: got credentials, simulating C-A-D\n"));
/* tell WinLogon to start the attestation process */ /* time to say goodbye */ Log((
"VBoxGINA::credentialsPoller: we were asked to terminate\n"));
/* we were asked to terminate, do that instantly! */ Log((
"VBoxGINA::credentialsPollerCreate\n"));
/* don't create more than one of them */ Log((
"VBoxGINA::credentialsPollerCreate: thread already running, returning!\n"));
/* create the poller thread */ Log((
"VBoxGINA::credentialsPollerCreate: failed to create thread, rc = %Rrc\n",
rc));
Log((
"VBoxGINA::credentialsPollerTerminate\n"));
Log((
"VBoxGINA::credentialsPollerTerminate: either thread or exit sem is NULL!\n"));
/* post termination event semaphore */ Log((
"VBoxGINA::credentialsPollerTerminate: waiting for thread to terminate\n"));
/* wait until the thread has terminated */ Log((
"VBoxGINA::credentialsPollerTermiante: thread has (probably) terminated (rc = %Rrc)\n",
rc));
/* failed to signal the thread - very unlikely - so no point in waiting long. */ Log((
"VBoxGINA::credentialsPollerTermiante: failed to signal semaphore, rc = %Rrc\n",
rc));
Log((
"VBoxGINA::credentialsPollerTermiante: thread has terminated? wait rc = %Rrc\n",
rc));