> While trying to use RegisterServiceCtrlHandler function, it appears
> that
>   this function acts like RegisterServiceCtrlHandlerEx if it is run on
> W2000 or higher.

Yes - this is because it calls RegisterServiceCtrlHandlerEx on those
platforms.

> According to msdn, a HandlerEx function has to be used to get
> callbacks.
> This function should take 4 arguments :
> DWORD WINAPI HandlerEx(
>    __in  DWORD dwControl,
>    __in  DWORD dwEventType,
>    __in  LPVOID lpEventData,
>    __in  LPVOID lpContext
> );
> 
> But in fact it gets only one.
> I've modified win32serviceutil to verify it :
> def ServiceCtrlHandler(self, control) => def ServiceCtrlHandler(self,
> control, *args)
> 
> and :
> def SvcOther(self, control, *args):
> 
> *args still is an empty tuple (). I only get "dwControl", why don't I
> get "dwEventType", "lpEventData" and "lpContext" (this last one is user
> defined so it can be empty, but not the other two) ?

It is because I took a bit of a shortcut, and when moving to
RegisterServiceCtrlHandlerEx() I didn't work to allow for an alternative
python callback that takes the additional args (and supplying them, as in
the '* args' in your example, would break existing services).  I'd be happy
to add this though - contact me offline for the best way to arrange for this
(and lpContext is used by the implementation, so if you have a specific
use-case for this param, I'd like to know about that too)
 
Cheers,

Mark

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to