//
//
//
//
//
//
//
//
//
//
软件Tags:
易语言控制系统服务源码系统结构:线程池控制,前台控制,命令行控制,服务入口,回调消息,安装服务,启动服务,停止服务,卸载服务,初始化_函数,退出_函数,启动,关闭,投递消息,状态,置工作状态,取工作状态,等待消息,增加线程,置线程工作状态,取线程工作状态,启动线程池,增加新线程,线程状态,投递任务,等待线程池消息,关闭线程池,服务操作1,StartServiceCtrlDispatcherA,RegisterServiceCtrlHandlerA,SetServiceStatus,OpenSCManagerA,CreateServiceA,CloseServiceHandle,OpenServiceA,DeleteService,StartServiceA,ControlService,CreateThread,ShellExecuteA,消息框1,GetLastError,CreateIoCompletionPort,GetQueuedCompletionStatus,PostQueuedCompletionStatus,GetSystemInfo, ======程序集 || ||------_启动子程序 || ||------线程池控制 || ||------前台控制 || ||------命令行控制 || ||------服务入口 || ||------回调消息 || ||------安装服务 || ||------启动服务 || ||------停止服务 || ||------卸载服务 || ||------初始化_函数 || ||------退出_函数 || || ======线程池 || ||------_初始化 || ||------_销毁 || ||------启动 || ||------关闭 || ||------投递消息 || ||------状态 || ||------置工作状态 || ||------取工作状态 || ||------等待消息 || ||------增加线程 || || ======程序集1 || ||------_工作线程 || ||------置线程工作状态 || ||------取线程工作状态 || ||------启动线程池 || ||------增加新线程 || ||------线程状态 || ||------投递任务 || ||------等待线程池消息 || ||------关闭线程池 || ||------服务操作1 || || ======调用的Dll || ||---[dll]------StartServiceCtrlDispatcherA || ||---[dll]------RegisterServiceCtrlHandlerA || ||---[dll]------SetServiceStatus || ||---[dll]------OpenSCManagerA || ||---[dll]------CreateServiceA || ||---[dll]------CloseServiceHandle || ||---[dll]------OpenServiceA || ||---[dll]------DeleteService || ||---[dll]------StartServiceA || ||---[dll]------ControlService || ||---[dll]------CreateThread || ||---[dll]------ShellExecuteA || ||---[dll]------消息框1 || ||---[dll]------GetLastError || ||---[dll]------CreateIoCompletionPort || ||---[dll]------GetQueuedCompletionStatus || ||---[dll]------PostQueuedCompletionStatus || ||---[dll]------GetSystemInfo || ||---[dll]------_关闭句柄 调用的DLL命令: .DLL命令StartServiceCtrlDispatcherA,整数型 .参数lpServiceStartTable,服务 .DLL命令RegisterServiceCtrlHandlerA,整数型 .参数lpServiceName,文本型 .参数lpHandlerProc,子程序指针 .DLL命令SetServiceStatus,整数型 .参数hServiceStatus,整数型 .参数lpServiceStatus,服务控制 .DLL命令OpenSCManagerA,整数型,,,,建立了一个连接到服务控制管理器,并打开指定的数据库。 .参数lpMachineName,整数型,,指向零终止字符串,命名为目标计算机。如果该指针为NULL,或者如果它指向一个空字符串,函数连接到服务控制管理器在本地计算机上。 .参数lpDatabaseName,整数型,,指向零终止字符串,名称的服务控制管理数据库,以开放。此字符串应指定ServicesActive。如果该指针为NULL,该ServicesActive数据库默认情况下打开。 .参数dwDesiredAccess,整数型,,指定服务的访问控制管理。才准予进入的要求,系统会检查访问令牌的调用进程对任意访问控制列表的安全描述符与服务控制管理器对象。 .DLL命令CreateServiceA,整数型,,,,创建一个服务对象并且把它加入到服务管理数据库中,如果函数成功,返回值将是该服务的句柄。如果函数失败,则返回值为NULL。若要扩展的错误了解调用GetLastError。 .参数句柄,整数型,,服务控制管理器数据库的句柄。此句柄由OpenSCManager函数返回,并且必须具有SC_MANAGER_CREATE_SERVICE的访问权限。有关更多的信息请参阅Service安全和访问权限。 .参数服务名称,文本型,,要安装该服务的名称。最大字符串长度为256个字符。服务控制管理器数据库将保留在的字符的大小写,但是服务名称比较总是区分大小写。正斜杠和一个反斜线不是有效的服务名称字符。 .参数显示名称,文本型,,[可选]对被用户界面程序用来识别服务的显示名称。此字符串具有最大长度为256个字符。服务控制管理器中的情况下保留名称。显示名称比较总是不区分大小写。 .参数访问令牌,整数型,,对服务的访问。请求的访问之前,系统将检查调用进程的访问令牌。一个值列表请参阅服务安全和访问权限。 .参数服务类型,整数型,,dwServiceType服务类型。1:驱动服务程序2:文件系统驱动服务程序4:保留8:保留16:运行于独立进程的服务程序32:被多个进程共享的服务程序 .参数启动选项,整数型,,服务启动选项。此参数可以是下列值之一:0:用于由系统加载器创建的设备驱动程序启动。1:用于由IoInitSystem函数创建的设备驱动程序启动。2:系统启动时由服务控制管理器自动启动该服务程序。3:用于当有进程调用StartService函数时由服务控制管理器(SCM)启动的服务。4:表示该服务不可启动。 .参数错误保护,整数型,,当该启动服务失败时产生错误的严重程度以及采取的保护措施。此参数可以是下列值之一:0:服务启动程序将忽略该错误并返回继续执行。1:服务启动程序将把该错误记录到事件日志中并返回继续执行。3:服务启动程序将把该错误记录到事件日志中。若最后一次正确配置可用,服务启动程序将以最后一次正确配置重新启动,否则将返回继续执行。3:服务启动程序将把该错误记录到事件日志中。若最后一次正确配置可用,服务启动程序将以最后一次正确配置重新启动,否则将退出执行 .参数lpBinaryPathName,文本型,,[可选]服务程序二进制文件,完全限定路径。如果路径中包含空格它必须被引用,以便它正确的解析。 .参数lpLoadOrderGroup,整数型,,[可选]在加载顺序此服务所属的组的名称。指定NULL或空字符串,如果该服务不属于组。启动程序使用加载顺序组加载服务相对于其他组的指定顺序组。加载顺序组列表包含在下面的注册表值:[HKEY_LOCAL_MACHINESystemCurrentControlSetControlServiceGroupOrder] .参数lpdwTagId,整数型,,[可选]指向接收lpLoadOrderGroup参数中指定的组中唯一的标记值的变量。如果不更改现有的标签,请指定NULL。订购服务启动一个加载顺序通过在以下注册表值中指定标记顺序矢量的组中,您可以使用的标记:[HKEY_LOCAL_MACHINESystemCurrentControlSetControlGroupOrderList]。标记只能用于具有SERVICE_BOOT_START或启动类型的SERVICE_SYSTEM_START驱动程序服务。 .参数lpDependencies,整数型,,[可选]空分隔名称的服务或加载顺序组系统必须在这个服务开始之前的双空终止数组的指针。如果服务没有任何依赖关系,请指定为NULL或空字符串。一组依赖意味着如果至少一个组的成员运行后试图启动组的所有成员,可以运行此服务。当需要区分各服务由于服务和服务组共享相同的命名空间前缀与SC_GROUP_IDENTIFIER的组名时必须加上此参数。 .参数lp,整数型,,[可选]该服务应在其下运行的帐户的名称。如果SERVICE_WIN32_OWN_PROCESS服务类型DomainNameUserName窗体中使用一个帐户名。服务进程将被作为此用户登录。如果该帐户属于内置域,您可以指定.UserName。 .参数lpPassword,整数型,,由lpServiceStartName参数指定的帐户名的密码。如果该帐户没有密码,或者如果在LocalService,NetworkService或LocalSystem帐户中运行该服务,请指定一个空字符串。更多的信息请参阅服务记录列表。如果托管的服务帐户或虚拟帐户名称的名称由lpServiceStartName参数指定的帐户名称lpPassword参数必须为NULL。 .DLL命令CloseServiceHandle,整数型 .参数hSCObject,整数型 .DLL命令OpenServiceA,整数型 .参数hSCManager,整数型 .参数lpServiceName,文本型 .参数dwDesiredAccess,整数型 .DLL命令DeleteService,整数型 .参数hService,整数型 .DLL命令StartServiceA,整数型 .参数hService,整数型 .参数dwNumServiceArgs,整数型 .参数lpServiceArgVectors,整数型 .DLL命令ControlService,逻辑型 .参数hService,整数型 .参数dwControl,整数型 .参数lpServiceStatus,服务控制 .DLL命令CreateThread,整数型 .参数lpThreadAttributes,整数型 .参数dwStackSize,整数型 .参数lpStartAddress,子程序指针 .参数lpParameter,整数型 .参数dwCreationFlags,整数型 .参数lpThreadId,整数型 .DLL命令ShellExecuteA,整数型 .参数hwnd,整数型 .参数lpOperation,文本型 .参数lpFile,文本型 .参数lpParameters,文本型 .参数lpDirectory,文本型 .参数nShowCmd,整数型 .DLL命令消息框1,整数型,,"MessageBoxExA" .参数eax,整数型 .参数ebx,文本型 .参数ecx,文本型 .参数edx,整数型 .参数eex,整数型 .DLL命令GetLastError,整数型,,"GetLastError" .DLL命令CreateIoCompletionPort,整数型,,"CreateIoCompletionPort",公开,返回IOCP的句柄。若为NULL创建失败,不为NULL创建成功 .参数Handle,整数型,,关联的文件句柄。 .参数ExistingCompletionPort,整数型,,已经存在的完成端口。如果为NULL,则为新建一个IOCP。 .参数CompletionKey,整数型,,传送给处理函数的参数。 .参数NumberOfConcurrentThreads,整数型,,有多少个线程在访问这个消息队列。当参数不为0的时候,系统忽略该参数,当该参数为0表示允许同时相等数目于处理器个数的线程访问该消息队列。 .DLL命令GetQueuedCompletionStatus,整数型,,"GetQueuedCompletionStatus",公开,调用成功,则返回非零数值, .参数CompletionPort,整数型,,指定的IOCP,该值由CreateIoCompletionPort函数创建。 .参数lpNumberOfBytesTransferred,整数型,传址,一次完成后的I/O操作所传送数据的字节数。 .参数lpCompletionKey,整数型,传址,当文件I/O操作完成后,用于存放与之关联的CK。 .参数lpOverlapped,整数型,传址,为调用IOCP机制所引用的OVERLAPPED结构。 .参数dwMilliseconds,整数型,,用于指定调用者等待CP的时间。 .DLL命令PostQueuedCompletionStatus,整数型,,"PostQueuedCompletionStatus",公开 .参数CompletionPort,整数型,,指定想向其发送一个完成数据包的完成端口对象。 .参数dwNumberOfBytesTransferred,整数型,,指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数 .参数dwCompletionKey,整数型,,指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数 .参数lpOverlapped,整数型,,指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数 .DLL命令GetSystemInfo,,,"GetSystemInfo" .参数lpSystemInfo,SYSTEM_INFO .DLL命令_关闭句柄,整数型,,"CloseHandle",公开,kernel32.dll .参数对象句柄,整数型
