Re: advapi32: Implement RegisterServiceCtrlHandleExW.
Robert Shearman wrote:
--- ... @@ -603,10 +608,18 @@ static BOOL service_handle_control(HANDL
TRACE("received control %ld\n", dwControl);
- if (service_accepts_control(service, dwControl) && service->handler) + if (service_accepts_control(service, dwControl)) { - service->handler(dwControl); - ret = ERROR_SUCCESS; + if (service->extended && service->handler.handler) + { + service->handler.handler(dwControl); + ret = ERROR_SUCCESS; + } + else if (service->handler.handler_ex) + { + service->handler.handler_ex(dwControl, 0, NULL, service->context); + ret = ERROR_SUCCESS; + } } Just wondering why you use Ex handler when service->extended==FALSE and vice versa.
Andrey Turkin wrote:
Robert Shearman wrote:
@@ -603,10 +608,18 @@ static BOOL service_handle_control(HANDL
TRACE("received control %ld\n", dwControl);
- if (service_accepts_control(service, dwControl) && service->handler) + if (service_accepts_control(service, dwControl)) { - service->handler(dwControl); - ret = ERROR_SUCCESS; + if (service->extended && service->handler.handler) + { + service->handler.handler(dwControl); + ret = ERROR_SUCCESS; + } + else if (service->handler.handler_ex) + { + service->handler.handler_ex(dwControl, 0, NULL, service->context); + ret = ERROR_SUCCESS; + } }
Just wondering why you use Ex handler when service->extended==FALSE and vice versa.
That would be a bug. Thanks for catching it. -- Rob Shearman
participants (2)
-
Andrey Turkin -
Robert Shearman