/*************************************************************************
 *                        Microsoft Windows NT                           *
 *                                                                       *
 *                  Copyright(c) Microsoft Corp., 1994                   *
 *                                                                       *
 * Revision History:                                                     *
 *                                                                       *
 *   Jan. 29,94    Koti     Created                                      *
 *                                                                       *
 * Description:                                                          *
 *                                                                       *
 *   This file contains the functions that invoke all the EventLogging   *
 *   related functions.                                                  *
 *                                                                       *
 *************************************************************************/



#include "lpd.h"


/*****************************************************************************
 *                                                                           *
 * InitLogging():                                                            *
 *    This function prepares for future logging by registersing.             *
 *                                                                           *
 * Returns:                                                                  *
 *    TRUE if it succeeded                                                   *
 *    FALSE if it didn't                                                     *
 *                                                                           *
 * Parameters:                                                               *
 *    None                                                                   *
 *                                                                           *
 * History:                                                                  *
 *    Jan.29, 94   Koti   Created                                            *
 *                                                                           *
 *****************************************************************************/

BOOL InitLogging( VOID )
{

   hLogHandleGLB = RegisterEventSource( NULL, LPD_SERVICE_NAME );

   if ( hLogHandleGLB == (HANDLE)NULL )
   {
      LPD_DEBUG( "InitLogging(): RegisterEventSource failed\n" );

      return( FALSE );
   }

   return( TRUE );

}  // end InitLogging()





/*****************************************************************************
 *                                                                           *
 * LpdReportEvent():                                                         *
 *    This is the function where logging of events actually takes place.     *
 *                                                                           *
 * Returns:                                                                  *
 *    Nothing                                                                *
 *                                                                           *
 * Parameters:                                                               *
 *    idMessage (IN): ID of the message to be put in the log file            *
 *    wNumStrings (IN): number of strings in the "variable parts" of message *
 *    aszStrings (IN): the "variable parts" of the message                   *
 *    dwErrcode (IN): error code for the (failed) event                      *
 *                                                                           *
 * History:                                                                  *
 *    Jan.29, 94   Koti   Created                                            *
 *                                                                           *
 *****************************************************************************/

VOID
LpdReportEvent( DWORD idMessage, WORD wNumStrings,
                CHAR  *aszStrings[], DWORD dwErrcode )
{

   WORD    wType;
   DWORD   cbRawData=0;
   PVOID   pRawData=NULL;


   if ( hLogHandleGLB == NULL )
   {
      DEBUG_PRINT (("LpdReportEvent(): Log handle is NULL!  EventId <0x%x> not logged\n", idMessage));
      return;
   }

   if ( NT_INFORMATION( idMessage) )
   {
      wType = EVENTLOG_INFORMATION_TYPE;
   }
   else if ( NT_WARNING( idMessage) )
   {
      wType = EVENTLOG_WARNING_TYPE;
   }
   else if ( NT_ERROR( idMessage) )
   {
      wType = EVENTLOG_ERROR_TYPE;
   }
   else
   {
      LPD_DEBUG( "LpdReportEvent(): Unknown type of error message\n" );

      wType = EVENTLOG_ERROR_TYPE;
   }


   if ( dwErrcode != 0 )
   {
      pRawData = &dwErrcode;

      cbRawData = sizeof( dwErrcode );
   }

   ReportEvent( hLogHandleGLB, wType, 0, idMessage, NULL, wNumStrings,
                cbRawData, (LPCTSTR *)aszStrings, pRawData );
   return;

}  // end LpdReportEvent()





/*****************************************************************************
 *                                                                           *
 * EndLogging():                                                             *
 *    This function ends logging by deregistering the handle.                *
 *                                                                           *
 * Returns:                                                                  *
 *    Nothing.                                                               *
 *                                                                           *
 * Parameters:                                                               *
 *    None                                                                   *
 *                                                                           *
 * History:                                                                  *
 *    Jan.29, 94   Koti   Created                                            *
 *                                                                           *
 *****************************************************************************/

VOID EndLogging( VOID )
{

   if ( hLogHandleGLB == NULL )
   {
      LPD_DEBUG( "EndLogging(): Log handle is NULL!\n" );

      return;
   }

   DeregisterEventSource( hLogHandleGLB );

   return;

}  // end EndLogging()