VBoxCredProvUtils.cpp revision 352bb6b9d2fa1f7df7797f50c58e297ac37059a2
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* $Id$ */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/** @file
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * VBoxCredProvUtils - Misc. utility functions for VBoxCredProv.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/*
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Copyright (C) 2012 Oracle Corporation
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * This file is part of VirtualBox Open Source Edition (OSE), as
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * available from http://www.virtualbox.org. This file is free software;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * you can redistribute it and/or modify it under the terms of the GNU
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * General Public License (GPL) as published by the Free Software
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Foundation, in version 2 as it comes in the "COPYING" file of the
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/*******************************************************************************
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk* Header Files *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk*******************************************************************************/
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#include <Windows.h>
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#include <iprt/string.h>
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#include <VBox/log.h>
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#include <VBox/VboxGuestLib.h>
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/*******************************************************************************
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk* Global Variables *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk*******************************************************************************/
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/** Verbosity flag for guest logging. */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkDWORD g_dwVerbosity = 0;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/**
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Displays a verbose message.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * @param iLevel Minimum log level required to display this message.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * @param pszFormat The message text.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * @param ... Format arguments.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkvoid VBoxCredProvVerbose(DWORD dwLevel, const char *pszFormat, ...)
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk{
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk if (dwLevel <= g_dwVerbosity)
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk va_list args;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk va_start(args, pszFormat);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk char *psz = NULL;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk RTStrAPrintfV(&psz, pszFormat, args);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk va_end(args);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk AssertPtr(psz);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk LogRel(("%s", psz));
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk RTStrFree(psz);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk }
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk}
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/**
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Reports VBoxGINA's status to the host (treated as a guest facility).
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * @return IPRT status code.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * @param enmStatus Status to report to the host.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint VBoxCredProvReportStatus(VBoxGuestFacilityStatus enmStatus)
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk{
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk VBoxCredProvVerbose(0, "VBoxCredProv: reporting status %d\n", enmStatus);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk int rc = VbglR3AutoLogonReportStatus(enmStatus);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk if (RT_FAILURE(rc))
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk VBoxCredProvVerbose(0, "VBoxCredProv: failed to report status %d, rc=%Rrc\n", enmStatus, rc);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk return rc;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk}
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk