Compartilhar via


Handling Command Line Parameters

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

For Windows Mobile:

Services.exe supports the IOCTL_SERVICE_COMMAND_LINE_PARAMS IOCTL for handling command line parameters. This IOCTL can be used to indicate that a set of command-line arguments are being passed to the service from the command-line tool.

For example, a user could type the following information using the Services.exe command line tool: "services command HTP0: Arg1 Arg2 Arg3". The command string indicates that a set of arguments follows after the service instance name (HTP0:). Services.exe should pass these arguments directly to the service's xxx_IOControl (Services.exe) function.

The Services.exe command-line tool is particularly useful for applications that have only few configuration options and do not require a separate application to configure them.

The following example shows how to print out each command line argument to a debug output window and displays a "Mission accomplished" message.

xxx_IOControl(....) {
 
  case IOCTL_SERVICE_COMMAND_LINE_PARAMS:
  {
   ServicesExeCommandLineParams *pCmdLine = (ServicesExeCommandLineParams*) pBufIn;
 
   DEBUGMSG(1,(L"xxx_IOCTL got IOCTL_SERVICE_COMMAND_LINE_PARAMS, # args = %d\r\n",pCmdLine->dwArgs));
   for (DWORD i = 0; i < pCmdLine->dwArgs; i++) {
       DEBUGMSG(1,(L" xxx_IOCTL arg %d = %s\r\n",i,pCmdLine->ppwszArgs[i]));
   }
   WCHAR *szBuf = (WCHAR*)pBufOut;
   DEBUGCHK(szBuf[0] == 0);
 
   wsprintf(szBuf,L"Mission accomplished!!!");
   return TRUE;
  }
  break;
}

Note

In the past, some services have used the parameters of xxx_IOControl incorrectly. For example, some services have used the pBufIn parameter to pass a 32-bit DWORD value instead of a pointer. Services.exe no longer supports this incorrect usage. Before calling into your service, services.exe will now perform extra checks to make sure that the 32-bit value is a legal pointer. If the value for pBufIn is not legal, services.exe will not call xxx_IOControl.

See Also

Concepts

Using Services.exe from the Command Line

Other Resources

Services.exe