1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifdef _CERTBCLI_TYPECHECK
7#undef __CERTBCLI_H__
8#endif
9
10#ifndef __CERTBCLI_H__
11#define __CERTBCLI_H__
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#ifndef _NO_W32_PSEUDO_MODIFIERS
18#ifndef IN
19#define IN
20#endif
21#ifndef OUT
22#define OUT
23#endif
24#ifndef OPTIONAL
25#define OPTIONAL
26#endif
27#endif
28
29#ifndef RPC_STRING
30#define RPC_STRING
31#endif
32#ifndef VOID
33#define VOID void
34#endif
35
36#define CERTBCLI_CALL WINAPI
37#define CERTBCLI_API __declspec(dllimport) WINAPI
38
39#define szBACKUPANNOTATION "Cert Server Backup Interface"
40#define wszBACKUPANNOTATION TEXT(szBACKUPANNOTATION)
41
42#define szRESTOREANNOTATION "Cert Server Restore Interface"
43#define wszRESTOREANNOTATION TEXT(szRESTOREANNOTATION)
44
45#define CSBACKUP_TYPE_FULL 0x00000001
46#define CSBACKUP_TYPE_LOGS_ONLY 0x00000002
47
48#define CSBACKUP_TYPE_MASK 0x00000003
49
50#define CSRESTORE_TYPE_FULL 0x00000001
51#define CSRESTORE_TYPE_ONLINE 0x00000002
52#define CSRESTORE_TYPE_CATCHUP 0x00000004
53#define CSRESTORE_TYPE_MASK 0x00000005
54
55#define CSBACKUP_DISABLE_INCREMENTAL 0xffffffff
56
57  typedef WCHAR CSBFT;
58
59#define CSBFT_DIRECTORY 0x80
60#define CSBFT_DATABASE_DIRECTORY 0x40
61#define CSBFT_LOG_DIRECTORY 0x20
62
63#define CSBFT_LOG ((CSBFT) (TEXT('\x01') | CSBFT_LOG_DIRECTORY))
64#define CSBFT_LOG_DIR ((CSBFT) (TEXT('\x02') | CSBFT_DIRECTORY))
65#define CSBFT_CHECKPOINT_DIR ((CSBFT) (TEXT('\x03') | CSBFT_DIRECTORY))
66#define CSBFT_CERTSERVER_DATABASE ((CSBFT) (TEXT('\x04') | CSBFT_DATABASE_DIRECTORY))
67#define CSBFT_PATCH_FILE ((CSBFT) (TEXT('\x05') | CSBFT_LOG_DIRECTORY))
68#define CSBFT_UNKNOWN ((CSBFT) (TEXT('\x0f')))
69
70  typedef void *HCSBC;
71
72#ifndef CSEDB_RSTMAP
73  typedef struct tagCSEDB_RSTMAPW {
74    WCHAR *pwszDatabaseName;
75    WCHAR *pwszNewDatabaseName;
76  } CSEDB_RSTMAPW;
77
78#define CSEDB_RSTMAP CSEDB_RSTMAPW
79#endif
80
81#define CertSrvIsServerOnline CertSrvIsServerOnlineW
82#define CertSrvBackupGetDynamicFileList CertSrvBackupGetDynamicFileListW
83#define CertSrvBackupPrepare CertSrvBackupPrepareW
84#define CertSrvBackupGetDatabaseNames CertSrvBackupGetDatabaseNamesW
85#define CertSrvBackupOpenFile CertSrvBackupOpenFileW
86#define CertSrvBackupGetBackupLogs CertSrvBackupGetBackupLogsW
87
88#define CertSrvRestoreGetDatabaseLocations CertSrvRestoreGetDatabaseLocationsW
89#define CertSrvRestorePrepare CertSrvRestorePrepareW
90#define CertSrvRestoreRegister CertSrvRestoreRegisterW
91
92#define CertSrvServerControl CertSrvServerControlW
93
94  typedef HRESULT (WINAPI FNCERTSRVISSERVERONLINEW)(WCHAR const *pwszServerName,WINBOOL *pfServerOnline);
95
96  HRESULT CERTBCLI_API CertSrvIsServerOnlineW(WCHAR const *pwszServerName,WINBOOL *pfServerOnline);
97
98#ifdef _CERTBCLI_TYPECHECK
99  FNCERTSRVISSERVERONLINEW *pfnCertSrvIsServerOnline = CertSrvIsServerOnline;
100#endif
101
102  typedef HRESULT (WINAPI FNCERTSRVBACKUPGETDYNAMICFILELISTW)(HCSBC hbc,WCHAR **ppwszzFileList,DWORD *pcbSize);
103
104  HRESULT CERTBCLI_API CertSrvBackupGetDynamicFileListW(HCSBC hbc,WCHAR **ppwszzFileList,DWORD *pcbSize);
105
106#ifdef _CERTBCLI_TYPECHECK
107  FNCERTSRVBACKUPGETDYNAMICFILELISTW *pfnCertSrvBackupGetDynamicFileList = CertSrvBackupGetDynamicFileList;
108#endif
109
110  typedef HRESULT (WINAPI FNCERTSRVBACKUPPREPAREW)(WCHAR const *pwszServerName,ULONG grbitJet,ULONG dwBackupFlags,HCSBC *phbc);
111
112  HRESULT CERTBCLI_API CertSrvBackupPrepareW(WCHAR const *pwszServerName,ULONG grbitJet,ULONG dwBackupFlags,HCSBC *phbc);
113
114#ifdef _CERTBCLI_TYPECHECK
115  FNCERTSRVBACKUPPREPAREW *pfnCertSrvBackupPrepare = CertSrvBackupPrepare;
116#endif
117
118  typedef HRESULT (WINAPI FNCERTSRVBACKUPGETDATABASENAMESW)(HCSBC hbc,WCHAR **ppwszzAttachmentInformation,DWORD *pcbSize);
119
120  HRESULT CERTBCLI_API CertSrvBackupGetDatabaseNamesW(HCSBC hbc,WCHAR **ppwszzAttachmentInformation,DWORD *pcbSize);
121
122#ifdef _CERTBCLI_TYPECHECK
123  FNCERTSRVBACKUPGETDATABASENAMESW *pfnCertSrvBackupGetDatabaseNames = CertSrvBackupGetDatabaseNames;
124#endif
125
126  typedef HRESULT (WINAPI FNCERTSRVBACKUPOPENFILEW)(HCSBC hbc,WCHAR const *pwszAttachmentName,DWORD cbReadHintSize,LARGE_INTEGER *pliFileSize);
127
128  HRESULT CERTBCLI_API CertSrvBackupOpenFileW(HCSBC hbc,WCHAR const *pwszAttachmentName,DWORD cbReadHintSize,LARGE_INTEGER *pliFileSize);
129
130#ifdef _CERTBCLI_TYPECHECK
131  FNCERTSRVBACKUPOPENFILEW *pfnCertSrvBackupOpenFile = CertSrvBackupOpenFile;
132#endif
133
134  typedef HRESULT (WINAPI FNCERTSRVBACKUPREAD)(HCSBC hbc,VOID *pvBuffer,DWORD cbBuffer,DWORD *pcbRead);
135
136  HRESULT CERTBCLI_API CertSrvBackupRead(HCSBC hbc,VOID *pvBuffer,DWORD cbBuffer,DWORD *pcbRead);
137
138#ifdef _CERTBCLI_TYPECHECK
139  FNCERTSRVBACKUPREAD *pfnCertSrvBackupRead = CertSrvBackupRead;
140#endif
141
142  typedef HRESULT (WINAPI FNCERTSRVBACKUPCLOSE)(HCSBC hbc);
143
144  HRESULT CERTBCLI_API CertSrvBackupClose(HCSBC hbc);
145
146#ifdef _CERTBCLI_TYPECHECK
147  FNCERTSRVBACKUPCLOSE *pfnCertSrvBackupClose = CertSrvBackupClose;
148#endif
149
150  typedef HRESULT (WINAPI FNCERTSRVBACKUPGETBACKUPLOGSW)(HCSBC hbc,WCHAR **ppwszzBackupLogFiles,DWORD *pcbSize);
151
152  HRESULT CERTBCLI_API CertSrvBackupGetBackupLogsW(HCSBC hbc,WCHAR **ppwszzBackupLogFiles,DWORD *pcbSize);
153
154#ifdef _CERTBCLI_TYPECHECK
155  FNCERTSRVBACKUPGETBACKUPLOGSW *pfnCertSrvBackupGetBackupLogs = CertSrvBackupGetBackupLogs;
156#endif
157
158  typedef HRESULT (WINAPI FNCERTSRVBACKUPTRUNCATELOGS)(HCSBC hbc);
159
160  HRESULT CERTBCLI_API CertSrvBackupTruncateLogs(HCSBC hbc);
161
162#ifdef _CERTBCLI_TYPECHECK
163  FNCERTSRVBACKUPTRUNCATELOGS *pfnCertSrvBackupTruncateLogs = CertSrvBackupTruncateLogs;
164#endif
165
166  typedef HRESULT (WINAPI FNCERTSRVBACKUPEND)(HCSBC hbc);
167
168  HRESULT CERTBCLI_API CertSrvBackupEnd(HCSBC hbc);
169
170#ifdef _CERTBCLI_TYPECHECK
171  FNCERTSRVBACKUPEND *pfnCertSrvBackupEnd = CertSrvBackupEnd;
172#endif
173
174  typedef VOID (WINAPI FNCERTSRVBACKUPFREE)(VOID *pv);
175
176  VOID CERTBCLI_API CertSrvBackupFree(VOID *pv);
177
178#ifdef _CERTBCLI_TYPECHECK
179  FNCERTSRVBACKUPFREE *pfnCertSrvBackupFree = CertSrvBackupFree;
180#endif
181
182  typedef HRESULT (WINAPI FNCERTSRVRESTOREGETDATABASELOCATIONSW)(HCSBC hbc,WCHAR **ppwszzDatabaseLocationList,DWORD *pcbSize);
183
184  HRESULT CERTBCLI_API CertSrvRestoreGetDatabaseLocationsW(HCSBC hbc,WCHAR **ppwszzDatabaseLocationList,DWORD *pcbSize);
185
186#ifdef _CERTBCLI_TYPECHECK
187  FNCERTSRVRESTOREGETDATABASELOCATIONSW *pfnCertSrvRestoreGetDatabaseLocations = CertSrvRestoreGetDatabaseLocations;
188#endif
189
190  typedef HRESULT (WINAPI FNCERTSRVRESTOREPREPAREW)(WCHAR const *pwszServerName,ULONG dwRestoreFlags,HCSBC *phbc);
191
192  HRESULT CERTBCLI_API CertSrvRestorePrepareW(WCHAR const *pwszServerName,ULONG dwRestoreFlags,HCSBC *phbc);
193
194#ifdef _CERTBCLI_TYPECHECK
195  FNCERTSRVRESTOREPREPAREW *pfnCertSrvRestorePrepare = CertSrvRestorePrepare;
196#endif
197
198  typedef HRESULT (WINAPI FNCERTSRVRESTOREREGISTERW)(HCSBC hbc,WCHAR const *pwszCheckPointFilePath,WCHAR const *pwszLogPath,CSEDB_RSTMAPW rgrstmap[],LONG crstmap,WCHAR const *pwszBackupLogPath,ULONG genLow,ULONG genHigh);
199
200  HRESULT CERTBCLI_API CertSrvRestoreRegisterW(HCSBC hbc,WCHAR const *pwszCheckPointFilePath,WCHAR const *pwszLogPath,CSEDB_RSTMAPW rgrstmap[],LONG crstmap,WCHAR const *pwszBackupLogPath,ULONG genLow,ULONG genHigh);
201  HRESULT CERTBCLI_API CertSrvRestoreRegisterThroughFile(HCSBC hbc,WCHAR const *pwszCheckPointFilePath,WCHAR const *pwszLogPath,CSEDB_RSTMAPW rgrstmap[],LONG crstmap,WCHAR const *pwszBackupLogPath,ULONG genLow,ULONG genHigh);
202
203#ifdef _CERTBCLI_TYPECHECK
204  FNCERTSRVRESTOREREGISTERW *pfnCertSrvRestoreRegister = CertSrvRestoreRegister;
205#endif
206
207  typedef HRESULT (WINAPI FNCERTSRVRESTOREREGISTERCOMPLETE)(HCSBC hbc,HRESULT hrRestoreState);
208
209  HRESULT CERTBCLI_API CertSrvRestoreRegisterComplete(HCSBC hbc,HRESULT hrRestoreState);
210
211#ifdef _CERTBCLI_TYPECHECK
212  FNCERTSRVRESTOREREGISTERCOMPLETE *pfnCertSrvRestoreRegisterComplete = CertSrvRestoreRegisterComplete;
213#endif
214
215  typedef HRESULT (WINAPI FNCERTSRVRESTOREEND)(HCSBC hbc);
216
217  HRESULT CERTBCLI_API CertSrvRestoreEnd(HCSBC hbc);
218
219#ifdef _CERTBCLI_TYPECHECK
220  FNCERTSRVRESTOREEND *pfnCertSrvRestoreEnd = CertSrvRestoreEnd;
221#endif
222
223#define CSCONTROL_SHUTDOWN 0x000000001
224#define CSCONTROL_SUSPEND 0x000000002
225#define CSCONTROL_RESTART 0x000000003
226
227  typedef HRESULT (WINAPI FNCERTSRVSERVERCONTROLW)(WCHAR const *pwszServerName,DWORD dwControlFlags,DWORD *pcbOut,BYTE **ppbOut);
228
229  HRESULT CERTBCLI_API CertSrvServerControlW(WCHAR const *pwszServerName,DWORD dwControlFlags,DWORD *pcbOut,BYTE **ppbOut);
230
231#ifdef _CERTBCLI_TYPECHECK
232  FNCERTSRVSERVERCONTROLW *pfnCertSrvServerControl = CertSrvServerControl;
233#endif
234
235#ifdef __cplusplus
236}
237#endif
238#endif
239