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
14 extern "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