net: Display a more specific error message when a service command fails.

Use FormatMessage to get the message for the Win32 error.
This commit is contained in:
Rob Shearman 2008-04-01 12:49:29 +01:00 committed by Alexandre Julliard
parent e4136355f0
commit e4c8d763c9
1 changed files with 24 additions and 2 deletions

View File

@ -37,6 +37,20 @@ int output_string(int msg, ...)
return 0;
}
BOOL output_error_string(DWORD error)
{
LPSTR pBuffer;
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, error, 0, (LPSTR)&pBuffer, 0, NULL))
{
fputs(pBuffer, stdout);
LocalFree(pBuffer);
return TRUE;
}
return FALSE;
}
static BOOL net_use(int argc, char *argv[])
{
USE_INFO_2 *buffer, *connection;
@ -140,14 +154,22 @@ static BOOL net_service(int operation, char *service_name)
result = StartService(serviceHandle, 0, NULL);
if(result) output_string(STRING_START_SVC_SUCCESS, service_display_name);
else output_string(STRING_START_SVC_FAIL, service_display_name);
else
{
if (!output_error_string(GetLastError()))
output_string(STRING_START_SVC_FAIL, service_display_name);
}
break;
case NET_STOP:
output_string(STRING_STOP_SVC, service_display_name);
result = StopService(SCManager, serviceHandle);
if(result) output_string(STRING_STOP_SVC_SUCCESS, service_display_name);
else output_string(STRING_STOP_SVC_FAIL, service_display_name);
else
{
if (!output_error_string(GetLastError()))
output_string(STRING_STOP_SVC_FAIL, service_display_name);
}
break;
}