易截截图软件、单文件、免安装、纯绿色、仅160KB

windows下C写服务基本框架

我将业务代码去掉了,只是用来搭个基本框架,用到的时候直接拿来用就可以了。(我这个是起一个socket)如果有什么建议请联系我。ChuangshengGuan@Gmail.com
main.c
Code:
#include "Services.h"
int main(int argc, char *argv[])
{
  SERVICE_TABLE_ENTRY ServiceTable[2];
 
  /* 指向表示服务名称字符串的指针,当定义了多个服务时,那么这个域必须指定 */
  ServiceTable[0].lpServiceName = "SoftTokenAuth";
 
  /* 指向服务主函数的指针(服务入口点) */
  ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)service_main;
  ServiceTable[1].lpServiceName = NULL;
  ServiceTable[1].lpServiceProc = NULL;
 
  /* 启动服务的控制分派机线程 */
  StartServiceCtrlDispatcher(ServiceTable);
  return 0;
}
services.c
Code:
SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;
/* 控制句柄 */
void control_handler(DWORD request)
{
   switch(request)
   {
      case SERVICE_CONTROL_STOP:
         /* 在这里执行停止动作 ....*/
         ServiceStatus.dwWin32ExitCode = 0;
         ServiceStatus.dwCurrentState = SERVICE_STOPPED;
         SetServiceStatus (hStatus, &ServiceStatus);
         return;
      case SERVICE_CONTROL_SHUTDOWN:
         /* 在这里执行关闭动作.... */
         ServiceStatus.dwWin32ExitCode = 0;
         ServiceStatus.dwCurrentState = SERVICE_STOPPED;
         SetServiceStatus (hStatus, &ServiceStatus);
         return;
       
      default:
         break;
    }
    /* 报告当前状态 */
    SetServiceStatus (hStatus, &ServiceStatus);
   


相关文档:

LINUX下进行C语言编程

源程序编译  

Makefile的编写  

程序库的链接  

程序的调试  

头文件和系统求助  


1.源程序的编译  

在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器.   下面我们以一个实例来说明如何使用gcc编译器.  
......

C/C++

9.2  共用体
C语言除了提供结构体这种可包含多种类型数据的构造类型外,还提供了一种从形式上看和结构体堪称“孪生兄弟”的构造类型——共用体(union)。
本节从共用体的概念入手,从共用体的概念、与结构体的异同、使用等方面进行详细的介绍。
9.2.1  什么是共用体
现实生活中,某些事 ......

c默认是传值的

在c中,参数默认是传值的,即在参数入栈时被复制一份
。在函数里面修改这些参数,不会影响外面的调用者。
例如
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void get_str(char * p)
{
    p = (char *)malloc(sizeof("abcd"));
    s ......

教你理解复杂的C/C++声明[转]

原文:
http://www.codeproject.com/cpp/complex_declarations.asp
作者:Vikram A Punathambekar
介绍
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修 ......

c陷阱与缺陷阅读笔记

【1】 “ = ”的优先级低于  “ || ” 且 “ = ” 为右结合性,注意一下代码为死循环:while(c=' '||c=='\t'||c=='\n')

程序本意是跳过空格,制表符,换行符,但由于不小心将c=='  '写成了c= '  '导致程序进入死循环
【2】a=-1 在很老的C版本里理解为 a =-  1
【3 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号