ServiceMain
A ServiceMain
function is a function that a service process specifies as the entry point
function of a particular service. The function can have any application-defined
name.
VOID WINAPI ServiceMain(
|
DWORD dwArgc, |
// number of
arguments |
|
LPTSTR *lpszArgv |
// address of array
of argument string pointers |
|
); |
|
Parameters
dwArgc
Specifies the
number of arguments in the lpszArgv array.
lpszArgv
Points to an
array of pointers that point to null-terminated argument strings. The first
argument in the array is the name of the service, and subsequent arguments are
any strings passed to the service by the process that called the StartService function to start the
service.
Return Values
This function
does not return a value.
Remarks
A service
process can start one or more services. For each service that it can start, a
service process has a SERVICE_TABLE_ENTRY structure that specifies the service name and
a pointer to the ServiceMain function for that service.
When the
service control manager receives a request to start a service, it starts the
service process (if it is not already running). The main thread of the service
process calls the StartServiceCtrlDispatcher1QMQ_HC function with a pointer to an array of SERVICE_TABLE_ENTRY
structures. Then the service control manager sends a start request to the
service control dispatcher for this service process. The service control
dispatcher creates a new thread to execute the ServiceMain function of
the service being started.
This function
should immediately call the RegisterServiceCtrlHandler function to specify a Handler function to handle control
requests. Next, it should call the SetServiceStatus function to send status
information to the service control manager. After these calls, the function
completes the initialization tasks of the service, and then it waits for the
service to terminate.
A ServiceMain
function does not return until the service is ready to terminate.
See Also