summaryrefslogtreecommitdiff
path: root/src/include/winproc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/winproc.h')
-rw-r--r--src/include/winproc.h235
1 files changed, 0 insertions, 235 deletions
diff --git a/src/include/winproc.h b/src/include/winproc.h
deleted file mode 100644
index 139f07e61..000000000
--- a/src/include/winproc.h
+++ /dev/null
@@ -1,235 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2001, 2002, 2003, 2004, 2005 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Nils Durner
23 *
24 * @file
25 * Definitions for MS Windows
26 */
27
28#ifndef _WINPROC_H
29#define _WINPROC_H
30
31#include <io.h>
32#include <stdio.h>
33#include <sys/types.h>
34#include <sys/stat.h>
35#include <sys/timeb.h>
36#include <time.h>
37#include <dirent.h>
38#ifndef FD_SETSIZE
39#define FD_SETSIZE 1024
40#endif
41#include <winsock2.h>
42#include <ws2tcpip.h>
43#include <windows.h>
44#include <winerror.h>
45#include <iphlpapi.h>
46#include <shlobj.h>
47#include <objbase.h>
48#include <sys/param.h> /* #define BYTE_ORDER */
49#include <ntsecapi.h>
50#include <lm.h>
51#include <aclapi.h>
52
53
54#ifdef __cplusplus
55extern "C"
56{
57#endif
58
59#ifndef MAX_NAME_LENGTH
60#define MAX_NAME_LENGTH 25
61#endif
62
63typedef DWORD WINAPI (*TNtQuerySystemInformation) (int, PVOID, ULONG, PULONG);
64typedef DWORD WINAPI (*TGetIfEntry) (PMIB_IFROW pIfRow);
65typedef DWORD WINAPI (*TGetIpAddrTable) (PMIB_IPADDRTABLE pIpAddrTable,
66 PULONG pdwSize, BOOL bOrder);
67typedef DWORD WINAPI (*TGetIfTable) (PMIB_IFTABLE pIfTable, PULONG pdwSize,
68 BOOL bOrder);
69typedef DWORD WINAPI (*TGetBestInterfaceEx) (struct sockaddr *, PDWORD);
70/* TODO: Explicitly import -A variants (i.e. TCreateHardLinkA) or -W
71 * variants (TCreateHardLinkW), etc.
72 */
73typedef DWORD WINAPI (*TCreateHardLink) (LPCTSTR lpFileName,
74 LPCTSTR lpExistingFileName,
75 LPSECURITY_ATTRIBUTES
76 lpSecurityAttributes);
77typedef SC_HANDLE WINAPI (*TOpenSCManager) (LPCTSTR lpMachineName,
78 LPCTSTR lpDatabaseName,
79 DWORD dwDesiredAccess);
80typedef SC_HANDLE WINAPI (*TCreateService) (SC_HANDLE hSCManager,
81 LPCTSTR lpServiceName,
82 LPCTSTR lpDisplayName,
83 DWORD dwDesiredAccess,
84 DWORD dwServiceType,
85 DWORD dwStartType,
86 DWORD dwErrorControl,
87 LPCTSTR lpBinaryPathName,
88 LPCTSTR lpLoadOrderGroup,
89 LPDWORD lpdwTagId,
90 LPCTSTR lpDependencies,
91 LPCTSTR lpServiceStartName,
92 LPCTSTR lpPassword);
93typedef BOOL WINAPI (*TCloseServiceHandle) (SC_HANDLE hSCObject);
94typedef BOOL WINAPI (*TDeleteService) (SC_HANDLE hService);
95typedef SERVICE_STATUS_HANDLE WINAPI (*TRegisterServiceCtrlHandler) (LPCTSTR
96 lpServiceName,
97 LPHANDLER_FUNCTION
98 lpHandlerProc);
99typedef BOOL WINAPI (*TSetServiceStatus) (SERVICE_STATUS_HANDLE
100 hServiceStatus,
101 LPSERVICE_STATUS lpServiceStatus);
102typedef BOOL WINAPI (*TStartServiceCtrlDispatcher) (const
103 LPSERVICE_TABLE_ENTRY
104 lpServiceTable);
105typedef BOOL WINAPI (*TControlService) (SC_HANDLE hService, DWORD dwControl,
106 LPSERVICE_STATUS lpServiceStatus);
107typedef SC_HANDLE WINAPI (*TOpenService) (SC_HANDLE hSCManager,
108 LPCTSTR lpServiceName,
109 DWORD dwDesiredAccess);
110typedef DWORD WINAPI (*TGetAdaptersInfo) (PIP_ADAPTER_INFO pAdapterInfo,
111 PULONG pOutBufLen);
112typedef NET_API_STATUS WINAPI (*TNetUserAdd) (LPCWSTR, DWORD, PBYTE, PDWORD);
113typedef NET_API_STATUS WINAPI (*TNetUserSetInfo) (LPCWSTR servername,
114 LPCWSTR username,
115 DWORD level, LPBYTE buf,
116 LPDWORD param_err);
117typedef NTSTATUS NTAPI (*TLsaOpenPolicy) (PLSA_UNICODE_STRING,
118 PLSA_OBJECT_ATTRIBUTES, ACCESS_MASK,
119 PLSA_HANDLE);
120typedef NTSTATUS NTAPI (*TLsaAddAccountRights) (LSA_HANDLE, PSID,
121 PLSA_UNICODE_STRING, ULONG);
122typedef NTSTATUS NTAPI (*TLsaRemoveAccountRights) (LSA_HANDLE, PSID, BOOLEAN,
123 PLSA_UNICODE_STRING,
124 ULONG);
125typedef NTSTATUS NTAPI (*TLsaClose) (LSA_HANDLE);
126typedef BOOL WINAPI (*TLookupAccountName) (LPCTSTR lpSystemName,
127 LPCTSTR lpAccountName, PSID Sid,
128 LPDWORD cbSid,
129 LPTSTR ReferencedDomainName,
130 LPDWORD cchReferencedDomainName,
131 PSID_NAME_USE peUse);
132
133typedef BOOL WINAPI (*TGetFileSecurity) (LPCTSTR lpFileName,
134 SECURITY_INFORMATION
135 RequestedInformation,
136 PSECURITY_DESCRIPTOR
137 pSecurityDescriptor, DWORD nLength,
138 LPDWORD lpnLengthNeeded);
139typedef BOOL WINAPI (*TInitializeSecurityDescriptor) (PSECURITY_DESCRIPTOR
140 pSecurityDescriptor,
141 DWORD dwRevision);
142typedef BOOL WINAPI (*TGetSecurityDescriptorDacl) (PSECURITY_DESCRIPTOR
143 pSecurityDescriptor,
144 LPBOOL lpbDaclPresent,
145 PACL * pDacl,
146 LPBOOL lpbDaclDefaulted);
147typedef BOOL WINAPI (*TGetAclInformation) (PACL pAcl, LPVOID pAclInformation,
148 DWORD nAclInformationLength,
149 ACL_INFORMATION_CLASS
150 dwAclInformationClass);
151typedef BOOL WINAPI (*TInitializeAcl) (PACL pAcl, DWORD nAclLength,
152 DWORD dwAclRevision);
153typedef BOOL WINAPI (*TGetAce) (PACL pAcl, DWORD dwAceIndex, LPVOID * pAce);
154typedef BOOL WINAPI (*TEqualSid) (PSID pSid1, PSID pSid2);
155typedef BOOL WINAPI (*TAddAce) (PACL pAcl, DWORD dwAceRevision,
156 DWORD dwStartingAceIndex, LPVOID pAceList,
157 DWORD nAceListLength);
158typedef BOOL WINAPI (*TAddAccessAllowedAce) (PACL pAcl, DWORD dwAceRevision,
159 DWORD AccessMask, PSID pSid);
160typedef BOOL WINAPI (*TSetNamedSecurityInfo) (LPTSTR pObjectName,
161 SE_OBJECT_TYPE ObjectType,
162 SECURITY_INFORMATION
163 SecurityInfo, PSID psidOwner,
164 PSID psidGroup, PACL pDacl,
165 PACL pSacl);
166
167extern TGetBestInterfaceEx GNGetBestInterfaceEx;
168extern TNtQuerySystemInformation GNNtQuerySystemInformation;
169extern TGetIfEntry GNGetIfEntry;
170extern TGetIpAddrTable GNGetIpAddrTable;
171extern TGetIfTable GNGetIfTable;
172extern TCreateHardLink GNCreateHardLink;
173extern TOpenSCManager GNOpenSCManager;
174extern TCreateService GNCreateService;
175extern TCloseServiceHandle GNCloseServiceHandle;
176extern TDeleteService GNDeleteService;
177extern TRegisterServiceCtrlHandler GNRegisterServiceCtrlHandler;
178extern TSetServiceStatus GNSetServiceStatus;
179extern TStartServiceCtrlDispatcher GNStartServiceCtrlDispatcher;
180extern TControlService GNControlService;
181extern TOpenService GNOpenService;
182extern TGetAdaptersInfo GNGetAdaptersInfo;
183extern TNetUserAdd GNNetUserAdd;
184extern TNetUserSetInfo GNNetUserSetInfo;
185extern TLsaOpenPolicy GNLsaOpenPolicy;
186extern TLsaAddAccountRights GNLsaAddAccountRights;
187extern TLsaRemoveAccountRights GNLsaRemoveAccountRights;
188extern TLsaClose GNLsaClose;
189extern TLookupAccountName GNLookupAccountName;
190extern TGetFileSecurity GNGetFileSecurity;
191extern TInitializeSecurityDescriptor GNInitializeSecurityDescriptor;
192extern TGetSecurityDescriptorDacl GNGetSecurityDescriptorDacl;
193extern TGetAclInformation GNGetAclInformation;
194extern TInitializeAcl GNInitializeAcl;
195extern TGetAce GNGetAce;
196extern TEqualSid GNEqualSid;
197extern TAddAce GNAddAce;
198extern TAddAccessAllowedAce GNAddAccessAllowedAce;
199extern TSetNamedSecurityInfo GNSetNamedSecurityInfo;
200
201
202BOOL CreateShortcut(const char *pszSrc, const char *pszDest);
203BOOL DereferenceShortcut(char *pszShortcut);
204long QueryRegistry(HKEY hMainKey, const char *pszKey, const char *pszSubKey,
205 char *pszBuffer, long *pdLength);
206int ListNICs(void (*callback)(void *, const char *, int), void *cls);
207BOOL AddPathAccessRights(char *lpszFileName, char *lpszAccountName,
208 DWORD dwAccessMask);
209char *winErrorStr(const char *prefix, int dwErr);
210void EnumNICs(PMIB_IFTABLE * pIfTable, PMIB_IPADDRTABLE * pAddrTable);
211
212#define ENUMNICS3_MASK_OK 0x01
213#define ENUMNICS3_BCAST_OK 0x02
214
215struct EnumNICs3_results {
216 unsigned char flags;
217 int is_default;
218 char pretty_name[1001];
219 size_t addr_size;
220 SOCKADDR_STORAGE address;
221 SOCKADDR_STORAGE mask;
222 SOCKADDR_STORAGE broadcast;
223};
224
225int EnumNICs3(struct EnumNICs3_results **, int *EnumNICs3_results_count);
226void EnumNICs3_free(struct EnumNICs3_results *);
227int GNInitWinEnv();
228void GNShutdownWinEnv();
229
230BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode, DWORD dwTimeout);
231#ifdef __cplusplus
232}
233#endif
234
235#endif