module System.Win32.SystemServices.Services.Raw where
import Foreign.Ptr (Ptr)
import System.Win32.Types
import System.Win32.SystemServices.Services.SERVICE_STATUS
import System.Win32.SystemServices.Services.SERVICE_TABLE_ENTRY
import System.Win32.SystemServices.Services.Types
foreign import stdcall "wrapper"
smfToFunPtr :: SERVICE_MAIN_FUNCTION -> IO LPSERVICE_MAIN_FUNCTION
foreign import stdcall "wrapper"
handlerToFunPtr :: HANDLER_FUNCTION_EX -> IO LPHANDLER_FUNCTION_EX
foreign import stdcall "windows.h QueryServiceStatus"
c_QueryServiceStatus :: HANDLE -> Ptr SERVICE_STATUS -> IO BOOL
foreign import stdcall "windows.h RegisterServiceCtrlHandlerExW"
c_RegisterServiceCtrlHandlerEx :: LPTSTR -> LPHANDLER_FUNCTION_EX -> Ptr () -> IO HANDLE
foreign import stdcall "windows.h SetServiceStatus"
c_SetServiceStatus :: HANDLE -> Ptr SERVICE_STATUS -> IO BOOL
foreign import stdcall "windows.h StartServiceCtrlDispatcherW"
c_StartServiceCtrlDispatcher :: Ptr SERVICE_TABLE_ENTRY -> IO BOOL