Hello magnus,

> I assume you mean src/bin/pgevent, to be consistent with the naming used
> inside the program.

OK, I Modify Makefile subdir value. In fact I name it pg_event because many
directory under src/bin began with pg_ .

> Second, I'd register the source as "PostgreSQL", not "PostGreSQL". I
> don't think the "captital-G" is generally used, and it's specifically
> NOT what the backend uses. Sure, the key reading process is
> case-insensitive today, but it's still a good idea to keep things
> consistent :-)

I modify pgevent.c, for your both remarks: "capital G" are disappears from
source and I move GetModuleFilename() before RegCreateKey() call.

I sent full set file again, it will be easier to apply.

regards,

Laurent
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_hModule = 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 hk; 
    DWORD dwData; 
    char szBuffer[_MAX_PATH]; 

    /* Set the name of DLL full path name. */
        if (!GetModuleFileName((HMODULE)g_hModule, szBuffer, sizeof(szBuffer)))
        {
                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", &hk) ) 
        {
        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(hk,                           
                        "EventMessageFile",                     
                        0,                                                      
                        REG_EXPAND_SZ,            
                        (LPBYTE) szBuffer,        
            strlen(szBuffer) + 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. */
    dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; 
 
    if (RegSetValueEx(hk,      
            "TypesSupported",  
            0,                 
            REG_DWORD,         
            (LPBYTE) &dwData,  
            sizeof(DWORD)))    
        {
        MessageBox(NULL, "Could not set the supported types.", "PostgreSQL error", 
MB_OK|MB_ICONSTOP); 
                return SELFREG_E_TYPELIB; 
        }
 
    RegCloseKey(hk); 
        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_hModule = 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 7: don't forget to increase your free space map settings

Reply via email to