Reactos
1/*
2 * Copyright (C) 2006 Dmitry Timoshkov
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef __WINE_NTDSAPI_H
20#define __WINE_NTDSAPI_H
21
22/* FIXME: #include <schedule.h> */
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28DWORD WINAPI DsClientMakeSpnForTargetServerA(LPCSTR, LPCSTR, DWORD*, LPSTR);
29DWORD WINAPI DsClientMakeSpnForTargetServerW(LPCWSTR, LPCWSTR, DWORD*, LPWSTR);
30#define DsClientMakeSpnForTargetServer WINELIB_NAME_AW(DsClientMakeSpnForTargetServer)
31
32DWORD WINAPI DsMakeSpnA(LPCSTR, LPCSTR, LPCSTR, USHORT, LPCSTR, DWORD*, LPSTR);
33DWORD WINAPI DsMakeSpnW(LPCWSTR, LPCWSTR, LPCWSTR, USHORT, LPCWSTR, DWORD*, LPWSTR);
34#define DsMakeSpn WINELIB_NAME_AW(DsMakeSpn)
35
36typedef enum
37{
38 DS_NAME_NO_FLAGS = 0x0,
39 DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1,
40 DS_NAME_FLAG_EVAL_AT_DC = 0x2,
41 DS_NAME_FLAG_GCVERIFY = 0x4,
42 DS_NAME_FLAG_TRUST_REFERRAL = 0x8
43} DS_NAME_FLAGS;
44
45typedef enum
46{
47 DS_UNKNOWN_NAME = 0,
48 DS_FQDN_1779_NAME = 1,
49 DS_NT4_ACCOUNT_NAME = 2,
50 DS_DISPLAY_NAME = 3,
51 DS_UNIQUE_ID_NAME = 6,
52 DS_CANONICAL_NAME = 7,
53 DS_USER_PRINCIPAL_NAME = 8,
54 DS_CANONICAL_NAME_EX = 9,
55 DS_SERVICE_PRINCIPAL_NAME = 10,
56 DS_SID_OR_SID_HISTORY_NAME = 11,
57 DS_DNS_DOMAIN_NAME = 12
58} DS_NAME_FORMAT;
59
60typedef enum
61{
62 DS_SPN_DNS_HOST = 0,
63 DS_SPN_DN_HOST = 1,
64 DS_SPN_NB_HOST = 2,
65 DS_SPN_DOMAIN = 3,
66 DS_SPN_NB_DOMAIN = 4,
67 DS_SPN_SERVICE = 5
68} DS_SPN_NAME_TYPE;
69
70typedef enum
71{
72 DS_SPN_ADD_SPN_OP = 0,
73 DS_SPN_REPLACE_SPN_OP = 1,
74 DS_SPN_DELETE_SPN_OP = 2
75} DS_SPN_WRITE_OP;
76
77typedef struct
78{
79 DWORD status;
80 LPSTR pDomain;
81 LPSTR pName;
82} DS_NAME_RESULT_ITEMA, *PDS_NAME_RESULT_ITEMA;
83
84typedef struct
85{
86 DWORD status;
87 LPWSTR pDomain;
88 LPWSTR pName;
89} DS_NAME_RESULT_ITEMW, *PDS_NAME_RESULT_ITEMW;
90
91DECL_WINELIB_TYPE_AW(DS_NAME_RESULT_ITEM)
92DECL_WINELIB_TYPE_AW(PDS_NAME_RESULT_ITEM)
93
94typedef struct
95{
96 DWORD cItems;
97 PDS_NAME_RESULT_ITEMA rItems;
98} DS_NAME_RESULTA, *PDS_NAME_RESULTA;
99
100typedef struct
101{
102 DWORD cItems;
103 PDS_NAME_RESULT_ITEMW rItems;
104} DS_NAME_RESULTW, *PDS_NAME_RESULTW;
105
106DECL_WINELIB_TYPE_AW(DS_NAME_RESULT)
107DECL_WINELIB_TYPE_AW(PDS_NAME_RESULT)
108
109DWORD WINAPI DsCrackNamesA(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, DWORD num, const CHAR **names, PDS_NAME_RESULTA *result);
110DWORD WINAPI DsCrackNamesW(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, DWORD num, const WCHAR **names, PDS_NAME_RESULTW *result);
111#define DsCrackNames WINELIB_NAME_AW(DsCrackNames)
112DWORD WINAPI DsServerRegisterSpnA(DS_SPN_WRITE_OP operation, LPCSTR ServiceClass, LPCSTR UserObjectDN);
113DWORD WINAPI DsServerRegisterSpnW(DS_SPN_WRITE_OP operation, LPCWSTR ServiceClass, LPCWSTR UserObjectDN);
114#define DsServerRegisterSpn WINELIB_NAME_AW(DsServerRegisterSpn)
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif /* __WINE_NTDSAPI_H */