/
lmsvc.d
156 lines (147 loc) · 5.67 KB
/
lmsvc.d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/**
* Windows API header module
*
* Translated from MinGW Windows headers
*
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC core/sys/windows/_lmsvc.d)
*/
module core.sys.windows.lmsvc;
version (Windows):
// FIXME: Is this file deprecated? All of the functions are only for Win16.
/**
Changes relative to MinGW:
lmsname is not imported publicly (instead, core.sys.windows.lm imports it directly).
*/
// TODO: 5 macros
import core.sys.windows.lmcons, core.sys.windows.lmsname, core.sys.windows.windef;
const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT";
enum SERVICE_UNINSTALLED=0;
enum SERVICE_INSTALL_PENDING=1;
enum SERVICE_UNINSTALL_PENDING=2;
enum SERVICE_INSTALLED=3;
enum SERVICE_INSTALL_STATE=3;
enum SERVICE_PAUSE_STATE=18;
enum LM20_SERVICE_ACTIVE=0;
enum LM20_SERVICE_CONTINUE_PENDING=4;
enum LM20_SERVICE_PAUSE_PENDING=8;
enum LM20_SERVICE_PAUSED=18;
enum SERVICE_NOT_UNINSTALLABLE=0;
enum SERVICE_UNINSTALLABLE=16;
enum SERVICE_NOT_PAUSABLE=0;
enum SERVICE_PAUSABLE=32;
enum SERVICE_REDIR_PAUSED=0x700;
enum SERVICE_REDIR_DISK_PAUSED=256;
enum SERVICE_REDIR_PRINT_PAUSED=512;
enum SERVICE_REDIR_COMM_PAUSED=1024;
enum SERVICE_CTRL_INTERROGATE=0;
enum SERVICE_CTRL_PAUSE=1;
enum SERVICE_CTRL_CONTINUE=2;
enum SERVICE_CTRL_UNINSTALL=3;
enum SERVICE_CTRL_REDIR_DISK=1;
enum SERVICE_CTRL_REDIR_PRINT=2;
enum SERVICE_CTRL_REDIR_COMM=4;
enum SERVICE_IP_NO_HINT=0;
enum SERVICE_CCP_NO_HINT=0;
enum SERVICE_IP_QUERY_HINT=0x10000;
enum SERVICE_CCP_QUERY_HINT=0x10000;
enum SERVICE_IP_CHKPT_NUM=255;
enum SERVICE_CCP_CHKPT_NUM=255;
enum SERVICE_IP_WAIT_TIME=0xFF00;
enum SERVICE_CCP_WAIT_TIME=0xFF00;
enum SERVICE_IP_WAITTIME_SHIFT=8;
enum SERVICE_NTIP_WAITTIME_SHIFT=12;
enum UPPER_HINT_MASK=0xFF00;
enum LOWER_HINT_MASK=255;
enum UPPER_GET_HINT_MASK=0xFF00000;
enum LOWER_GET_HINT_MASK=0xFF00;
enum SERVICE_NT_MAXTIME=0xFFFF;
enum SERVICE_RESRV_MASK=0x1FFFF;
enum SERVICE_MAXTIME=255;
enum SERVICE_BASE=3050;
enum SERVICE_UIC_NORMAL=0;
enum SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1;
enum SERVICE_UIC_MISSPARM = SERVICE_BASE+2;
enum SERVICE_UIC_UNKPARM = SERVICE_BASE+3;
enum SERVICE_UIC_RESOURCE = SERVICE_BASE+4;
enum SERVICE_UIC_CONFIG = SERVICE_BASE+5;
enum SERVICE_UIC_SYSTEM = SERVICE_BASE+6;
enum SERVICE_UIC_INTERNAL = SERVICE_BASE+7;
enum SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8;
enum SERVICE_UIC_DUPPARM = SERVICE_BASE+9;
enum SERVICE_UIC_KILL = SERVICE_BASE+10;
enum SERVICE_UIC_EXEC = SERVICE_BASE+11;
enum SERVICE_UIC_SUBSERV = SERVICE_BASE+12;
enum SERVICE_UIC_CONFLPARM = SERVICE_BASE+13;
enum SERVICE_UIC_FILE = SERVICE_BASE+14;
enum SERVICE_UIC_M_NULL=0;
enum SERVICE_UIC_M_MEMORY = SERVICE_BASE+20;
enum SERVICE_UIC_M_DISK = SERVICE_BASE+21;
enum SERVICE_UIC_M_THREADS = SERVICE_BASE+22;
enum SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23;
enum SERVICE_UIC_M_SECURITY = SERVICE_BASE+24;
enum SERVICE_UIC_M_LANROOT = SERVICE_BASE+25;
enum SERVICE_UIC_M_REDIR = SERVICE_BASE+26;
enum SERVICE_UIC_M_SERVER = SERVICE_BASE+27;
enum SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28;
enum SERVICE_UIC_M_FILES = SERVICE_BASE+29;
enum SERVICE_UIC_M_LOGS = SERVICE_BASE+30;
enum SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31;
enum SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32;
enum SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33;
enum SERVICE_UIC_M_UAS = SERVICE_BASE+34;
enum SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35;
enum SERVICE_UIC_M_WKSTA = SERVICE_BASE+37;
enum SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38;
enum SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39;
enum SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40;
enum SERVICE_UIC_M_LAZY = SERVICE_BASE+41;
enum SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42;
enum SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43;
enum SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44;
enum SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45;
enum SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46;
enum SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47;
enum SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48;
enum SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49;
enum SERVICE2_BASE=5600;
enum SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0;
enum SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1;
enum SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2;
struct SERVICE_INFO_0 {
LPWSTR svci0_name;
}
alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0;
struct SERVICE_INFO_1 {
LPWSTR svci1_name;
DWORD svci1_status;
DWORD svci1_code;
DWORD svci1_pid;
}
alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1;
struct SERVICE_INFO_2 {
LPWSTR svci2_name;
DWORD svci2_status;
DWORD svci2_code;
DWORD svci2_pid;
LPWSTR svci2_text;
DWORD svci2_specific_error;
LPWSTR svci2_display_name;
}
alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2;
extern (Windows) {
deprecated {
NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD,
PBYTE*);
NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD,
PDWORD, PDWORD);
NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*);
NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*,
PBYTE*);
}
}
//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
//MACRO #define SERVICE_CCP_CODE(t, n) ((long)SERVICE_CCP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
//MACRO #define SERVICE_UIC_CODE(c, m) ((long)(((long)c<<16)|(long)(USHORT)m))
//MACRO #define SERVICE_NT_CCP_CODE(t, n) (((long)SERVICE_CCP_QUERY_HINT)|((long)(n))|(((t)&LOWER_HINT_MASK)<<SERVICE_IP_WAITTIME_SHIFT)|(((t)&UPPER_HINT_MASK)<<SERVICE_NTIP_WAITTIME_SHIFT))
//MACRO #define SERVICE_NT_WAIT_GET(c) ((((c)&UPPER_GET_HINT_MASK)>>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT))