Hello,

I just looking under CVS web interface what is stored in pgevent directory
and what is missing.

The files attached with this mail have to be stored in pgevent directory.
MSG000001.bin is a bin files, result of Microsoft MC compiler. MC compiler
can be downloaded for free with MS Core SDK but it is not included with MSYS
tools and I didn't find a alternative way to compile MC file.

To summarize MC pgmsgevent.mc command generates pgmsgevent.h pgmsgevent.rc
and MSG00001.bin files.
In MC file, we declare a string with %s format, so we can write anything we
want in the future without need to change the definition of this string.

To finish, because DllUnregisterServer and DllRegisterServer are system
defined entry point, we need to export these two functions with their names
without "decoration", so we cannot uses auto generated .def files without
handy modifications.

regards
Laurent Ballester

----- Original Message ----- 
From: "Bruce Momjian" <[EMAIL PROTECTED]>
To: "Laurent Ballester" <[EMAIL PROTECTED]>
Cc: "Alvaro Herrera" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Saturday, June 19, 2004 7:13 AM
Subject: Re: [PATCHES] eventlog fix


>
> OK, I have created the following diff to document the pgevent
> installation instructions.  However, you didn't send me a Makefile for
> creating the DLL, and I am not sure how to do that.  Would you send me a
> `Makefile for src/bin/pgevent?  Thanks.
>
LANGUAGE 0x9,0x1
1 11 MSG00001.bin

Attachment: Makefile
Description: Binary data

Attachment: MSG00001.bin
Description: Binary data

/*-------------------------------------------------------------------------
 *
 * pgevent.c
 *              Defines the entry point for pgevent dll.
 *      The DLL defines event source for backend
 *
 *
 * IDENTIFICATION
 *        $PostgreSQL$
 *
 *-------------------------------------------------------------------------
 */


#include "windows.h"
#include "olectl.h"
#include "string.h"

/* Global variables */
HANDLE g_module = NULL;                                 /* hModule of DLL */

/* Prototypes */
STDAPI DllRegisterServer(void) ;
STDAPI DllUnregisterServer(void);
BOOL WINAPI DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved );

/*
 * DllRegisterServer --- Instructs DLL to create its registry entries 
 */

STDAPI DllRegisterServer(void) 
{
    HKEY key; 
    DWORD data; 
    char buffer[_MAX_PATH]; 

    /* Set the name of DLL full path name. */
        if (!GetModuleFileName((HMODULE)g_module, buffer, sizeof(buffer)))
        {
                MessageBox(NULL, "Could not retrieve DLL filename", "PostgreSQL 
error", MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }

    /* Add PostgreSQL source name as a subkey under the Application 
           key in the EventLog registry key. */
    if ( RegCreateKey(HKEY_LOCAL_MACHINE, 
"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\PostgreSQL", &key) ) 
        {
        MessageBox(NULL, "Could not create the registry key.", "PostgreSQL error", 
MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }

     /* Add the name to the EventMessageFile subkey. */
        if (RegSetValueEx(key,                          
                        "EventMessageFile",                     
                        0,                                                      
                        REG_EXPAND_SZ,            
                        (LPBYTE) buffer,        
            strlen(buffer) + 1))
        {
        MessageBox(NULL, "Could not set the event message file.", "PostgreSQL error", 
MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }
 
    /* Set the supported event types in the TypesSupported subkey. */
    data = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; 
 
    if (RegSetValueEx(key,      
            "TypesSupported",  
            0,                 
            REG_DWORD,         
            (LPBYTE) &data,  
            sizeof(DWORD)))    
        {
        MessageBox(NULL, "Could not set the supported types.", "PostgreSQL error", 
MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }
 
    RegCloseKey(key); 
        return S_OK;
}

/*
 * DllUnregisterServer --- Instructs DLL to remove only those entries created through 
DllRegisterServer
 */

STDAPI DllUnregisterServer(void)
{
        /* Remove PostgreSQL source name as a subkey under the Application 
           key in the EventLog registry key. */
 
        if ( RegDeleteKey(HKEY_LOCAL_MACHINE, 
"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\PostgreSQL") )
        {
                MessageBox(NULL, "Could not delete the registry key.", "PostgreSQL 
error", MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }
        return S_OK;
}

/*
 * DllMain --- is an optional entry point into a DLL.
 */

BOOL WINAPI DllMain( HANDLE hModule, 
                     DWORD  ul_reason_for_call, 
                     LPVOID lpReserved
                                        )
{
        if ( ul_reason_for_call == DLL_PROCESS_ATTACH ) 
        {
                g_module = hModule;
        }
    return TRUE;
}

; dlltool --output-def pgevent.def pgevent.o pgmsgevent.o
EXPORTS
        [EMAIL PROTECTED] @ 1; 
        [EMAIL PROTECTED] @ 2; 
//
//  Values are 32 bit values layed out as follows:
//
//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
//  +---+-+-+-----------------------+-------------------------------+
//  |Sev|C|R|     Facility          |               Code            |
//  +---+-+-+-----------------------+-------------------------------+
//
//  where
//
//      Sev - is the severity code
//
//          00 - Success
//          01 - Informational
//          10 - Warning
//          11 - Error
//
//      C - is the Customer code flag
//
//      R - is a reserved bit
//
//      Facility - is the facility code
//
//      Code - is the facility's status code
//
//
// Define the facility codes
//


//
// Define the severity codes
//


//
// MessageId: PGWIN32_EVENTLOG_MSG
//
// MessageText:
//
//  %1.
//
#define PGWIN32_EVENTLOG_MSG             0x00000000L

Attachment: pgmsgevent.mc
Description: Binary data

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to