SetServiceBits功能将服务的服务类型与服务控制管理器和服务器服务注册。然后,服务器服务可以将注册的服务类型公布为当前支持的类型。LAN Manager功能NetServerGetInfo和NetServerEnum获取指定的机器支持的服务类型。
服务类型表示为一组位标志; SetServiceBits功能设置或清除这些位标志的组合。
BOOL SetServiceBits(
SERVICE_STATUS_HANDLE【hServiceStatus】, | //服务状态句柄 |
DWORD【dwServiceBits】, | //服务类型位设置或清除 |
BOOL【bSetBitsOn】, | //标志设置或清除服务类型位 |
BOOL 【bUpdateImmediately】 | //标志立即通知服务器类型 |
); |
参数
【hServiceStatus】
服务控制管理员的服务状态信息结构的句柄。服务通过调用RegisterServiceCtrlHandler函数获取SERVICE_STATUS_HANDLE值。这是服务控制管理器拨打电话的方式。
【dwServiceBits】
一组指定服务类型的位标志。
某些位标志(0xC00F3F7B)保留供Microsoft使用。SetServiceBits函数失败,错误ERROR_INVALID_DATA,如果在【dwServiceBits】中设置了任何这些位标志。这些位标志中有18个:
位标志常数 | 值 |
SV_TYPE_WORKSTATION | 0x00000001 |
SV_TYPE_SERVER | 0x00000002 |
SV_TYPE_DOMAIN_CTRL | 0x00000008 |
SV_TYPE_DOMAIN_BAKCTRL | 0x00000010 |
SV_TYPE_TIME_SOURCE | 0x00000020 |
SV_TYPE_AFP | 0x00000040 |
SV_TYPE_DOMAIN_MEMBER | 0x00000100 |
SV_TYPE_PRINTQ_SERVER | 0x00000200 |
SV_TYPE_DIALIN_SERVER | 0x00000400 |
SV_TYPE_XENIX_SERVER | 0x00000800 |
SV_TYPE_SERVER_UNIX | 0x00000800 |
SV_TYPE_NT | 0x00001000 |
SV_TYPE_WFW | 0x00002000 |
SV_TYPE_POTENTIAL_BROWSER | 0x00010000 |
SV_TYPE_BACKUP_BROWSER | 0x00020000 |
SV_TYPE_MASTER_BROWSER | 0x00040000 |
SV_TYPE_DOMAIN_MASTER | 0x00080000 |
SV_TYPE_LOCAL_LIST_ONLY | 0x40000000 |
SV_TYPE_DOMAIN_ENUM | 0x80000000 |
某些位标志(0x00300084)由Microsoft定义,但并不专门为系统软件保留。这些位标志有四个:
位标志常数 | 值 |
SV_TYPE_SV_TYPE_SQLSERVER | 0x00000004 |
SV_TYPE_NOVELL | 0x00000080 |
SV_TYPE_DOMAIN_CTRL | 0x00100000 |
SV_TYPE_DOMAIN_BAKCTRL | 0x00200000 |
某些位标志(0x3FC0C000)未被Microsoft定义,并且它们的使用不受Microsoft协调。使用这些位的应用程序的开发人员应该意识到其他应用程序也可能使用它们,从而产生冲突。这些位标志中有10个:
值 | 值 |
0x00004000 | 0x02000000 |
0x00008000 | 0x04000000 |
0x00400000 | 0x08000000 |
0x00800000 | 0x10000000 |
0x01000000 | 0x20000000 |
【bSetBitsOn】
一个BOOLEAN,它指定函数是否设置或清除【dwServiceBit.】中设置的位标志。值TRUE指定要设置的位; FALSE指定清除。
【bUpdateImmediately】
一个BOOLEAN,指定服务器服务是否要执行即时更新,宣布新的服务类型。值TRUE指定立即更新; FALSE否则指定。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
也可以看看
NetServerGetInfo, NetServerEnum, RegisterServiceCtrlHandler, SetServiceStatus