Re: Postmaster service code
От | Magnus Hagander |
---|---|
Тема | Re: Postmaster service code |
Дата | |
Msg-id | 6BCB9D8A16AC4241919521715F4D8BCE17167B@algol.sollentuna.se обсуждение исходный текст |
Ответ на | Postmaster service code ("Dave Page" <dpage@vale-housing.co.uk>) |
Список | pgsql-hackers-win32 |
>Yes, we need to create and register a tiny DLL to avoid to have error >message joined to our log message such as describe Dave in >it's previous mail. > >By studing the works made by Claudio, a simple way to achieve >this work it >to create a message wich contains only %1 like the mc file >i'am attached >with this post, and to modify a little bit the write_eventlog >function he >made (4 parameters of ReportEvent have to change to 0 with >0x00000001L or >PGWIN32_EVENTLOG_MSG in my sample). Yes, this is exactly what I had in mind whien I did the eventlogging code. Except can't you keep using msgid 0? Or is it prohibited? (I thought I had used 0 in a previous project, but my memory may be a bit off) If we can go with 0 I think we should - it seems more appropriate, especialy in case we evern want to map error codes to eventids. >To obtain a DLL, we need Microsoft MC Compiler to create a RC >file and after >we can finish the compilation with Msys tools. Question: Doesn't MC also generate a .bin-file? IIRC, the .RC file is just a reference to the .BIN? If not, then it's an easy go - I suggest we put both the .RC and the .MC file in, so things will still build fully from mingw. If not, I don't know what the deal is about binary files - could we stuff a pre-generated .BIN file in CVS? [I know cvs can, but is that acceptable in postgresql?] >To finish, we have to register the DLL in >HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\EventLog\A >pplication >Create a entry name PostGreSQL, add a key EventMessageFile set >it with the >full path of the DLL >two issues : made this job by setup program or by >write_eventlog() itself. write_eventlog() cannot do this, since the postmaster will run as a non-administrator, and thus not have permissions under that key. The installation program should normally do this. I would suggest implementing the DllRegisterServer() and DllUnRegisterServer() entrypoint in a small C file that is compiled into the DLL. That way, a user can just run "regsvr32 pgevent.dll" (or whatever it's called). See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm /cmf_d2l_3cmq.asp >Do you know, where will be the right place to put these files and >update/create a Makefile I would suggest creating "bin/pgevent". Comments? //mha
В списке pgsql-hackers-win32 по дате отправления: