帮忙解释下代码,该怎么解决

帮忙解释下代码
完整代码在二楼 

int main(int argc, char* argv[])

/*两形参我百度了意思差不多能懂 但是在这代码里它的实质定义在哪(相当于下面那句询问argc!=3    没猜错的话是这三句
                             void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);//服务主函数
                                 void WINAPI ServiceCtrlHandler(DWORD Opcode);//服务控制函数
                                  oid WINAPI CmdStart(void);//要启动的程序函数 
      但是这三函数在哪被argc读到的  )*/

{
printf("\twindows based service demo\n");

if(argc!=3)//*****************************************为什么完整代码编译时不等于3    
{
printf("usage: %s -install[remove]",argv[0]);
return 0;
}
if(strcmp(argv[1],"-install")==0) // 这同问在哪被读到的-install   并且 它为什么要相等 
{
if(InstallService())
printf("\n\nService Installed Sucessfully\n");
else
printf("\n\nError Installing Service\n");
}
else if(strcmp(argv[1],"-remove")==0) // 删除
{
if(DeleteService())
printf("\n\nService remove sucessfully\n");
else
printf("\n\nError removing Service\n");
}
else
{
printf("\nusage: %s -install[remove]\n",argv[0]);
return 0;
}
------解决思路----------------------

C:\>sc
描述:
        SC 是用于与
        服务控制管理器和服务进行通信的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...


        选项 <server> 的格式为 "\\ServerName"
        可以键入 "sc [command]" 以获得命令的进一步帮助
        命令:
          query-----------查询服务的状态, 或
                          枚举服务类型的状态。
          queryex---------查询服务的扩展状态, 或
                          枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送 PAUSE 控制请求。
          interrogate-----向服务发送 INTERROGATE 控制请求。
          continue--------向服务发送 CONTINUE 控制请求。
          stop------------向服务发送 STOP 请求。
          config----------更改服务的配置(永久)。
          description-----更改服务的描述。
          failure---------更改服务失败时所进行的操作。
          sidtype---------更改服务的服务 SID 类型。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询服务失败时所进行的操作。
          qsidtype--------查询服务的服务 SID 类型。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          showsid---------显示与
                          任意名称相对应的服务 SID 字符串。
          GetDisplayName--获取服务的 DisplayName。
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务的依存关系。

        下列命令不要求服务名称:
        sc <server> <command> <option>
          boot------------(ok 
------解决思路----------------------
 bad) 表明是否将最后一次启动
                          保存为最后一次的正确启动配置
          Lock------------锁定服务数据库
          QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
        sc start MyService

是否要查看 QUERY 和 QUERYEX 命令的帮助? [ y 
------解决思路----------------------
 n ]:
n