2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 #include <afs/param.h>
15 #include <WINNT/afsclass.h>
20 #include <afs/vlserver.h>
25 * DEFINITIONS ________________________________________________________________
30 static LPCTSTR cszAFSVOSDLL = TCHAR("AfsVosAdmin.dll");
31 static LPCTSTR cszAFSBOSDLL = TCHAR("AfsBosAdmin.dll");
32 static LPCTSTR cszAFSKASDLL = TCHAR("AfsKasAdmin.dll");
33 static LPCTSTR cszAFSPTSDLL = TCHAR("AfsPtsAdmin.dll");
34 static LPCTSTR cszAFSUTILDLL = TCHAR("AfsAdminUtil.dll");
35 static LPCTSTR cszAFSCLIENTDLL = TCHAR("AfsClientAdmin.dll");
37 static LPCTSTR cszAFSVOSDLL = __T("AfsVosAdmin.dll");
38 static LPCTSTR cszAFSBOSDLL = __T("AfsBosAdmin.dll");
39 static LPCTSTR cszAFSKASDLL = __T("AfsKasAdmin.dll");
40 static LPCTSTR cszAFSPTSDLL = __T("AfsPtsAdmin.dll");
41 static LPCTSTR cszAFSUTILDLL = __T("AfsAdminUtil.dll");
42 static LPCTSTR cszAFSCLIENTDLL = __T("AfsClientAdmin.dll");
46 * VARIABLES __________________________________________________________________
50 static HINSTANCE hiVOS = NULL;
51 static HINSTANCE hiBOS = NULL;
52 static HINSTANCE hiKAS = NULL;
53 static HINSTANCE hiPTS = NULL;
54 static HINSTANCE hiUtil = NULL;
55 static HINSTANCE hiClient = NULL;
59 * .DLL PROTOTYPES ____________________________________________________________
65 typedef int (ADMINAPI *lpVosBackupVolumeCreate_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int volumeId, afs_status_p st);
66 typedef int (ADMINAPI *lpVosBackupVolumeCreateMultiple_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, const unsigned int *partition, const char *volumePrefix, vos_exclude_t excludePrefix, afs_status_p st);
67 typedef int (ADMINAPI *lpVosPartitionGet_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, vos_partitionEntry_p partitionP, afs_status_p st);
68 typedef int (ADMINAPI *lpVosPartitionGetBegin_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, void **iterationIdP, afs_status_p st);
69 typedef int (ADMINAPI *lpVosPartitionGetNext_t)(const void *iterationId, vos_partitionEntry_p partitionP, afs_status_p st);
70 typedef int (ADMINAPI *lpVosPartitionGetDone_t)(const void *iterationId, afs_status_p st);
71 typedef int (ADMINAPI *lpVosServerOpen_t)(const void *cellHandle, const char *serverName, void **serverHandleP, afs_status_p st);
72 typedef int (ADMINAPI *lpVosServerClose_t)(const void *serverHandle, afs_status_p st);
73 typedef int (ADMINAPI *lpVosServerSync_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, const unsigned int *partition, vos_force_t force, afs_status_p st);
74 typedef int (ADMINAPI *lpVosFileServerAddressChange_t)(const void *cellHandle, vos_MessageCallBack_t callBack, int oldAddress, int newAddress, afs_status_p st);
75 typedef int (ADMINAPI *lpVosFileServerAddressRemove_t)(const void *cellHandle, vos_MessageCallBack_t callBack, int serverAddress, afs_status_p st);
76 typedef int (ADMINAPI *lpVosFileServerGetBegin_t)(const void *cellHandle, vos_MessageCallBack_t callBack, void **iterationIdP, afs_status_p st);
77 typedef int (ADMINAPI *lpVosFileServerGetNext_t)(void *iterationId, vos_fileServerEntry_p serverEntryP, afs_status_p st);
78 typedef int (ADMINAPI *lpVosFileServerGetDone_t)(void *iterationId, afs_status_p st);
79 typedef int (ADMINAPI *lpVosServerTransactionStatusGetBegin_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, void **iterationIdP, afs_status_p st);
80 typedef int (ADMINAPI *lpVosServerTransactionStatusGetNext_t)(const void *iterationId, vos_serverTransactionStatus_p serverTransactionStatusP, afs_status_p st);
81 typedef int (ADMINAPI *lpVosServerTransactionStatusGetDone_t)(const void *iterationId, afs_status_p st);
82 typedef int (ADMINAPI *lpVosVLDBGet_t)(const void *cellHandle, vos_MessageCallBack_t callBack, const unsigned int *volumeId, const char *volumeName, vos_vldbEntry_p vldbEntry, afs_status_p st);
83 typedef int (ADMINAPI *lpVosVLDBGetBegin_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int *partition, void **iterationIdP, afs_status_p st);
84 typedef int (ADMINAPI *lpVosVLDBGetNext_t)(const void *iterationId, vos_vldbEntry_p vldbEntry, afs_status_p st);
85 typedef int (ADMINAPI *lpVosVLDBGetDone_t)(const void *iterationId, afs_status_p st);
86 typedef int (ADMINAPI *lpVosVLDBEntryRemove_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, const unsigned int *partition, unsigned int *volumeId, afs_status_p st);
87 typedef int (ADMINAPI *lpVosVLDBUnlock_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, const unsigned int *partition, afs_status_p st);
88 typedef int (ADMINAPI *lpVosVLDBEntryLock_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int volumeId, afs_status_p st);
89 typedef int (ADMINAPI *lpVosVLDBEntryUnlock_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int volumeId, afs_status_p st);
90 typedef int (ADMINAPI *lpVosVLDBReadOnlySiteCreate_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, afs_status_p st);
91 typedef int (ADMINAPI *lpVosVLDBReadOnlySiteDelete_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, afs_status_p st);
92 typedef int (ADMINAPI *lpVosVLDBSync_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, const unsigned int *partition, vos_force_t force, afs_status_p st);
93 typedef int (ADMINAPI *lpVosVolumeCreate_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, const char *volumeName, unsigned int quota, unsigned int *volumeId, afs_status_p st);
94 typedef int (ADMINAPI *lpVosVolumeDelete_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, afs_status_p st);
95 typedef int (ADMINAPI *lpVosVolumeRename_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int readWriteVolumeId, const char *newVolumeName, afs_status_p st);
96 typedef int (ADMINAPI *lpVosVolumeDump_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int *partition, unsigned int volumeId, unsigned int startTime, const char *dumpFile, afs_status_p st);
97 typedef int (ADMINAPI *lpVosVolumeRestore_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int *volumeId, const char *volumeName, const char *dumpFile, vos_volumeRestoreType_t dumpType, afs_status_p st);
98 typedef int (ADMINAPI *lpVosVolumeOnline_t)(const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, unsigned int sleepTime, vos_volumeOnlineType_t volumeStatus, afs_status_p st);
99 typedef int (ADMINAPI *lpVosVolumeOffline_t)(const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, afs_status_p st);
100 typedef int (ADMINAPI *lpVosVolumeGet_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, vos_volumeEntry_p volumeP, afs_status_p st);
101 typedef int (ADMINAPI *lpVosVolumeGetBegin_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, void **iterationIdP, afs_status_p st);
102 typedef int (ADMINAPI *lpVosVolumeGetNext_t)(const void *iterationId, vos_volumeEntry_p volumeP, afs_status_p st);
103 typedef int (ADMINAPI *lpVosVolumeGetDone_t)(const void *iterationId, afs_status_p st);
104 typedef int (ADMINAPI *lpVosVolumeMove_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int volumeId, const void *fromServer, unsigned int fromPartition, const void *toServer, unsigned int toPartition, afs_status_p st);
105 typedef int (ADMINAPI *lpVosVolumeRelease_t)(const void *cellHandle, vos_MessageCallBack_t callBack, unsigned int volumeId, vos_force_t force, afs_status_p st);
106 typedef int (ADMINAPI *lpVosVolumeZap_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, vos_force_t force, afs_status_p st);
107 typedef int (ADMINAPI *lpVosPartitionNameToId_t)(const char *partitionName, unsigned int *partitionId, afs_status_p st);
108 typedef int (ADMINAPI *lpVosPartitionIdToName_t)(unsigned int partitionId, char *partitionName, afs_status_p st);
109 typedef int (ADMINAPI *lpVosVolumeQuotaChange_t)(const void *cellHandle, const void *serverHandle, vos_MessageCallBack_t callBack, unsigned int partition, unsigned int volumeId, unsigned int volumeQuota, afs_status_p st);
111 typedef int (ADMINAPI *lpBosServerOpen_t)(const void *cellHandle, const char *hostName, void **hostHandlePP, afs_status_p st);
112 typedef int (ADMINAPI *lpBosServerClose_t)(const void *hostHandleP, afs_status_p st);
113 typedef int (ADMINAPI *lpBosProcessCreate_t)(const void *serverHandle, const char *processName, bos_ProcessType_t processType, const char *process, const char *cronTime, const char *notifier, afs_status_p st);
114 typedef int (ADMINAPI *lpBosProcessDelete_t)(const void *serverHandle, const char *processName, afs_status_p st);
115 typedef int (ADMINAPI *lpBosProcessExecutionStateGet_t)(const void *serverHandle, const char *processName, bos_ProcessExecutionState_p processStatusP, char *auxiliaryProcessStatus, afs_status_p st);
116 typedef int (ADMINAPI *lpBosProcessExecutionStateSet_t)(const void *serverHandle, const char *processName, bos_ProcessExecutionState_t processStatus, afs_status_p st);
117 typedef int (ADMINAPI *lpBosProcessExecutionStateSetTemporary_t)(const void *serverHandle, const char *processName, bos_ProcessExecutionState_t processStatus, afs_status_p st);
118 typedef int (ADMINAPI *lpBosProcessNameGetBegin_t)(const void *serverHandle, void **iterationIdP, afs_status_p st);
119 typedef int (ADMINAPI *lpBosProcessNameGetNext_t)(const void *iterationId, char *processName, afs_status_p st);
120 typedef int (ADMINAPI *lpBosProcessNameGetDone_t)(const void *iterationId, afs_status_p st);
121 typedef int (ADMINAPI *lpBosProcessInfoGet_t)(const void *serverHandle, const char *processName, bos_ProcessType_p processTypeP, bos_ProcessInfo_p processInfoP, afs_status_p st);
122 typedef int (ADMINAPI *lpBosProcessParameterGetBegin_t)(const void *serverHandle, const char *processName, void **iterationIdP, afs_status_p st);
123 typedef int (ADMINAPI *lpBosProcessParameterGetNext_t)(const void *iterationId, char *parameter, afs_status_p st);
124 typedef int (ADMINAPI *lpBosProcessParameterGetDone_t)(const void *iterationId, afs_status_p st);
125 typedef int (ADMINAPI *lpBosProcessNotifierGet_t)(const void *serverHandle, const char *processName, char *notifier, afs_status_p st);
126 typedef int (ADMINAPI *lpBosProcessRestart_t)(const void *serverHandle, const char *processName, afs_status_p st);
127 typedef int (ADMINAPI *lpBosProcessAllStop_t)(const void *serverHandle, afs_status_p st);
128 typedef int (ADMINAPI *lpBosProcessAllStart_t)(const void *serverHandle, afs_status_p st);
129 typedef int (ADMINAPI *lpBosProcessAllWaitStop_t)(const void *serverHandle, afs_status_p st);
130 typedef int (ADMINAPI *lpBosProcessAllStopAndRestart_t)(const void *serverHandle, bos_RestartBosServer_t restartBosServer, afs_status_p st);
131 typedef int (ADMINAPI *lpBosAdminCreate_t)(const void *serverHandle, const char *adminName, afs_status_p st);
132 typedef int (ADMINAPI *lpBosAdminDelete_t)(const void *serverHandle, const char *adminName, afs_status_p st);
133 typedef int (ADMINAPI *lpBosAdminGetBegin_t)(const void *serverHandle, void **iterationIdP, afs_status_p st);
134 typedef int (ADMINAPI *lpBosAdminGetNext_t)(const void *iterationId, char *adminName, afs_status_p st);
135 typedef int (ADMINAPI *lpBosAdminGetDone_t)(const void *iterationId, afs_status_p st);
136 typedef int (ADMINAPI *lpBosKeyCreate_t)(const void *serverHandle, int keyVersionNumber, const kas_encryptionKey_p key, afs_status_p st);
137 typedef int (ADMINAPI *lpBosKeyDelete_t)(const void *serverHandle, int keyVersionNumber, afs_status_p st);
138 typedef int (ADMINAPI *lpBosKeyGetBegin_t)(const void *serverHandle, void **iterationIdP, afs_status_p st);
139 typedef int (ADMINAPI *lpBosKeyGetNext_t)(const void *iterationId, bos_KeyInfo_p keyP, afs_status_p st);
140 typedef int (ADMINAPI *lpBosKeyGetDone_t)(const void *iterationId, afs_status_p st);
141 typedef int (ADMINAPI *lpBosCellSet_t)(const void *serverHandle, const char *cellName, afs_status_p st);
142 typedef int (ADMINAPI *lpBosCellGet_t)(const void *serverHandle, char *cellName, afs_status_p st);
143 typedef int (ADMINAPI *lpBosHostCreate_t)(const void *serverHandle, const char *hostName, afs_status_p st);
144 typedef int (ADMINAPI *lpBosHostDelete_t)(const void *serverHandle, const char *hostName, afs_status_p st);
145 typedef int (ADMINAPI *lpBosHostGetBegin_t)(const void *serverHandle, void **iterationIdP, afs_status_p st);
146 typedef int (ADMINAPI *lpBosHostGetNext_t)(const void *iterationId, char *hostName, afs_status_p st);
147 typedef int (ADMINAPI *lpBosHostGetDone_t)(const void *iterationId, afs_status_p st);
148 typedef int (ADMINAPI *lpBosExecutableCreate_t)(const void *serverHandle, const char *sourceFile, const char *destFile, afs_status_p st);
149 typedef int (ADMINAPI *lpBosExecutableRevert_t)(const void *serverHandle, const char *execFile, afs_status_p st);
150 typedef int (ADMINAPI *lpBosExecutableTimestampGet_t)(const void *serverHandle, const char *execFile, unsigned long *newTime, unsigned long *oldTime, unsigned long *bakTime, afs_status_p st);
151 typedef int (ADMINAPI *lpBosExecutablePrune_t)(const void *serverHandle, bos_Prune_t oldFiles, bos_Prune_t bakFiles, bos_Prune_t coreFiles, afs_status_p st);
152 typedef int (ADMINAPI *lpBosExecutableRestartTimeSet_t)(const void *serverHandle, bos_Restart_t type, bos_RestartTime_t time, afs_status_p st);
153 typedef int (ADMINAPI *lpBosExecutableRestartTimeGet_t)(const void *serverHandle, bos_Restart_t type, bos_RestartTime_p timeP, afs_status_p st);
154 typedef int (ADMINAPI *lpBosLogGet_t)(const void *serverHandle, const char *log, unsigned long *logBufferSizeP, char *logData, afs_status_p st);
155 typedef int (ADMINAPI *lpBosAuthSet_t)(const void *serverHandle, bos_Auth_t auth, afs_status_p st);
156 typedef int (ADMINAPI *lpBosCommandExecute_t)(const void *serverHandle, const char *command, afs_status_p st);
157 typedef int (ADMINAPI *lpBosSalvage_t)(const void *cellHandle, const void *serverHandle, const char *partitionName, const char *volumeName, int numSalvagers, const char *tmpDir, const char *logFile, vos_force_t force, bos_SalvageDamagedVolumes_t salvageDamagedVolumes, bos_WriteInodes_t writeInodes, bos_WriteRootInodes_t writeRootInodes, bos_ForceDirectory_t forceDirectory, bos_ForceBlockRead_t forceBlockRead, afs_status_p st);
159 typedef int (ADMINAPI *lpKasServerOpen_t)(const void *cellHandle, const char **serverList, void **serverHandleP, afs_status_p st); typedef int (ADMINAPI *lpKasServerClose_t)(void *serverHandle, afs_status_p st); typedef int (ADMINAPI *lpKasServerStatsGet_t)(const void *cellHandle, const void *serverHandle, kas_serverStats_p stats, afs_status_p st); typedef int (ADMINAPI *lpKasServerDebugGet_t)(const void *cellHandle, const void *serverHandle, kas_serverDebugInfo_p debug, afs_status_p st); typedef int (ADMINAPI *lpKasServerRandomKeyGet_t)(const void *cellHandle, const void *serverHandle, kas_encryptionKey_p key, afs_status_p st); typedef int (ADMINAPI *lpKasStringToKey_t)(const char *cellName, const char *string, kas_encryptionKey_p key, afs_status_p st); typedef int (ADMINAPI *lpKasPrincipalCreate_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, const char *password, afs_status_p st);
160 typedef int (ADMINAPI *lpKasPrincipalDelete_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, afs_status_p st);
161 typedef int (ADMINAPI *lpKasPrincipalGet_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, kas_principalEntry_p principal, afs_status_p st);
162 typedef int (ADMINAPI *lpKasPrincipalGetBegin_t)(const void *cellHandle, const void *serverHandle, void **iterationIdP, afs_status_p st);
163 typedef int (ADMINAPI *lpKasPrincipalGetNext_t)(const void *iterationId, kas_identity_p who, afs_status_p st);
164 typedef int (ADMINAPI *lpKasPrincipalGetDone_t)(void *iterationIdP, afs_status_p st);
165 typedef int (ADMINAPI *lpKasPrincipalKeySet_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, int keyVersion, const kas_encryptionKey_p key, afs_status_p st);
166 typedef int (ADMINAPI *lpKasPrincipalLockStatusGet_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, unsigned long *lock_end_timeP, afs_status_p st);
167 typedef int (ADMINAPI *lpKasPrincipalUnlock_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, afs_status_p st);
168 typedef int (ADMINAPI *lpKasPrincipalFieldsSet_t)(const void *cellHandle, const void *serverHandle, const kas_identity_p who, const kas_admin_p isAdmin, const kas_tgs_p grantTickets, const kas_enc_p canEncrypt, const kas_cpw_p canChangePassword, const unsigned int *expirationDate, const unsigned int *maxTicketLifetime, const unsigned int *passwordExpires, const kas_rpw_p passwordReuse, const unsigned int *failedPasswordAttempts, const unsigned int *failedPasswordLockTime, afs_status_p st);
170 typedef int (ADMINAPI *lpPtsGroupMemberAdd_t)(const void *cellHandle, const char *userName, const char *groupName, afs_status_p st);
171 typedef int (ADMINAPI *lpPtsGroupOwnerChange_t)(const void *cellHandle, const char *targetGroup, const char *newOwner, afs_status_p st);
172 typedef int (ADMINAPI *lpPtsGroupCreate_t)(const void *cellHandle, const char *newGroup, const char *newOwner, const int *newGroupIdP, afs_status_p st);
173 typedef int (ADMINAPI *lpPtsGroupGet_t)(const void *cellHandle, const char *groupName, pts_GroupEntry_p groupP, afs_status_p st);
174 typedef int (ADMINAPI *lpPtsGroupDelete_t)(const void *cellHandle, const char *group, afs_status_p st);
175 typedef int (ADMINAPI *lpPtsGroupMaxGet_t)(const void *cellHandle, int *maxGroupId, afs_status_p st);
176 typedef int (ADMINAPI *lpPtsGroupMaxSet_t)(const void *cellHandle, int maxGroupId, afs_status_p st);
177 typedef int (ADMINAPI *lpPtsGroupMemberListBegin_t)(const void *cellHandle, const char *groupName, void **iterationIdP, afs_status_p st);
178 typedef int (ADMINAPI *lpPtsGroupMemberListNext_t)(const void *iterationIdP, char *memberName, afs_status_p st);
179 typedef int (ADMINAPI *lpPtsGroupMemberListDone_t)(const void *iterationIdP, afs_status_p st);
180 typedef int (ADMINAPI *lpPtsGroupMemberRemove_t)(const void *cellHandle, const char *memberName, const char *groupName, afs_status_p st);
181 typedef int (ADMINAPI *lpPtsGroupRename_t)(const void *cellHandle, const char *oldName, const char *newName, afs_status_p st);
182 typedef int (ADMINAPI *lpPtsGroupModify_t)(const void *cellHandle, const char *groupName, pts_GroupUpdateEntry_p newEntryP, afs_status_p st);
183 typedef int (ADMINAPI *lpPtsUserCreate_t)(const void *cellHandle, const char *newUser, const int *newUserIdP, afs_status_p st);
184 typedef int (ADMINAPI *lpPtsUserDelete_t)(const void *cellHandle, const char *user, afs_status_p st);
185 typedef int (ADMINAPI *lpPtsUserGet_t)(const void *cellHandle, const char *userName, pts_UserEntry_p userP, afs_status_p st);
186 typedef int (ADMINAPI *lpPtsUserRename_t)(const void *cellHandle, const char *oldName, const char *newName, afs_status_p st);
187 typedef int (ADMINAPI *lpPtsUserModify_t)(const void *cellHandle, const char *userName, pts_UserUpdateEntry_p newEntryP, afs_status_p st);
188 typedef int (ADMINAPI *lpPtsUserMaxGet_t)(const void *cellHandle, int *maxUserId, afs_status_p st);
189 typedef int (ADMINAPI *lpPtsUserMaxSet_t)(const void *cellHandle, int maxUserId, afs_status_p st);
190 typedef int (ADMINAPI *lpPtsUserMemberListBegin_t)(const void *cellHandle, const char *userName, void **iterationIdP, afs_status_p st);
191 typedef int (ADMINAPI *lpPtsUserMemberListNext_t)(const void *iterationIdP, char *groupName, afs_status_p st);
192 typedef int (ADMINAPI *lpPtsUserMemberListDone_t)(const void *iterationIdP, afs_status_p st);
193 typedef int (ADMINAPI *lpPtsOwnedGroupListBegin_t)(const void *cellHandle, const char *ownerName, void **iterationIdP, afs_status_p st);
194 typedef int (ADMINAPI *lpPtsOwnedGroupListNext_t)(const void *iterationIdP, char *groupName, afs_status_p st);
195 typedef int (ADMINAPI *lpPtsOwnedGroupListDone_t)(const void *iterationIdP, afs_status_p st);
197 typedef int (ADMINAPI *lpClientTokenGetExisting_t)(const char *cellName, void **tokenHandle, afs_status_p st);
198 typedef int (ADMINAPI *lpClientCellOpen_t)(const char *cellName, const void *credsHandle, void **cellHandleP, afs_status_p st);
199 typedef int (ADMINAPI *lpClientCellClose_t)(const void *cellHandle, afs_status_p st);
200 typedef int (ADMINAPI *lpClientLocalCellGet_t)(char *cellName, afs_status_p st);
201 typedef int (ADMINAPI *lpClientAFSServerGet_t)(const void *cellHandle, const char *serverName, afs_serverEntry_p serverEntryP, afs_status_p st);
202 typedef int (ADMINAPI *lpClientAFSServerGetBegin_t)(const void *cellHandle, void **iterationIdP, afs_status_p st);
203 typedef int (ADMINAPI *lpClientAFSServerGetNext_t)(const void *iterationId, afs_serverEntry_p serverEntryP, afs_status_p st);
204 typedef int (ADMINAPI *lpClientAFSServerGetDone_t)(const void *iterationId, afs_status_p st);
205 typedef int (ADMINAPI *lpClientInit_t)(afs_status_p st);
207 typedef int (ADMINAPI *lpUtilDatabaseServerGetBegin_t)(const char *cellName, void **iterationIdP, afs_status_p st);
208 typedef int (ADMINAPI *lpUtilDatabaseServerGetNext_t)(const void *iterationId, int *serverAddressP, afs_status_p st);
209 typedef int (ADMINAPI *lpUtilDatabaseServerGetDone_t)(const void *iterationId, afs_status_p st);
214 static lpVosBackupVolumeCreate_t lpVosBackupVolumeCreate = NULL;
215 static lpVosBackupVolumeCreateMultiple_t lpVosBackupVolumeCreateMultiple = NULL;
216 static lpVosPartitionGet_t lpVosPartitionGet = NULL;
217 static lpVosPartitionGetBegin_t lpVosPartitionGetBegin = NULL;
218 static lpVosPartitionGetNext_t lpVosPartitionGetNext = NULL;
219 static lpVosPartitionGetDone_t lpVosPartitionGetDone = NULL;
220 static lpVosServerOpen_t lpVosServerOpen = NULL;
221 static lpVosServerClose_t lpVosServerClose = NULL;
222 static lpVosServerSync_t lpVosServerSync = NULL;
223 static lpVosFileServerAddressChange_t lpVosFileServerAddressChange = NULL;
224 static lpVosFileServerAddressRemove_t lpVosFileServerAddressRemove = NULL;
225 static lpVosFileServerGetBegin_t lpVosFileServerGetBegin = NULL;
226 static lpVosFileServerGetNext_t lpVosFileServerGetNext = NULL;
227 static lpVosFileServerGetDone_t lpVosFileServerGetDone = NULL;
228 static lpVosServerTransactionStatusGetBegin_t lpVosServerTransactionStatusGetBegin = NULL;
229 static lpVosServerTransactionStatusGetNext_t lpVosServerTransactionStatusGetNext = NULL;
230 static lpVosServerTransactionStatusGetDone_t lpVosServerTransactionStatusGetDone = NULL;
231 static lpVosVLDBGet_t lpVosVLDBGet = NULL;
232 static lpVosVLDBGetBegin_t lpVosVLDBGetBegin = NULL;
233 static lpVosVLDBGetNext_t lpVosVLDBGetNext = NULL;
234 static lpVosVLDBGetDone_t lpVosVLDBGetDone = NULL;
235 static lpVosVLDBEntryRemove_t lpVosVLDBEntryRemove = NULL;
236 static lpVosVLDBUnlock_t lpVosVLDBUnlock = NULL;
237 static lpVosVLDBEntryLock_t lpVosVLDBEntryLock = NULL;
238 static lpVosVLDBEntryUnlock_t lpVosVLDBEntryUnlock = NULL;
239 static lpVosVLDBReadOnlySiteCreate_t lpVosVLDBReadOnlySiteCreate = NULL;
240 static lpVosVLDBReadOnlySiteDelete_t lpVosVLDBReadOnlySiteDelete = NULL;
241 static lpVosVLDBSync_t lpVosVLDBSync = NULL;
242 static lpVosVolumeCreate_t lpVosVolumeCreate = NULL;
243 static lpVosVolumeDelete_t lpVosVolumeDelete = NULL;
244 static lpVosVolumeRename_t lpVosVolumeRename = NULL;
245 static lpVosVolumeDump_t lpVosVolumeDump = NULL;
246 static lpVosVolumeRestore_t lpVosVolumeRestore = NULL;
247 static lpVosVolumeOnline_t lpVosVolumeOnline = NULL;
248 static lpVosVolumeOffline_t lpVosVolumeOffline = NULL;
249 static lpVosVolumeGet_t lpVosVolumeGet = NULL;
250 static lpVosVolumeGetBegin_t lpVosVolumeGetBegin = NULL;
251 static lpVosVolumeGetNext_t lpVosVolumeGetNext = NULL;
252 static lpVosVolumeGetDone_t lpVosVolumeGetDone = NULL;
253 static lpVosVolumeMove_t lpVosVolumeMove = NULL;
254 static lpVosVolumeRelease_t lpVosVolumeRelease = NULL;
255 static lpVosVolumeZap_t lpVosVolumeZap = NULL;
256 static lpVosPartitionNameToId_t lpVosPartitionNameToId = NULL;
257 static lpVosPartitionIdToName_t lpVosPartitionIdToName = NULL;
258 static lpVosVolumeQuotaChange_t lpVosVolumeQuotaChange = NULL;
260 static lpBosServerOpen_t lpBosServerOpen = NULL;
261 static lpBosServerClose_t lpBosServerClose = NULL;
262 static lpBosProcessCreate_t lpBosProcessCreate = NULL;
263 static lpBosProcessDelete_t lpBosProcessDelete = NULL;
264 static lpBosProcessExecutionStateGet_t lpBosProcessExecutionStateGet = NULL;
265 static lpBosProcessExecutionStateSet_t lpBosProcessExecutionStateSet = NULL;
266 static lpBosProcessExecutionStateSetTemporary_t lpBosProcessExecutionStateSetTemporary = NULL;
267 static lpBosProcessNameGetBegin_t lpBosProcessNameGetBegin = NULL;
268 static lpBosProcessNameGetDone_t lpBosProcessNameGetDone = NULL;
269 static lpBosProcessNameGetNext_t lpBosProcessNameGetNext = NULL;
270 static lpBosProcessInfoGet_t lpBosProcessInfoGet = NULL;
271 static lpBosProcessParameterGetBegin_t lpBosProcessParameterGetBegin = NULL;
272 static lpBosProcessParameterGetDone_t lpBosProcessParameterGetDone = NULL;
273 static lpBosProcessParameterGetNext_t lpBosProcessParameterGetNext = NULL;
274 static lpBosProcessNotifierGet_t lpBosProcessNotifierGet = NULL;
275 static lpBosProcessRestart_t lpBosProcessRestart = NULL;
276 static lpBosProcessAllStop_t lpBosProcessAllStop = NULL;
277 static lpBosProcessAllStart_t lpBosProcessAllStart = NULL;
278 static lpBosProcessAllWaitStop_t lpBosProcessAllWaitStop = NULL;
279 static lpBosProcessAllStopAndRestart_t lpBosProcessAllStopAndRestart = NULL;
280 static lpBosAdminCreate_t lpBosAdminCreate = NULL;
281 static lpBosAdminDelete_t lpBosAdminDelete = NULL;
282 static lpBosAdminGetBegin_t lpBosAdminGetBegin = NULL;
283 static lpBosAdminGetDone_t lpBosAdminGetDone = NULL;
284 static lpBosAdminGetNext_t lpBosAdminGetNext = NULL;
285 static lpBosKeyCreate_t lpBosKeyCreate = NULL;
286 static lpBosKeyDelete_t lpBosKeyDelete = NULL;
287 static lpBosKeyGetBegin_t lpBosKeyGetBegin = NULL;
288 static lpBosKeyGetDone_t lpBosKeyGetDone = NULL;
289 static lpBosKeyGetNext_t lpBosKeyGetNext = NULL;
290 static lpBosCellSet_t lpBosCellSet = NULL;
291 static lpBosCellGet_t lpBosCellGet = NULL;
292 static lpBosHostCreate_t lpBosHostCreate = NULL;
293 static lpBosHostDelete_t lpBosHostDelete = NULL;
294 static lpBosHostGetBegin_t lpBosHostGetBegin = NULL;
295 static lpBosHostGetDone_t lpBosHostGetDone = NULL;
296 static lpBosHostGetNext_t lpBosHostGetNext = NULL;
297 static lpBosExecutableCreate_t lpBosExecutableCreate = NULL;
298 static lpBosExecutableRevert_t lpBosExecutableRevert = NULL;
299 static lpBosExecutableTimestampGet_t lpBosExecutableTimestampGet = NULL;
300 static lpBosExecutablePrune_t lpBosExecutablePrune = NULL;
301 static lpBosExecutableRestartTimeSet_t lpBosExecutableRestartTimeSet = NULL;
302 static lpBosExecutableRestartTimeGet_t lpBosExecutableRestartTimeGet = NULL;
303 static lpBosLogGet_t lpBosLogGet = NULL;
304 static lpBosAuthSet_t lpBosAuthSet = NULL;
305 static lpBosCommandExecute_t lpBosCommandExecute = NULL;
306 static lpBosSalvage_t lpBosSalvage = NULL;
308 static lpKasServerOpen_t lpKasServerOpen = NULL;
309 static lpKasServerClose_t lpKasServerClose = NULL;
310 static lpKasServerStatsGet_t lpKasServerStatsGet = NULL;
311 static lpKasServerDebugGet_t lpKasServerDebugGet = NULL;
312 static lpKasServerRandomKeyGet_t lpKasServerRandomKeyGet = NULL;
313 static lpKasStringToKey_t lpKasStringToKey = NULL;
314 static lpKasPrincipalCreate_t lpKasPrincipalCreate = NULL;
315 static lpKasPrincipalDelete_t lpKasPrincipalDelete = NULL;
316 static lpKasPrincipalGet_t lpKasPrincipalGet = NULL;
317 static lpKasPrincipalGetBegin_t lpKasPrincipalGetBegin = NULL;
318 static lpKasPrincipalGetNext_t lpKasPrincipalGetNext = NULL;
319 static lpKasPrincipalGetDone_t lpKasPrincipalGetDone = NULL;
320 static lpKasPrincipalKeySet_t lpKasPrincipalKeySet = NULL;
321 static lpKasPrincipalLockStatusGet_t lpKasPrincipalLockStatusGet = NULL;
322 static lpKasPrincipalUnlock_t lpKasPrincipalUnlock = NULL;
323 static lpKasPrincipalFieldsSet_t lpKasPrincipalFieldsSet = NULL;
325 static lpPtsGroupMemberAdd_t lpPtsGroupMemberAdd = NULL;
326 static lpPtsGroupOwnerChange_t lpPtsGroupOwnerChange = NULL;
327 static lpPtsGroupCreate_t lpPtsGroupCreate = NULL;
328 static lpPtsGroupGet_t lpPtsGroupGet = NULL;
329 static lpPtsGroupDelete_t lpPtsGroupDelete = NULL;
330 static lpPtsGroupMaxGet_t lpPtsGroupMaxGet = NULL;
331 static lpPtsGroupMaxSet_t lpPtsGroupMaxSet = NULL;
332 static lpPtsGroupMemberListBegin_t lpPtsGroupMemberListBegin = NULL;
333 static lpPtsGroupMemberListNext_t lpPtsGroupMemberListNext = NULL;
334 static lpPtsGroupMemberListDone_t lpPtsGroupMemberListDone = NULL;
335 static lpPtsGroupMemberRemove_t lpPtsGroupMemberRemove = NULL;
336 static lpPtsGroupRename_t lpPtsGroupRename = NULL;
337 static lpPtsGroupModify_t lpPtsGroupModify = NULL;
338 static lpPtsUserCreate_t lpPtsUserCreate = NULL;
339 static lpPtsUserDelete_t lpPtsUserDelete = NULL;
340 static lpPtsUserGet_t lpPtsUserGet = NULL;
341 static lpPtsUserRename_t lpPtsUserRename = NULL;
342 static lpPtsUserModify_t lpPtsUserModify = NULL;
343 static lpPtsUserMaxGet_t lpPtsUserMaxGet = NULL;
344 static lpPtsUserMaxSet_t lpPtsUserMaxSet = NULL;
345 static lpPtsUserMemberListBegin_t lpPtsUserMemberListBegin = NULL;
346 static lpPtsUserMemberListNext_t lpPtsUserMemberListNext = NULL;
347 static lpPtsUserMemberListDone_t lpPtsUserMemberListDone = NULL;
348 static lpPtsOwnedGroupListBegin_t lpPtsOwnedGroupListBegin = NULL;
349 static lpPtsOwnedGroupListNext_t lpPtsOwnedGroupListNext = NULL;
350 static lpPtsOwnedGroupListDone_t lpPtsOwnedGroupListDone = NULL;
352 static lpClientTokenGetExisting_t lpClientTokenGetExisting = NULL;
353 static lpClientCellOpen_t lpClientCellOpen = NULL;
354 static lpClientCellClose_t lpClientCellClose = NULL;
355 static lpClientLocalCellGet_t lpClientLocalCellGet = NULL;
356 static lpClientAFSServerGet_t lpClientAFSServerGet = NULL;
357 static lpClientAFSServerGetBegin_t lpClientAFSServerGetBegin = NULL;
358 static lpClientAFSServerGetNext_t lpClientAFSServerGetNext = NULL;
359 static lpClientAFSServerGetDone_t lpClientAFSServerGetDone = NULL;
360 static lpClientInit_t lpClientInit = NULL;
362 static lpUtilDatabaseServerGetBegin_t lpUtilDatabaseServerGetBegin = NULL;
363 static lpUtilDatabaseServerGetNext_t lpUtilDatabaseServerGetNext = NULL;
364 static lpUtilDatabaseServerGetDone_t lpUtilDatabaseServerGetDone = NULL;
372 * PROTOTYPES _________________________________________________________________
376 BOOL Worker_LoadLibraries (ULONG *pStatus);
377 void Worker_FreeLibraries (void);
379 DWORD Worker_PerformTask (WORKERTASK wtask, LPWORKERPACKET lpwp);
383 * ROUTINES ___________________________________________________________________
387 BOOL Worker_Initialize (ULONG *pStatus)
389 static BOOL fInitialized = FALSE;
393 fInitialized = Worker_LoadLibraries (pStatus);
400 BOOL Worker_DoTask (WORKERTASK wtask, LPWORKERPACKET lpwp, ULONG *pStatus)
402 if (!Worker_Initialize (pStatus))
407 status = Worker_PerformTask (wtask, lpwp);
409 status = ERROR_UNEXP_NET_ERR;
413 return (status == 0) ? TRUE : FALSE;
417 DWORD Worker_PerformTask (WORKERTASK wtask, LPWORKERPACKET lpwp)
419 afs_status_t status = 0;
423 case wtaskVosBackupVolumeCreate:
425 if ((*lpVosBackupVolumeCreate)(lpwp->wpVosBackupVolumeCreate.hCell, NULL, lpwp->wpVosBackupVolumeCreate.idVolume, &status))
430 case wtaskVosBackupVolumeCreateMultiple:
432 LPSTR pszPrefixA = StringToAnsi (lpwp->wpVosBackupVolumeCreateMultiple.pszPrefix);
434 unsigned int *pPartition;
435 if (*(pPartition = (unsigned int *)&lpwp->wpVosBackupVolumeCreateMultiple.idPartition) == NO_PARTITION)
438 if ((*lpVosBackupVolumeCreateMultiple)(lpwp->wpVosBackupVolumeCreateMultiple.hCell, lpwp->wpVosBackupVolumeCreateMultiple.hServer, NULL, pPartition, pszPrefixA, (lpwp->wpVosBackupVolumeCreateMultiple.fExclude) ? VOS_EXCLUDE : VOS_INCLUDE, &status))
441 FreeString (pszPrefixA, lpwp->wpVosBackupVolumeCreateMultiple.pszPrefix);
445 case wtaskVosPartitionGet:
447 if ((*lpVosPartitionGet)(lpwp->wpVosPartitionGet.hCell, lpwp->wpVosPartitionGet.hServer, NULL, lpwp->wpVosPartitionGet.idPartition, &lpwp->wpVosPartitionGet.Data, &status))
452 case wtaskVosPartitionGetBegin:
454 if ((*lpVosPartitionGetBegin)(lpwp->wpVosPartitionGetBegin.hCell, lpwp->wpVosPartitionGetBegin.hServer, NULL, &lpwp->wpVosPartitionGetBegin.hEnum, &status))
457 lpwp->wpVosPartitionGetBegin.hEnum = NULL;
461 case wtaskVosPartitionGetNext:
463 if ((*lpVosPartitionGetNext)(lpwp->wpVosPartitionGetNext.hEnum, &lpwp->wpVosPartitionGetNext.Data, &status))
468 case wtaskVosPartitionGetDone:
470 if ((*lpVosPartitionGetDone)(lpwp->wpVosPartitionGetDone.hEnum, &status))
475 case wtaskVosServerOpen:
477 LPSTR pszServerA = StringToAnsi (lpwp->wpVosServerOpen.pszServer);
479 if ((*lpVosServerOpen)(lpwp->wpVosServerOpen.hCell, pszServerA, &lpwp->wpVosServerOpen.hServer, &status))
482 FreeString (pszServerA, lpwp->wpVosServerOpen.pszServer);
486 case wtaskVosServerClose:
488 if ((*lpVosServerClose)(lpwp->wpVosServerClose.hServer, &status))
493 case wtaskVosServerSync:
495 unsigned int *pPartition;
496 if (*(pPartition = (unsigned int *)&lpwp->wpVosServerSync.idPartition) == NO_PARTITION)
499 if ((*lpVosServerSync)(lpwp->wpVosServerSync.hCell, lpwp->wpVosServerSync.hServer, NULL, pPartition, (lpwp->wpVosServerSync.fForce) ? VOS_FORCE : VOS_NORMAL, &status))
504 case wtaskVosFileServerAddressChange:
508 AfsClass_AddressToInt (&oldAddress, &lpwp->wpVosFileServerAddressChange.addrOld);
509 AfsClass_AddressToInt (&newAddress, &lpwp->wpVosFileServerAddressChange.addrNew);
511 if ((*lpVosFileServerAddressChange)(lpwp->wpVosFileServerAddressChange.hCell, NULL, oldAddress, newAddress, &status))
516 case wtaskVosFileServerAddressRemove:
519 AfsClass_AddressToInt (&oldAddress, &lpwp->wpVosFileServerAddressRemove.addr);
521 if ((*lpVosFileServerAddressRemove)(lpwp->wpVosFileServerAddressRemove.hCell, NULL, oldAddress, &status))
524 if (status == VL_NOENT) // RemoveAddress attempted on pre-AFS3.5?
529 case wtaskVosFileServerGetBegin:
531 if ((*lpVosFileServerGetBegin)(lpwp->wpVosFileServerGetBegin.hCell, NULL, &lpwp->wpVosFileServerGetBegin.hEnum, &status))
536 case wtaskVosFileServerGetNext:
538 if ((*lpVosFileServerGetNext)(lpwp->wpVosFileServerGetNext.hEnum, &lpwp->wpVosFileServerGetNext.Entry, &status))
543 case wtaskVosFileServerGetDone:
545 if ((*lpVosFileServerGetDone)(lpwp->wpVosFileServerGetDone.hEnum, &status))
550 case wtaskVosServerTransactionStatusGetBegin:
552 if ((*lpVosServerTransactionStatusGetBegin)(lpwp->wpVosServerTransactionStatusGetBegin.hCell, lpwp->wpVosServerTransactionStatusGetBegin.hServer, NULL, &lpwp->wpVosServerTransactionStatusGetBegin.hEnum, &status))
557 case wtaskVosServerTransactionStatusGetNext:
559 if ((*lpVosServerTransactionStatusGetNext)(lpwp->wpVosServerTransactionStatusGetNext.hEnum, &lpwp->wpVosServerTransactionStatusGetNext.Data, &status))
564 case wtaskVosServerTransactionStatusGetDone:
566 if ((*lpVosServerTransactionStatusGetDone)(lpwp->wpVosServerTransactionStatusGetDone.hEnum, &status))
571 case wtaskVosVLDBGet:
573 if ((*lpVosVLDBGet)(lpwp->wpVosVLDBGet.hCell, NULL, &lpwp->wpVosVLDBGet.idVolume, NULL, &lpwp->wpVosVLDBGet.Data, &status))
578 case wtaskVosVLDBGetBegin:
580 unsigned int *pPartition;
581 if (*(pPartition = (unsigned int *)&lpwp->wpVosVLDBGetBegin.idPartition) == NO_PARTITION)
584 if ((*lpVosVLDBGetBegin)(lpwp->wpVosVLDBGetBegin.hCell, lpwp->wpVosVLDBGetBegin.hServer, NULL, pPartition, &lpwp->wpVosVLDBGetBegin.hEnum, &status))
589 case wtaskVosVLDBGetNext:
591 if ((*lpVosVLDBGetNext)(lpwp->wpVosVLDBGetNext.hEnum, &lpwp->wpVosVLDBGetNext.Data, &status))
596 case wtaskVosVLDBGetDone:
598 if ((*lpVosVLDBGetDone)(lpwp->wpVosVLDBGetDone.hEnum, &status))
603 case wtaskVosVLDBEntryRemove:
605 unsigned int *pPartition;
606 if (*(pPartition = (unsigned int *)&lpwp->wpVosVLDBEntryRemove.idPartition) == NO_PARTITION)
609 unsigned int *pVolume;
610 if (*(pVolume = (unsigned int *)&lpwp->wpVosVLDBEntryRemove.idVolume) == NO_VOLUME)
613 if ((*lpVosVLDBEntryRemove)(lpwp->wpVosVLDBEntryRemove.hCell, lpwp->wpVosVLDBEntryRemove.hServer, NULL, pPartition, pVolume, &status))
618 case wtaskVosVLDBEntryLock:
620 if ((*lpVosVLDBEntryLock)(lpwp->wpVosVLDBEntryLock.hCell, NULL, lpwp->wpVosVLDBEntryLock.idVolume, &status))
625 case wtaskVosVLDBEntryUnlock:
627 if (lpwp->wpVosVLDBEntryUnlock.idVolume == NO_VOLUME)
629 unsigned int *pPartition;
630 if (*(pPartition = (unsigned int *)&lpwp->wpVosVLDBEntryUnlock.idPartition) == NO_PARTITION)
633 if ((*lpVosVLDBUnlock)(lpwp->wpVosVLDBEntryUnlock.hCell, lpwp->wpVosVLDBEntryUnlock.hServer, NULL, pPartition, &status))
638 if ((*lpVosVLDBEntryUnlock)(lpwp->wpVosVLDBEntryUnlock.hCell, NULL, lpwp->wpVosVLDBEntryUnlock.idVolume, &status))
644 case wtaskVosVLDBReadOnlySiteCreate:
646 if ((*lpVosVLDBReadOnlySiteCreate)(lpwp->wpVosVLDBReadOnlySiteCreate.hCell, lpwp->wpVosVLDBReadOnlySiteCreate.hServer, NULL, lpwp->wpVosVLDBReadOnlySiteCreate.idPartition, lpwp->wpVosVLDBReadOnlySiteCreate.idVolume, &status))
651 case wtaskVosVLDBReadOnlySiteDelete:
653 if ((*lpVosVLDBReadOnlySiteDelete)(lpwp->wpVosVLDBReadOnlySiteDelete.hCell, lpwp->wpVosVLDBReadOnlySiteDelete.hServer, NULL, lpwp->wpVosVLDBReadOnlySiteDelete.idPartition, lpwp->wpVosVLDBReadOnlySiteDelete.idVolume, &status))
658 case wtaskVosVLDBSync:
660 unsigned int *pPartition;
661 if (*(pPartition = (unsigned int *)&lpwp->wpVosVLDBSync.idPartition) == NO_PARTITION)
664 if ((*lpVosVLDBSync)(lpwp->wpVosVLDBSync.hCell, lpwp->wpVosVLDBSync.hServer, NULL, pPartition, ((lpwp->wpVosVLDBSync.fForce) ? VOS_FORCE : VOS_NORMAL), &status))
669 case wtaskVosVolumeCreate:
671 LPSTR pszVolumeA = StringToAnsi (lpwp->wpVosVolumeCreate.pszVolume);
673 if ((*lpVosVolumeCreate)(lpwp->wpVosVolumeCreate.hCell, lpwp->wpVosVolumeCreate.hServer, NULL, lpwp->wpVosVolumeCreate.idPartition, pszVolumeA, (unsigned int)lpwp->wpVosVolumeCreate.ckQuota, (unsigned int *)&lpwp->wpVosVolumeCreate.idVolume, &status))
676 FreeString (pszVolumeA, lpwp->wpVosVolumeCreate.pszVolume);
680 case wtaskVosVolumeDelete:
682 if ((*lpVosVolumeDelete)(lpwp->wpVosVolumeDelete.hCell, lpwp->wpVosVolumeDelete.hServer, NULL, lpwp->wpVosVolumeDelete.idPartition, lpwp->wpVosVolumeDelete.idVolume, &status))
687 case wtaskVosVolumeRename:
689 LPSTR pszVolumeA = StringToAnsi (lpwp->wpVosVolumeRename.pszVolume);
691 if ((*lpVosVolumeRename)(lpwp->wpVosVolumeRename.hCell, NULL, lpwp->wpVosVolumeRename.idVolume, pszVolumeA, &status))
694 FreeString (pszVolumeA, lpwp->wpVosVolumeRename.pszVolume);
698 case wtaskVosVolumeDump:
700 LPSTR pszFilenameA = StringToAnsi (lpwp->wpVosVolumeDump.pszFilename);
701 ULONG timeStart = AfsClass_SystemTimeToUnixTime (&lpwp->wpVosVolumeDump.stStart);
703 if ((*lpVosVolumeDump)(lpwp->wpVosVolumeDump.hCell, lpwp->wpVosVolumeDump.hServer, NULL, (unsigned int *)&lpwp->wpVosVolumeDump.idPartition, lpwp->wpVosVolumeDump.idVolume, timeStart, pszFilenameA, &status))
706 FreeString (pszFilenameA, lpwp->wpVosVolumeDump.pszFilename);
710 case wtaskVosVolumeRestore:
712 LPSTR pszVolumeA = StringToAnsi (lpwp->wpVosVolumeRestore.pszVolume);
713 LPSTR pszFilenameA = StringToAnsi (lpwp->wpVosVolumeRestore.pszFilename);
714 vos_volumeRestoreType_t Type = (lpwp->wpVosVolumeRestore.fIncremental) ? VOS_RESTORE_INCREMENTAL : VOS_RESTORE_FULL;
716 unsigned int *pVolume;
717 if (*(pVolume = (unsigned int *)&lpwp->wpVosVolumeRestore.idVolume) == NO_VOLUME)
720 if ((*lpVosVolumeRestore)(lpwp->wpVosVolumeRestore.hCell, lpwp->wpVosVolumeRestore.hServer, NULL, lpwp->wpVosVolumeRestore.idPartition, pVolume, pszVolumeA, pszFilenameA, Type, &status))
723 FreeString (pszFilenameA, lpwp->wpVosVolumeRestore.pszFilename);
724 FreeString (pszVolumeA, lpwp->wpVosVolumeRestore.pszVolume);
728 case wtaskVosVolumeOnline:
730 if ((*lpVosVolumeOnline)(lpwp->wpVosVolumeOnline.hServer, NULL, lpwp->wpVosVolumeOnline.idPartition, lpwp->wpVosVolumeOnline.idVolume, lpwp->wpVosVolumeOnline.csecSleep, lpwp->wpVosVolumeOnline.Status, &status))
735 case wtaskVosVolumeOffline:
737 if ((*lpVosVolumeOffline)(lpwp->wpVosVolumeOffline.hServer, NULL, lpwp->wpVosVolumeOffline.idPartition, lpwp->wpVosVolumeOffline.idVolume, &status))
742 case wtaskVosVolumeGet:
744 if ((*lpVosVolumeGet)(lpwp->wpVosVolumeGet.hCell, lpwp->wpVosVolumeGet.hServer, NULL, lpwp->wpVosVolumeGet.idPartition, lpwp->wpVosVolumeGet.idVolume, &lpwp->wpVosVolumeGet.Data, &status))
749 case wtaskVosVolumeGetBegin:
751 if ((lpVosVolumeGetBegin)(lpwp->wpVosVolumeGetBegin.hCell, lpwp->wpVosVolumeGetBegin.hServer, NULL, lpwp->wpVosVolumeGetBegin.idPartition, &lpwp->wpVosVolumeGetBegin.hEnum, &status))
756 case wtaskVosVolumeGetNext:
758 if ((*lpVosVolumeGetNext)(lpwp->wpVosVolumeGetNext.hEnum, &lpwp->wpVosVolumeGetNext.Data, &status))
763 case wtaskVosVolumeGetDone:
765 if ((*lpVosVolumeGetDone)(lpwp->wpVosVolumeGetDone.hEnum, &status))
770 case wtaskVosVolumeMove:
772 if ((lpVosVolumeMove)(lpwp->wpVosVolumeMove.hCell, NULL, lpwp->wpVosVolumeMove.idVolume, lpwp->wpVosVolumeMove.hServerFrom, lpwp->wpVosVolumeMove.idPartitionFrom, lpwp->wpVosVolumeMove.hServerTo, lpwp->wpVosVolumeMove.idPartitionTo, &status))
777 case wtaskVosVolumeRelease:
779 if ((*lpVosVolumeRelease)(lpwp->wpVosVolumeRelease.hCell, NULL, lpwp->wpVosVolumeRelease.idVolume, ((lpwp->wpVosVolumeRelease.fForce) ? VOS_FORCE : VOS_NORMAL), &status))
784 case wtaskVosVolumeZap:
786 if ((*lpVosVolumeZap)(lpwp->wpVosVolumeZap.hCell, lpwp->wpVosVolumeZap.hServer, NULL, lpwp->wpVosVolumeZap.idPartition, lpwp->wpVosVolumeZap.idVolume, ((lpwp->wpVosVolumeZap.fForce) ? VOS_FORCE : VOS_NORMAL), &status))
791 case wtaskVosPartitionNameToId:
793 LPSTR pszPartitionA = StringToAnsi (lpwp->wpVosPartitionNameToId.pszPartition);
795 if ((*lpVosPartitionNameToId)(pszPartitionA, (unsigned int *)&lpwp->wpVosPartitionNameToId.idPartition, &status))
798 FreeString (pszPartitionA, lpwp->wpVosPartitionNameToId.pszPartition);
802 case wtaskVosPartitionIdToName:
804 char szPartitionA[ cchNAME ];
805 if ((*lpVosPartitionIdToName)(lpwp->wpVosPartitionIdToName.idPartition, szPartitionA, &status))
807 CopyAnsiToString (lpwp->wpVosPartitionIdToName.pszPartition, szPartitionA);
813 case wtaskVosVolumeQuotaChange:
815 if ((*lpVosVolumeQuotaChange)(lpwp->wpVosVolumeQuotaChange.hCell, lpwp->wpVosVolumeQuotaChange.hServer, NULL, lpwp->wpVosVolumeQuotaChange.idPartition, lpwp->wpVosVolumeQuotaChange.idVolume, (unsigned int)lpwp->wpVosVolumeQuotaChange.ckQuota, &status))
820 case wtaskBosServerOpen:
822 LPSTR pszServerA = StringToAnsi (lpwp->wpBosServerOpen.pszServer);
824 if ((*lpBosServerOpen)(lpwp->wpBosServerOpen.hCell, pszServerA, &lpwp->wpBosServerOpen.hServer, &status))
827 FreeString (pszServerA, lpwp->wpBosServerOpen.pszServer);
831 case wtaskBosServerClose:
833 if ((*lpBosServerClose)(lpwp->wpBosServerClose.hServer, &status))
838 case wtaskBosProcessCreate:
840 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessCreate.pszService);
841 LPSTR pszCommandA = StringToAnsi (lpwp->wpBosProcessCreate.pszCommand);
842 LPSTR pszTimeCronA = StringToAnsi (lpwp->wpBosProcessCreate.pszTimeCron);
843 LPSTR pszNotifierA = StringToAnsi (lpwp->wpBosProcessCreate.pszNotifier);
845 bos_ProcessType_t processType;
846 switch (lpwp->wpBosProcessCreate.type)
849 processType = BOS_PROCESS_FS;
851 case SERVICETYPE_CRON:
852 processType = BOS_PROCESS_CRON;
855 case SERVICETYPE_SIMPLE:
856 processType = BOS_PROCESS_SIMPLE;
860 if ((*lpBosProcessCreate)(lpwp->wpBosProcessCreate.hServer, pszServiceA, processType, pszCommandA, pszTimeCronA, pszNotifierA, &status))
863 FreeString (pszNotifierA, lpwp->wpBosProcessCreate.pszNotifier);
864 FreeString (pszTimeCronA, lpwp->wpBosProcessCreate.pszTimeCron);
865 FreeString (pszCommandA, lpwp->wpBosProcessCreate.pszCommand);
866 FreeString (pszServiceA, lpwp->wpBosProcessCreate.pszService);
870 case wtaskBosProcessDelete:
872 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessDelete.pszService);
874 if ((*lpBosProcessDelete)(lpwp->wpBosProcessDelete.hServer, pszServiceA, &status))
877 FreeString (pszServiceA, lpwp->wpBosProcessDelete.pszService);
881 case wtaskBosProcessExecutionStateGet:
883 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessExecutionStateGet.pszService);
884 char szAuxStatusA[BOS_MAX_NAME_LEN] = "";
886 bos_ProcessExecutionState_t processState = BOS_PROCESS_STOPPED;
887 if ((*lpBosProcessExecutionStateGet)(lpwp->wpBosProcessExecutionStateGet.hServer, pszServiceA, &processState, szAuxStatusA, &status))
891 if (lpwp->wpBosProcessExecutionStateGet.pszAuxStatus != NULL)
893 CopyAnsiToString (lpwp->wpBosProcessExecutionStateGet.pszAuxStatus, szAuxStatusA);
896 switch (processState)
898 case BOS_PROCESS_RUNNING:
899 lpwp->wpBosProcessExecutionStateGet.state = SERVICESTATE_RUNNING;
901 case BOS_PROCESS_STARTING:
902 lpwp->wpBosProcessExecutionStateGet.state = SERVICESTATE_STARTING;
904 case BOS_PROCESS_STOPPING:
905 lpwp->wpBosProcessExecutionStateGet.state = SERVICESTATE_STOPPING;
908 case BOS_PROCESS_STOPPED:
909 lpwp->wpBosProcessExecutionStateGet.state = SERVICESTATE_STOPPED;
914 FreeString (pszServiceA, lpwp->wpBosProcessExecutionStateGet.pszService);
918 case wtaskBosProcessExecutionStateSet:
920 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessExecutionStateSet.pszService);
922 bos_ProcessExecutionState_t processState;
923 switch (lpwp->wpBosProcessExecutionStateSet.state)
925 case SERVICESTATE_STOPPING:
926 case SERVICESTATE_STOPPED:
927 processState = BOS_PROCESS_STOPPED;
930 case SERVICESTATE_STARTING:
931 case SERVICESTATE_RUNNING:
932 processState = BOS_PROCESS_RUNNING;
936 if ((*lpBosProcessExecutionStateSet)(lpwp->wpBosProcessExecutionStateSet.hServer, pszServiceA, processState, &status))
939 FreeString (pszServiceA, lpwp->wpBosProcessExecutionStateSet.pszService);
943 case wtaskBosProcessExecutionStateSetTemporary:
945 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessExecutionStateSetTemporary.pszService);
947 bos_ProcessExecutionState_t processState;
948 switch (lpwp->wpBosProcessExecutionStateSetTemporary.state)
950 case SERVICESTATE_STOPPING:
951 case SERVICESTATE_STOPPED:
952 processState = BOS_PROCESS_STOPPED;
955 case SERVICESTATE_STARTING:
956 case SERVICESTATE_RUNNING:
957 processState = BOS_PROCESS_RUNNING;
961 if ((*lpBosProcessExecutionStateSetTemporary)(lpwp->wpBosProcessExecutionStateSetTemporary.hServer, pszServiceA, processState, &status))
964 FreeString (pszServiceA, lpwp->wpBosProcessExecutionStateSetTemporary.pszService);
968 case wtaskBosProcessNameGetBegin:
970 if (!(*lpBosProcessNameGetBegin)(lpwp->wpBosProcessNameGetBegin.hServer, &lpwp->wpBosProcessNameGetBegin.hEnum, &status))
971 lpwp->wpBosProcessNameGetBegin.hEnum = 0;
977 case wtaskBosProcessNameGetDone:
979 if ((*lpBosProcessNameGetDone)(lpwp->wpBosProcessNameGetDone.hEnum, &status))
984 case wtaskBosProcessNameGetNext:
986 char szServiceA[ 256 ];
987 if (!(*lpBosProcessNameGetNext)(lpwp->wpBosProcessNameGetNext.hEnum, szServiceA, &status))
988 lpwp->wpBosProcessNameGetNext.pszService[0] = TEXT('\0');
992 CopyAnsiToString (lpwp->wpBosProcessNameGetNext.pszService, szServiceA);
997 case wtaskBosProcessInfoGet:
999 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessInfoGet.pszService);
1000 memset (&lpwp->wpBosProcessInfoGet.ss, 0x00, sizeof(SERVICESTATUS));
1002 bos_ProcessType_t processType;
1003 bos_ProcessInfo_t processInfo;
1004 if ((*lpBosProcessInfoGet)(lpwp->wpBosProcessInfoGet.hServer, pszServiceA, &processType, &processInfo, &status))
1008 switch (processType)
1010 case BOS_PROCESS_FS:
1011 lpwp->wpBosProcessInfoGet.ss.type = SERVICETYPE_FS;
1013 case BOS_PROCESS_SIMPLE:
1014 lpwp->wpBosProcessInfoGet.ss.type = SERVICETYPE_SIMPLE;
1016 case BOS_PROCESS_CRON:
1017 lpwp->wpBosProcessInfoGet.ss.type = SERVICETYPE_CRON;
1021 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosProcessInfoGet.ss.timeLastStart, processInfo.processStartTime);
1022 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosProcessInfoGet.ss.timeLastStop, processInfo.processExitTime);
1023 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosProcessInfoGet.ss.timeLastFail, processInfo.processExitErrorTime);
1024 lpwp->wpBosProcessInfoGet.ss.nStarts = processInfo.numberProcessStarts;
1025 lpwp->wpBosProcessInfoGet.ss.dwErrLast = processInfo.processErrorCode;
1026 lpwp->wpBosProcessInfoGet.ss.dwSigLast = processInfo.processErrorSignal;
1029 FreeString (pszServiceA, lpwp->wpBosProcessInfoGet.pszService);
1033 case wtaskBosProcessParameterGetBegin:
1035 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessParameterGetBegin.pszService);
1037 if (!(*lpBosProcessParameterGetBegin)(lpwp->wpBosProcessParameterGetBegin.hServer, pszServiceA, &lpwp->wpBosProcessParameterGetBegin.hEnum, &status))
1038 lpwp->wpBosProcessParameterGetBegin.hEnum = 0;
1042 FreeString (pszServiceA, lpwp->wpBosProcessParameterGetBegin.pszService);
1046 case wtaskBosProcessParameterGetDone:
1048 if ((*lpBosProcessParameterGetDone)(lpwp->wpBosProcessParameterGetDone.hEnum, &status))
1053 case wtaskBosProcessParameterGetNext:
1055 char szParamA[ 1024 ];
1057 if (!(*lpBosProcessParameterGetNext)(lpwp->wpBosProcessParameterGetNext.hEnum, szParamA, &status))
1058 lpwp->wpBosProcessParameterGetNext.pszParam[0] = TEXT('\0');
1062 CopyAnsiToString (lpwp->wpBosProcessParameterGetNext.pszParam, szParamA);
1067 case wtaskBosProcessNotifierGet:
1069 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessNotifierGet.pszService);
1070 char szNotifierA[ 1024 ];
1072 if ((*lpBosProcessNotifierGet)(lpwp->wpBosProcessNotifierGet.hServer, pszServiceA, szNotifierA, &status))
1075 CopyAnsiToString (lpwp->wpBosProcessNotifierGet.pszNotifier, szNotifierA);
1078 FreeString (pszServiceA, lpwp->wpBosProcessNotifierGet.pszService);
1082 case wtaskBosProcessRestart:
1084 LPSTR pszServiceA = StringToAnsi (lpwp->wpBosProcessRestart.pszService);
1085 if ((*lpBosProcessRestart)(lpwp->wpBosProcessRestart.hServer, pszServiceA, &status))
1088 FreeString (pszServiceA, lpwp->wpBosProcessRestart.pszService);
1092 case wtaskBosProcessAllStop:
1094 if ((*lpBosProcessAllStop)(lpwp->wpBosProcessAllStop.hServer, &status))
1099 case wtaskBosProcessAllStart:
1101 if ((*lpBosProcessAllStart)(lpwp->wpBosProcessAllStart.hServer, &status))
1106 case wtaskBosProcessAllWaitStop:
1108 if ((*lpBosProcessAllWaitStop)(lpwp->wpBosProcessAllWaitStop.hServer, &status))
1113 case wtaskBosProcessAllStopAndRestart:
1115 bos_RestartBosServer_t bBosToo;
1116 bBosToo = (lpwp->wpBosProcessAllStopAndRestart.fRestartBOS) ? BOS_RESTART_BOS_SERVER : BOS_DONT_RESTART_BOS_SERVER;
1118 if ((*lpBosProcessAllStopAndRestart)(lpwp->wpBosProcessAllStopAndRestart.hServer, bBosToo, &status))
1123 case wtaskBosAdminCreate:
1125 LPSTR pszAdminA = StringToAnsi (lpwp->wpBosAdminCreate.pszAdmin);
1126 if ((*lpBosAdminCreate)(lpwp->wpBosAdminCreate.hServer, pszAdminA, &status))
1128 FreeString (pszAdminA, lpwp->wpBosAdminCreate.pszAdmin);
1132 case wtaskBosAdminDelete:
1134 LPSTR pszAdminA = StringToAnsi (lpwp->wpBosAdminDelete.pszAdmin);
1135 if ((*lpBosAdminDelete)(lpwp->wpBosAdminDelete.hServer, pszAdminA, &status))
1137 FreeString (pszAdminA, lpwp->wpBosAdminDelete.pszAdmin);
1141 case wtaskBosAdminGetBegin:
1143 if (!(*lpBosAdminGetBegin)(lpwp->wpBosAdminGetBegin.hServer, &lpwp->wpBosAdminGetBegin.hEnum, &status))
1144 lpwp->wpBosAdminGetBegin.hEnum = 0;
1150 case wtaskBosAdminGetDone:
1152 if ((*lpBosAdminGetDone)(lpwp->wpBosAdminGetDone.hEnum, &status))
1157 case wtaskBosAdminGetNext:
1159 char szAdminA[ 1024 ];
1160 if (!(*lpBosAdminGetNext)(lpwp->wpBosAdminGetNext.hEnum, szAdminA, &status))
1161 lpwp->wpBosAdminGetNext.pszAdmin[0] = TEXT('\0');
1165 CopyAnsiToString (lpwp->wpBosAdminGetNext.pszAdmin, szAdminA);
1170 case wtaskBosKeyCreate:
1172 kas_encryptionKey_t key;
1173 memcpy (key.key, lpwp->wpBosKeyCreate.key.key, ENCRYPTIONKEY_LEN);
1175 if ((*lpBosKeyCreate)(lpwp->wpBosKeyCreate.hServer, lpwp->wpBosKeyCreate.keyVersion, &key, &status))
1180 case wtaskBosKeyDelete:
1182 if ((*lpBosKeyDelete)(lpwp->wpBosKeyDelete.hServer, lpwp->wpBosKeyDelete.keyVersion, &status))
1187 case wtaskBosKeyGetBegin:
1189 if (!(*lpBosKeyGetBegin)(lpwp->wpBosKeyGetBegin.hServer, &lpwp->wpBosKeyGetBegin.hEnum, &status))
1190 lpwp->wpBosKeyGetBegin.hEnum = 0;
1196 case wtaskBosKeyGetDone:
1198 if ((*lpBosKeyGetDone)(lpwp->wpBosKeyGetDone.hEnum, &status))
1203 case wtaskBosKeyGetNext:
1205 bos_KeyInfo_t keyInfo;
1207 if ((*lpBosKeyGetNext)(lpwp->wpBosKeyGetNext.hEnum, &keyInfo, &status))
1210 lpwp->wpBosKeyGetNext.keyVersion = keyInfo.keyVersionNumber;
1211 memcpy (lpwp->wpBosKeyGetNext.keyData.key, keyInfo.key.key, ENCRYPTIONKEY_LEN);
1212 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosKeyGetNext.keyInfo.timeLastModification, keyInfo.keyStatus.lastModificationDate);
1213 lpwp->wpBosKeyGetNext.keyInfo.timeLastModification.wMilliseconds = keyInfo.keyStatus.lastModificationMicroSeconds;
1214 lpwp->wpBosKeyGetNext.keyInfo.dwChecksum = (DWORD)keyInfo.keyStatus.checkSum;
1219 case wtaskBosCellSet:
1221 LPSTR pszCellA = StringToAnsi (lpwp->wpBosCellSet.pszCell);
1222 if ((*lpBosCellSet)(lpwp->wpBosCellSet.hServer, pszCellA, &status))
1224 FreeString (pszCellA, lpwp->wpBosCellSet.pszCell);
1228 case wtaskBosCellGet:
1230 char szCellA[ 256 ];
1231 if ((*lpBosCellGet)(lpwp->wpBosCellGet.hServer, szCellA, &status))
1234 CopyAnsiToString (lpwp->wpBosCellGet.pszCell, szCellA);
1239 case wtaskBosHostCreate:
1241 LPSTR pszServerA = StringToAnsi (lpwp->wpBosHostCreate.pszServer);
1242 if ((*lpBosHostCreate)(lpwp->wpBosHostCreate.hServer, pszServerA, &status))
1244 FreeString (pszServerA, lpwp->wpBosHostCreate.pszServer);
1248 case wtaskBosHostDelete:
1250 LPSTR pszServerA = StringToAnsi (lpwp->wpBosHostDelete.pszServer);
1251 if ((*lpBosHostDelete)(lpwp->wpBosHostDelete.hServer, pszServerA, &status))
1253 FreeString (pszServerA, lpwp->wpBosHostDelete.pszServer);
1257 case wtaskBosHostGetBegin:
1259 if (!(*lpBosHostGetBegin)(lpwp->wpBosHostGetBegin.hServer, &lpwp->wpBosHostGetBegin.hEnum, &status))
1260 lpwp->wpBosHostGetBegin.hEnum = 0;
1266 case wtaskBosHostGetDone:
1268 if ((*lpBosHostGetDone)(lpwp->wpBosHostGetDone.hEnum, &status))
1273 case wtaskBosHostGetNext:
1275 char szServerA[ 256 ];
1276 if (!(*lpBosHostGetNext)(lpwp->wpBosHostGetNext.hEnum, szServerA, &status))
1277 lpwp->wpBosHostGetNext.pszServer[0] = TEXT('\0');
1281 CopyAnsiToString (lpwp->wpBosHostGetNext.pszServer, szServerA);
1286 case wtaskBosExecutableCreate:
1288 LPSTR pszLocalA = StringToAnsi (lpwp->wpBosExecutableCreate.pszLocal);
1289 LPSTR pszRemoteDirA = StringToAnsi (lpwp->wpBosExecutableCreate.pszRemoteDir);
1291 if ((*lpBosExecutableCreate)(lpwp->wpBosExecutableCreate.hServer, pszLocalA, pszRemoteDirA, &status))
1294 FreeString (pszRemoteDirA, lpwp->wpBosExecutableCreate.pszRemoteDir);
1295 FreeString (pszLocalA, lpwp->wpBosExecutableCreate.pszLocal);
1299 case wtaskBosExecutableRevert:
1301 LPSTR pszFilenameA = StringToAnsi (lpwp->wpBosExecutableRevert.pszFilename);
1303 if ((*lpBosExecutableRevert)(lpwp->wpBosExecutableRevert.hServer, pszFilenameA, &status))
1306 FreeString (pszFilenameA, lpwp->wpBosExecutableRevert.pszFilename);
1310 case wtaskBosExecutableTimestampGet:
1312 LPSTR pszFilenameA = StringToAnsi (lpwp->wpBosExecutableTimestampGet.pszFilename);
1314 unsigned long timeNew = 0;
1315 unsigned long timeOld = 0;
1316 unsigned long timeBak = 0;
1317 if ((*lpBosExecutableTimestampGet)(lpwp->wpBosExecutableTimestampGet.hServer, pszFilenameA, &timeNew, &timeOld, &timeBak, &status))
1320 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosExecutableTimestampGet.timeNew, timeNew);
1321 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosExecutableTimestampGet.timeOld, timeOld);
1322 AfsClass_UnixTimeToSystemTime (&lpwp->wpBosExecutableTimestampGet.timeBak, timeBak);
1325 FreeString (pszFilenameA, lpwp->wpBosExecutableTimestampGet.pszFilename);
1329 case wtaskBosExecutablePrune:
1331 bos_Prune_t oldFiles = (lpwp->wpBosExecutablePrune.fPruneOld) ? BOS_PRUNE : BOS_DONT_PRUNE;
1332 bos_Prune_t bakFiles = (lpwp->wpBosExecutablePrune.fPruneBak) ? BOS_PRUNE : BOS_DONT_PRUNE;
1333 bos_Prune_t coreFiles = (lpwp->wpBosExecutablePrune.fPruneCore) ? BOS_PRUNE : BOS_DONT_PRUNE;
1335 if ((*lpBosExecutablePrune)(lpwp->wpBosExecutablePrune.hServer, oldFiles, bakFiles, coreFiles, &status))
1340 case wtaskBosExecutableRestartTimeSet:
1342 bos_RestartTime_t time;
1343 AfsClass_SystemTimeToRestartTime (&time, lpwp->wpBosExecutableRestartTimeSet.fWeeklyRestart, &lpwp->wpBosExecutableRestartTimeSet.timeWeekly);
1344 if ((*lpBosExecutableRestartTimeSet)(lpwp->wpBosExecutableRestartTimeSet.hServer, BOS_RESTART_WEEKLY, time, &status))
1346 AfsClass_SystemTimeToRestartTime (&time, lpwp->wpBosExecutableRestartTimeSet.fDailyRestart, &lpwp->wpBosExecutableRestartTimeSet.timeDaily);
1347 if ((*lpBosExecutableRestartTimeSet)(lpwp->wpBosExecutableRestartTimeSet.hServer, BOS_RESTART_DAILY, time, &status))
1353 case wtaskBosExecutableRestartTimeGet:
1355 lpwp->wpBosExecutableRestartTimeGet.fDailyRestart = FALSE;
1356 lpwp->wpBosExecutableRestartTimeGet.fWeeklyRestart = FALSE;
1358 bos_RestartTime_t time;
1359 if ((*lpBosExecutableRestartTimeGet)(lpwp->wpBosExecutableRestartTimeGet.hServer, BOS_RESTART_WEEKLY, &time, &status))
1361 AfsClass_RestartTimeToSystemTime (&lpwp->wpBosExecutableRestartTimeGet.fWeeklyRestart, &lpwp->wpBosExecutableRestartTimeGet.timeWeekly, &time);
1363 if ((*lpBosExecutableRestartTimeGet)(lpwp->wpBosExecutableRestartTimeGet.hServer, BOS_RESTART_DAILY, &time, &status))
1365 AfsClass_RestartTimeToSystemTime (&lpwp->wpBosExecutableRestartTimeGet.fDailyRestart, &lpwp->wpBosExecutableRestartTimeGet.timeDaily, &time);
1372 case wtaskBosLogGet:
1374 LPSTR pszLogNameA = StringToAnsi (lpwp->wpBosLogGet.pszLogName);
1376 LPSTR pszLogDataA = NULL;
1377 unsigned long cchAllocated = 0;
1378 unsigned long cchRequired = 1024;
1381 if (cchAllocated < cchRequired)
1385 FreeString (pszLogDataA);
1388 if ((pszLogDataA = AllocateAnsi (cchRequired)) == 0)
1390 cchAllocated = cchRequired;
1393 cchRequired = cchAllocated;
1394 if ((*lpBosLogGet)(lpwp->wpBosLogGet.hServer, pszLogNameA, &cchRequired, pszLogDataA, &status))
1396 lpwp->wpBosLogGet.pszLogData = AllocateString (cchRequired+1);
1397 CopyAnsiToString (lpwp->wpBosLogGet.pszLogData, pszLogDataA, cchRequired);
1398 lpwp->wpBosLogGet.pszLogData[ cchRequired ] = TEXT('\0');
1402 } while (cchRequired > cchAllocated);
1405 FreeString (pszLogDataA);
1406 FreeString (pszLogNameA, lpwp->wpBosLogGet.pszLogName);
1410 case wtaskBosAuthSet:
1412 bos_Auth_t auth = (lpwp->wpBosAuthSet.fEnableAuth) ? BOS_AUTH_REQUIRED : BOS_NO_AUTH;
1413 if ((*lpBosAuthSet)(lpwp->wpBosAuthSet.hServer, auth, &status))
1418 case wtaskBosCommandExecute:
1420 LPSTR pszCommandA = StringToAnsi (lpwp->wpBosCommandExecute.pszCommand);
1421 if ((*lpBosCommandExecute)(lpwp->wpBosCommandExecute.hServer, pszCommandA, &status))
1423 FreeString (pszCommandA, lpwp->wpBosCommandExecute.pszCommand);
1427 case wtaskBosSalvage:
1429 LPSTR pszAggregateA = StringToAnsi (lpwp->wpBosSalvage.pszAggregate);
1430 LPSTR pszFilesetA = StringToAnsi (lpwp->wpBosSalvage.pszFileset);
1431 LPSTR pszTempDirA = StringToAnsi (lpwp->wpBosSalvage.pszTempDir);
1432 LPSTR pszLogFileA = StringToAnsi (lpwp->wpBosSalvage.pszLogFile);
1434 vos_force_t force = (lpwp->wpBosSalvage.fForce) ? VOS_FORCE : VOS_NORMAL;
1435 bos_SalvageDamagedVolumes_t salvageDamagedVolumes = (lpwp->wpBosSalvage.fReadonly) ? BOS_DONT_SALVAGE_DAMAGED_VOLUMES : BOS_SALVAGE_DAMAGED_VOLUMES;
1436 bos_WriteInodes_t writeInodes = (lpwp->wpBosSalvage.fLogInodes) ? BOS_SALVAGE_WRITE_INODES : BOS_SALVAGE_DONT_WRITE_INODES;
1437 bos_WriteRootInodes_t writeRootInodes = (lpwp->wpBosSalvage.fLogRootInodes) ? BOS_SALVAGE_WRITE_ROOT_INODES : BOS_SALVAGE_DONT_WRITE_ROOT_INODES;
1438 bos_ForceDirectory_t forceDirectory = (lpwp->wpBosSalvage.fRebuildDirs) ? BOS_SALVAGE_FORCE_DIRECTORIES : BOS_SALVAGE_DONT_FORCE_DIRECTORIES;
1439 bos_ForceBlockRead_t forceBlockRead = (lpwp->wpBosSalvage.fReadBlocks) ? BOS_SALVAGE_FORCE_BLOCK_READS : BOS_SALVAGE_DONT_FORCE_BLOCK_READS;
1441 if ((*lpBosSalvage)(lpwp->wpBosSalvage.hCell, lpwp->wpBosSalvage.hServer, pszAggregateA, pszFilesetA, max(lpwp->wpBosSalvage.nProcesses,1), pszTempDirA, pszLogFileA, force, salvageDamagedVolumes, writeInodes, writeRootInodes, forceDirectory, forceBlockRead, &status))
1444 FreeString (pszLogFileA, lpwp->wpBosSalvage.pszLogFile);
1445 FreeString (pszTempDirA, lpwp->wpBosSalvage.pszTempDir);
1446 FreeString (pszFilesetA, lpwp->wpBosSalvage.pszFileset);
1447 FreeString (pszAggregateA, lpwp->wpBosSalvage.pszAggregate);
1451 case wtaskKasServerOpen:
1453 if ((*lpKasServerOpen)(lpwp->wpKasServerOpen.hCell, (const char **)lpwp->wpKasServerOpen.apszServers, &lpwp->wpKasServerOpen.hServer, &status))
1458 case wtaskKasServerClose:
1460 if ((*lpKasServerClose)(lpwp->wpKasServerClose.hServer, &status))
1465 case wtaskKasServerRandomKeyGet:
1467 kas_encryptionKey_t key;
1468 if ((*lpKasServerRandomKeyGet)(lpwp->wpKasServerRandomKeyGet.hCell, lpwp->wpKasServerRandomKeyGet.hServer, &key, &status))
1471 memcpy (&lpwp->wpKasServerRandomKeyGet.key.key, &key.key, ENCRYPTIONKEY_LEN);
1476 case wtaskKasStringToKey:
1478 LPSTR pszCellA = StringToAnsi (lpwp->wpKasStringToKey.pszCell);
1479 LPSTR pszStringA = StringToAnsi (lpwp->wpKasStringToKey.pszString);
1481 kas_encryptionKey_t key;
1482 if ((*lpKasStringToKey)(pszCellA, pszStringA, &key, &status))
1485 memcpy (&lpwp->wpKasStringToKey.key.key, &key.key, ENCRYPTIONKEY_LEN);
1488 FreeString (pszStringA, lpwp->wpKasStringToKey.pszString);
1489 FreeString (pszCellA, lpwp->wpKasStringToKey.pszCell);
1493 case wtaskKasPrincipalCreate:
1495 kas_identity_t Identity;
1496 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalCreate.pszPrincipal);
1497 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalCreate.pszInstance);
1499 LPSTR pszPasswordA = StringToAnsi (lpwp->wpKasPrincipalCreate.pszPassword);
1501 if ((*lpKasPrincipalCreate)(lpwp->wpKasPrincipalCreate.hCell, lpwp->wpKasPrincipalCreate.hServer, &Identity, pszPasswordA, &status))
1504 FreeString (pszPasswordA, lpwp->wpKasPrincipalCreate.pszPassword);
1508 case wtaskKasPrincipalDelete:
1510 kas_identity_t Identity;
1511 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalDelete.pszPrincipal);
1512 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalDelete.pszInstance);
1514 if ((*lpKasPrincipalDelete)(lpwp->wpKasPrincipalDelete.hCell, lpwp->wpKasPrincipalDelete.hServer, &Identity, &status))
1519 case wtaskKasPrincipalGet:
1521 kas_identity_t Identity;
1522 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalGet.pszPrincipal);
1523 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalGet.pszInstance);
1525 if ((*lpKasPrincipalGet)(lpwp->wpKasPrincipalGet.hCell, lpwp->wpKasPrincipalGet.hServer, &Identity, &lpwp->wpKasPrincipalGet.Data, &status))
1530 case wtaskKasPrincipalGetBegin:
1532 if ((*lpKasPrincipalGetBegin)(lpwp->wpKasPrincipalGetBegin.hCell, lpwp->wpKasPrincipalGetBegin.hServer, &lpwp->wpKasPrincipalGetBegin.hEnum, &status))
1537 case wtaskKasPrincipalGetNext:
1539 kas_identity_t Identity;
1540 if ((*lpKasPrincipalGetNext)(lpwp->wpKasPrincipalGetNext.hEnum, &Identity, &status))
1542 CopyAnsiToString (lpwp->wpKasPrincipalGetNext.pszPrincipal, Identity.principal);
1543 CopyAnsiToString (lpwp->wpKasPrincipalGetNext.pszInstance, Identity.instance);
1549 case wtaskKasPrincipalGetDone:
1551 if ((*lpKasPrincipalGetDone)(lpwp->wpKasPrincipalGetDone.hEnum, &status))
1556 case wtaskKasPrincipalKeySet:
1558 kas_identity_t Identity;
1559 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalKeySet.pszPrincipal);
1560 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalKeySet.pszInstance);
1562 kas_encryptionKey_t Key;
1563 memcpy (&Key.key, &lpwp->wpKasPrincipalKeySet.key, ENCRYPTIONKEY_LEN);
1565 if ((*lpKasPrincipalKeySet)(lpwp->wpKasPrincipalKeySet.hCell, lpwp->wpKasPrincipalKeySet.hServer, &Identity, lpwp->wpKasPrincipalKeySet.keyVersion, &Key, &status))
1570 case wtaskKasPrincipalLockStatusGet:
1572 kas_identity_t Identity;
1573 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalLockStatusGet.pszPrincipal);
1574 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalLockStatusGet.pszInstance);
1577 if ((*lpKasPrincipalLockStatusGet)(lpwp->wpKasPrincipalLockStatusGet.hCell, lpwp->wpKasPrincipalLockStatusGet.hServer, &Identity, &date, &status))
1579 AfsClass_UnixTimeToSystemTime (&lpwp->wpKasPrincipalLockStatusGet.timeUnlocked, date);
1585 case wtaskKasPrincipalUnlock:
1587 kas_identity_t Identity;
1588 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalUnlock.pszPrincipal);
1589 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalUnlock.pszInstance);
1591 if ((*lpKasPrincipalUnlock)(lpwp->wpKasPrincipalUnlock.hCell, lpwp->wpKasPrincipalUnlock.hServer, &Identity, &status))
1596 case wtaskKasPrincipalFieldsSet:
1598 kas_identity_t Identity;
1599 CopyStringToAnsi (Identity.principal, lpwp->wpKasPrincipalFieldsSet.pszPrincipal);
1600 CopyStringToAnsi (Identity.instance, lpwp->wpKasPrincipalFieldsSet.pszInstance);
1602 ULONG timeExpires = AfsClass_SystemTimeToUnixTime (&lpwp->wpKasPrincipalFieldsSet.timeExpires);
1603 if (!timeExpires) // account never expires?
1604 timeExpires = (ULONG)-1;
1606 kas_admin_t isAdmin = (lpwp->wpKasPrincipalFieldsSet.fIsAdmin) ? KAS_ADMIN : NO_KAS_ADMIN;
1607 kas_tgs_t grantTickets = (lpwp->wpKasPrincipalFieldsSet.fGrantTickets) ? TGS : NO_TGS;
1608 kas_enc_t canEncrypt = (lpwp->wpKasPrincipalFieldsSet.fCanEncrypt) ? ENCRYPT : NO_ENCRYPT;
1609 kas_cpw_t canChangePassword = (lpwp->wpKasPrincipalFieldsSet.fCanChangePassword) ? CHANGE_PASSWORD : NO_CHANGE_PASSWORD;
1610 kas_rpw_t passwordReuse = (lpwp->wpKasPrincipalFieldsSet.fCanReusePasswords) ? REUSE_PASSWORD : NO_REUSE_PASSWORD;
1612 if ((*lpKasPrincipalFieldsSet)(lpwp->wpKasPrincipalFieldsSet.hCell, lpwp->wpKasPrincipalFieldsSet.hServer, &Identity,
1617 (unsigned int *)&timeExpires,
1618 (unsigned int *)&lpwp->wpKasPrincipalFieldsSet.csecTicketLifetime,
1619 (unsigned int *)&lpwp->wpKasPrincipalFieldsSet.cdayPwExpires,
1621 (unsigned int *)&lpwp->wpKasPrincipalFieldsSet.nFailureAttempts,
1622 (unsigned int *)&lpwp->wpKasPrincipalFieldsSet.csecFailedLoginLockTime,
1630 case wtaskPtsGroupMemberAdd:
1632 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupMemberAdd.pszGroup);
1633 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsGroupMemberAdd.pszUser);
1635 if ((*lpPtsGroupMemberAdd)(lpwp->wpPtsGroupMemberAdd.hCell, pszUserA, pszGroupA, &status))
1638 FreeString (pszGroupA, lpwp->wpPtsGroupMemberAdd.pszGroup);
1639 FreeString (pszUserA, lpwp->wpPtsGroupMemberAdd.pszUser);
1643 case wtaskPtsGroupOwnerChange:
1645 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupOwnerChange.pszGroup);
1646 LPSTR pszOwnerA = StringToAnsi (lpwp->wpPtsGroupOwnerChange.pszOwner);
1648 if ((*lpPtsGroupOwnerChange)(lpwp->wpPtsGroupOwnerChange.hCell, pszGroupA, pszOwnerA, &status))
1651 FreeString (pszOwnerA, lpwp->wpPtsGroupOwnerChange.pszOwner);
1652 FreeString (pszGroupA, lpwp->wpPtsGroupOwnerChange.pszGroup);
1656 case wtaskPtsGroupCreate:
1658 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupCreate.pszGroup);
1659 LPSTR pszOwnerA = StringToAnsi (lpwp->wpPtsGroupCreate.pszOwner);
1661 if ((*lpPtsGroupCreate)(lpwp->wpPtsGroupCreate.hCell, pszGroupA, pszOwnerA, &lpwp->wpPtsGroupCreate.idGroup, &status))
1664 FreeString (pszOwnerA, lpwp->wpPtsGroupCreate.pszOwner);
1665 FreeString (pszGroupA, lpwp->wpPtsGroupCreate.pszGroup);
1669 case wtaskPtsGroupGet:
1671 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupGet.pszGroup);
1673 if ((*lpPtsGroupGet)(lpwp->wpPtsGroupGet.hCell, pszGroupA, &lpwp->wpPtsGroupGet.Entry, &status))
1676 FreeString (pszGroupA, lpwp->wpPtsGroupGet.pszGroup);
1680 case wtaskPtsGroupDelete:
1682 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupDelete.pszGroup);
1684 if ((*lpPtsGroupDelete)(lpwp->wpPtsGroupDelete.hCell, pszGroupA, &status))
1687 FreeString (pszGroupA, lpwp->wpPtsGroupDelete.pszGroup);
1691 case wtaskPtsGroupMaxGet:
1693 if ((*lpPtsGroupMaxGet)(lpwp->wpPtsGroupMaxGet.hCell, &lpwp->wpPtsGroupMaxGet.idGroupMax, &status))
1698 case wtaskPtsGroupMaxSet:
1700 if ((*lpPtsGroupMaxSet)(lpwp->wpPtsGroupMaxSet.hCell, lpwp->wpPtsGroupMaxSet.idGroupMax, &status))
1705 case wtaskPtsGroupMemberListBegin:
1707 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupMemberListBegin.pszGroup);
1709 if ((*lpPtsGroupMemberListBegin)(lpwp->wpPtsGroupMemberListBegin.hCell, pszGroupA, &lpwp->wpPtsGroupMemberListBegin.hEnum, &status))
1712 FreeString (pszGroupA, lpwp->wpPtsGroupMemberListBegin.pszGroup);
1716 case wtaskPtsGroupMemberListNext:
1718 char szMemberA[ cchNAME ];
1719 if ((*lpPtsGroupMemberListNext)(lpwp->wpPtsGroupMemberListNext.hEnum, szMemberA, &status))
1721 CopyAnsiToString (lpwp->wpPtsGroupMemberListNext.pszMember, szMemberA);
1727 case wtaskPtsGroupMemberListDone:
1729 if ((*lpPtsGroupMemberListDone)(lpwp->wpPtsGroupMemberListDone.hEnum, &status))
1734 case wtaskPtsGroupMemberRemove:
1736 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupMemberRemove.pszGroup);
1737 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsGroupMemberRemove.pszUser);
1739 if ((*lpPtsGroupMemberRemove)(lpwp->wpPtsGroupMemberRemove.hCell, pszUserA, pszGroupA, &status))
1742 FreeString (pszUserA, lpwp->wpPtsGroupMemberRemove.pszUser);
1743 FreeString (pszGroupA, lpwp->wpPtsGroupMemberRemove.pszGroup);
1747 case wtaskPtsGroupRename:
1749 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupRename.pszGroup);
1750 LPSTR pszNewNameA = StringToAnsi (lpwp->wpPtsGroupRename.pszNewName);
1752 if ((*lpPtsGroupRename)(lpwp->wpPtsGroupRename.hCell, pszGroupA, pszNewNameA, &status))
1755 FreeString (pszNewNameA, lpwp->wpPtsGroupRename.pszNewName);
1756 FreeString (pszGroupA, lpwp->wpPtsGroupRename.pszGroup);
1760 case wtaskPtsGroupModify:
1762 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsGroupModify.pszGroup);
1764 if ((*lpPtsGroupModify)(lpwp->wpPtsGroupModify.hCell, pszGroupA, &lpwp->wpPtsGroupModify.Delta, &status))
1767 FreeString (pszGroupA, lpwp->wpPtsGroupModify.pszGroup);
1771 case wtaskPtsUserCreate:
1773 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserCreate.pszUser);
1775 if ((*lpPtsUserCreate)(lpwp->wpPtsUserCreate.hCell, pszUserA, &lpwp->wpPtsUserCreate.idUser, &status))
1778 FreeString (pszUserA, lpwp->wpPtsUserCreate.pszUser);
1782 case wtaskPtsUserDelete:
1784 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserDelete.pszUser);
1786 if ((*lpPtsUserDelete)(lpwp->wpPtsUserDelete.hCell, pszUserA, &status))
1789 FreeString (pszUserA, lpwp->wpPtsUserDelete.pszUser);
1793 case wtaskPtsUserGet:
1795 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserGet.pszUser);
1797 if ((*lpPtsUserGet)(lpwp->wpPtsUserGet.hCell, pszUserA, &lpwp->wpPtsUserGet.Entry, &status))
1800 FreeString (pszUserA, lpwp->wpPtsUserGet.pszUser);
1804 case wtaskPtsUserRename:
1806 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserRename.pszUser);
1807 LPSTR pszNewNameA = StringToAnsi (lpwp->wpPtsUserRename.pszNewName);
1809 if ((*lpPtsUserRename)(lpwp->wpPtsUserRename.hCell, pszUserA, pszNewNameA, &status))
1812 FreeString (pszNewNameA, lpwp->wpPtsUserRename.pszNewName);
1813 FreeString (pszUserA, lpwp->wpPtsUserRename.pszUser);
1817 case wtaskPtsUserModify:
1819 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserModify.pszUser);
1821 if ((*lpPtsUserModify)(lpwp->wpPtsUserModify.hCell, pszUserA, &lpwp->wpPtsUserModify.Delta, &status))
1824 FreeString (pszUserA, lpwp->wpPtsUserModify.pszUser);
1828 case wtaskPtsUserMaxGet:
1830 if ((*lpPtsUserMaxGet)(lpwp->wpPtsUserMaxGet.hCell, &lpwp->wpPtsUserMaxGet.idUserMax, &status))
1835 case wtaskPtsUserMaxSet:
1837 if ((*lpPtsUserMaxSet)(lpwp->wpPtsUserMaxSet.hCell, lpwp->wpPtsUserMaxSet.idUserMax, &status))
1842 case wtaskPtsUserMemberListBegin:
1844 LPSTR pszUserA = StringToAnsi (lpwp->wpPtsUserMemberListBegin.pszUser);
1846 if ((*lpPtsUserMemberListBegin)(lpwp->wpPtsUserMemberListBegin.hCell, pszUserA, &lpwp->wpPtsUserMemberListBegin.hEnum, &status))
1849 FreeString (pszUserA, lpwp->wpPtsUserMemberListBegin.pszUser);
1853 case wtaskPtsUserMemberListNext:
1855 char szGroupA[ cchNAME ];
1856 if ((*lpPtsUserMemberListNext)(lpwp->wpPtsUserMemberListNext.hEnum, szGroupA, &status))
1858 CopyAnsiToString (lpwp->wpPtsUserMemberListNext.pszGroup, szGroupA);
1864 case wtaskPtsUserMemberListDone:
1866 if ((*lpPtsUserMemberListDone)(lpwp->wpPtsUserMemberListDone.hEnum, &status))
1871 case wtaskPtsOwnedGroupListBegin:
1873 LPSTR pszOwnerA = StringToAnsi (lpwp->wpPtsOwnedGroupListBegin.pszOwner);
1875 if ((*lpPtsOwnedGroupListBegin)(lpwp->wpPtsOwnedGroupListBegin.hCell, pszOwnerA, &lpwp->wpPtsOwnedGroupListBegin.hEnum, &status))
1878 FreeString (pszOwnerA, lpwp->wpPtsOwnedGroupListBegin.pszOwner);
1882 case wtaskPtsOwnedGroupListNext:
1884 LPSTR pszGroupA = StringToAnsi (lpwp->wpPtsOwnedGroupListNext.pszGroup);
1886 if ((*lpPtsOwnedGroupListNext)(lpwp->wpPtsOwnedGroupListNext.hEnum, pszGroupA, &status))
1889 FreeString (pszGroupA, lpwp->wpPtsOwnedGroupListNext.pszGroup);
1893 case wtaskPtsOwnedGroupListDone:
1895 if ((*lpPtsOwnedGroupListDone)(lpwp->wpPtsOwnedGroupListDone.hEnum, &status))
1900 case wtaskClientTokenGetExisting:
1902 LPTSTR pszCellA = StringToAnsi (lpwp->wpClientTokenGetExisting.pszCell);
1904 if ((*lpClientTokenGetExisting)(pszCellA, &lpwp->wpClientTokenGetExisting.hCreds, &status))
1907 FreeString (pszCellA, lpwp->wpClientTokenGetExisting.pszCell);
1911 case wtaskClientCellOpen:
1913 LPTSTR pszCellA = StringToAnsi (lpwp->wpClientCellOpen.pszCell);
1915 if ((*lpClientCellOpen)(pszCellA, lpwp->wpClientCellOpen.hCreds, &lpwp->wpClientCellOpen.hCell, &status))
1918 FreeString (pszCellA, lpwp->wpClientCellOpen.pszCell);
1922 case wtaskClientCellClose:
1924 if ((*lpClientCellClose)(lpwp->wpClientCellClose.hCell, &status))
1929 case wtaskClientLocalCellGet:
1931 char szCellA[ cchNAME ];
1932 if ((*lpClientLocalCellGet)(szCellA, &status))
1935 CopyAnsiToString (lpwp->wpClientLocalCellGet.pszCell, szCellA);
1940 case wtaskClientAFSServerGet:
1942 LPTSTR pszServerA = StringToAnsi (lpwp->wpClientAFSServerGet.pszServer);
1944 if ((*lpClientAFSServerGet)(lpwp->wpClientAFSServerGet.hCell, pszServerA, &lpwp->wpClientAFSServerGet.Entry, &status))
1947 FreeString (pszServerA, lpwp->wpClientAFSServerGet.pszServer);
1951 case wtaskClientAFSServerGetBegin:
1953 if ((*lpClientAFSServerGetBegin)(lpwp->wpClientAFSServerGetBegin.hCell, &lpwp->wpClientAFSServerGetBegin.hEnum, &status))
1958 case wtaskClientAFSServerGetNext:
1960 if ((*lpClientAFSServerGetNext)(lpwp->wpClientAFSServerGetNext.hEnum, &lpwp->wpClientAFSServerGetNext.Entry, &status))
1965 case wtaskClientAFSServerGetDone:
1967 if ((*lpClientAFSServerGetDone)(lpwp->wpClientAFSServerGetDone.hEnum, &status))
1972 case wtaskUtilDatabaseServerGetBegin:
1974 LPSTR pszCellA = StringToAnsi (lpwp->wpUtilDatabaseServerGetBegin.pszCell);
1976 if ((*lpUtilDatabaseServerGetBegin)(pszCellA, &lpwp->wpUtilDatabaseServerGetBegin.hEnum, &status))
1979 FreeString (pszCellA, lpwp->wpUtilDatabaseServerGetBegin.pszCell);
1983 case wtaskUtilDatabaseServerGetNext:
1986 if ((*lpUtilDatabaseServerGetNext)(lpwp->wpUtilDatabaseServerGetNext.hEnum, &Address, &status))
1988 AfsClass_IntToAddress (&lpwp->wpUtilDatabaseServerGetNext.Address, Address);
1994 case wtaskUtilDatabaseServerGetDone:
1996 if ((*lpUtilDatabaseServerGetDone)(lpwp->wpUtilDatabaseServerGetDone.hEnum, &status))
2004 return (DWORD)status;
2008 BOOL Worker_LoadLibraries (ULONG *pStatus)
2010 if ((hiVOS = LoadLibrary (cszAFSVOSDLL)) == NULL)
2013 *pStatus = GetLastError();
2016 if ((hiBOS = LoadLibrary (cszAFSBOSDLL)) == NULL)
2019 *pStatus = GetLastError();
2022 if ((hiKAS = LoadLibrary (cszAFSKASDLL)) == NULL)
2025 *pStatus = GetLastError();
2028 if ((hiPTS = LoadLibrary (cszAFSPTSDLL)) == NULL)
2031 *pStatus = GetLastError();
2034 if ((hiUtil = LoadLibrary (cszAFSUTILDLL)) == NULL)
2037 *pStatus = GetLastError();
2040 if ((hiClient = LoadLibrary (cszAFSCLIENTDLL)) == NULL)
2043 *pStatus = GetLastError();
2047 lpVosBackupVolumeCreate = (lpVosBackupVolumeCreate_t)GetProcAddress (hiVOS, "vos_BackupVolumeCreate");
2048 lpVosBackupVolumeCreateMultiple = (lpVosBackupVolumeCreateMultiple_t)GetProcAddress (hiVOS, "vos_BackupVolumeCreateMultiple");
2049 lpVosPartitionGet = (lpVosPartitionGet_t)GetProcAddress (hiVOS, "vos_PartitionGet");
2050 lpVosPartitionGetBegin = (lpVosPartitionGetBegin_t)GetProcAddress (hiVOS, "vos_PartitionGetBegin");
2051 lpVosPartitionGetNext = (lpVosPartitionGetNext_t)GetProcAddress (hiVOS, "vos_PartitionGetNext");
2052 lpVosPartitionGetDone = (lpVosPartitionGetDone_t)GetProcAddress (hiVOS, "vos_PartitionGetDone");
2053 lpVosServerOpen = (lpVosServerOpen_t)GetProcAddress (hiVOS, "vos_ServerOpen");
2054 lpVosServerClose = (lpVosServerClose_t)GetProcAddress (hiVOS, "vos_ServerClose");
2055 lpVosServerSync = (lpVosServerSync_t)GetProcAddress (hiVOS, "vos_ServerSync");
2056 lpVosFileServerAddressChange = (lpVosFileServerAddressChange_t)GetProcAddress (hiVOS, "vos_FileServerAddressChange");
2057 lpVosFileServerAddressRemove = (lpVosFileServerAddressRemove_t)GetProcAddress (hiVOS, "vos_FileServerAddressRemove");
2058 lpVosFileServerGetBegin = (lpVosFileServerGetBegin_t)GetProcAddress (hiVOS, "vos_FileServerGetBegin");
2059 lpVosFileServerGetNext = (lpVosFileServerGetNext_t)GetProcAddress (hiVOS, "vos_FileServerGetNext");
2060 lpVosFileServerGetDone = (lpVosFileServerGetDone_t)GetProcAddress (hiVOS, "vos_FileServerGetDone");
2061 lpVosServerTransactionStatusGetBegin = (lpVosServerTransactionStatusGetBegin_t)GetProcAddress (hiVOS, "vos_ServerTransactionStatusGetBegin");
2062 lpVosServerTransactionStatusGetNext = (lpVosServerTransactionStatusGetNext_t)GetProcAddress (hiVOS, "vos_ServerTransactionStatusGetNext");
2063 lpVosServerTransactionStatusGetDone = (lpVosServerTransactionStatusGetDone_t)GetProcAddress (hiVOS, "vos_ServerTransactionStatusGetDone");
2064 lpVosVLDBGet = (lpVosVLDBGet_t)GetProcAddress (hiVOS, "vos_VLDBGet");
2065 lpVosVLDBGetBegin = (lpVosVLDBGetBegin_t)GetProcAddress (hiVOS, "vos_VLDBGetBegin");
2066 lpVosVLDBGetNext = (lpVosVLDBGetNext_t)GetProcAddress (hiVOS, "vos_VLDBGetNext");
2067 lpVosVLDBGetDone = (lpVosVLDBGetDone_t)GetProcAddress (hiVOS, "vos_VLDBGetDone");
2068 lpVosVLDBEntryRemove = (lpVosVLDBEntryRemove_t)GetProcAddress (hiVOS, "vos_VLDBEntryRemove");
2069 lpVosVLDBUnlock = (lpVosVLDBUnlock_t)GetProcAddress (hiVOS, "vos_VLDBUnlock");
2070 lpVosVLDBEntryLock = (lpVosVLDBEntryLock_t)GetProcAddress (hiVOS, "vos_VLDBEntryLock");
2071 lpVosVLDBEntryUnlock = (lpVosVLDBEntryUnlock_t)GetProcAddress (hiVOS, "vos_VLDBEntryUnlock");
2072 lpVosVLDBReadOnlySiteCreate = (lpVosVLDBReadOnlySiteCreate_t)GetProcAddress (hiVOS, "vos_VLDBReadOnlySiteCreate");
2073 lpVosVLDBReadOnlySiteDelete = (lpVosVLDBReadOnlySiteDelete_t)GetProcAddress (hiVOS, "vos_VLDBReadOnlySiteDelete");
2074 lpVosVLDBSync = (lpVosVLDBSync_t)GetProcAddress (hiVOS, "vos_VLDBSync");
2075 lpVosVolumeCreate = (lpVosVolumeCreate_t)GetProcAddress (hiVOS, "vos_VolumeCreate");
2076 lpVosVolumeDelete = (lpVosVolumeDelete_t)GetProcAddress (hiVOS, "vos_VolumeDelete");
2077 lpVosVolumeRename = (lpVosVolumeRename_t)GetProcAddress (hiVOS, "vos_VolumeRename");
2078 lpVosVolumeDump = (lpVosVolumeDump_t)GetProcAddress (hiVOS, "vos_VolumeDump");
2079 lpVosVolumeRestore = (lpVosVolumeRestore_t)GetProcAddress (hiVOS, "vos_VolumeRestore");
2080 lpVosVolumeOnline = (lpVosVolumeOnline_t)GetProcAddress (hiVOS, "vos_VolumeOnline");
2081 lpVosVolumeOffline = (lpVosVolumeOffline_t)GetProcAddress (hiVOS, "vos_VolumeOffline");
2082 lpVosVolumeGet = (lpVosVolumeGet_t)GetProcAddress (hiVOS, "vos_VolumeGet");
2083 lpVosVolumeGetBegin = (lpVosVolumeGetBegin_t)GetProcAddress (hiVOS, "vos_VolumeGetBegin");
2084 lpVosVolumeGetNext = (lpVosVolumeGetNext_t)GetProcAddress (hiVOS, "vos_VolumeGetNext");
2085 lpVosVolumeGetDone = (lpVosVolumeGetDone_t)GetProcAddress (hiVOS, "vos_VolumeGetDone");
2086 lpVosVolumeMove = (lpVosVolumeMove_t)GetProcAddress (hiVOS, "vos_VolumeMove");
2087 lpVosVolumeRelease = (lpVosVolumeRelease_t)GetProcAddress (hiVOS, "vos_VolumeRelease");
2088 lpVosVolumeZap = (lpVosVolumeZap_t)GetProcAddress (hiVOS, "vos_VolumeZap");
2089 lpVosPartitionNameToId = (lpVosPartitionNameToId_t)GetProcAddress (hiVOS, "vos_PartitionNameToId");
2090 lpVosPartitionIdToName = (lpVosPartitionIdToName_t)GetProcAddress (hiVOS, "vos_PartitionIdToName");
2091 lpVosVolumeQuotaChange = (lpVosVolumeQuotaChange_t)GetProcAddress (hiVOS, "vos_VolumeQuotaChange");
2093 lpBosServerOpen = (lpBosServerOpen_t)GetProcAddress (hiBOS, "bos_ServerOpen");
2094 lpBosServerClose = (lpBosServerClose_t)GetProcAddress (hiBOS, "bos_ServerClose");
2095 lpBosProcessCreate = (lpBosProcessCreate_t)GetProcAddress (hiBOS, "bos_ProcessCreate");
2096 lpBosProcessDelete = (lpBosProcessDelete_t)GetProcAddress (hiBOS, "bos_ProcessDelete");
2097 lpBosProcessExecutionStateGet = (lpBosProcessExecutionStateGet_t)GetProcAddress (hiBOS, "bos_ProcessExecutionStateGet");
2098 lpBosProcessExecutionStateSet = (lpBosProcessExecutionStateSet_t)GetProcAddress (hiBOS, "bos_ProcessExecutionStateSet");
2099 lpBosProcessExecutionStateSetTemporary = (lpBosProcessExecutionStateSetTemporary_t)GetProcAddress (hiBOS, "bos_ProcessExecutionStateSetTemporary");
2100 lpBosProcessNameGetBegin = (lpBosProcessNameGetBegin_t)GetProcAddress (hiBOS, "bos_ProcessNameGetBegin");
2101 lpBosProcessNameGetDone = (lpBosProcessNameGetDone_t)GetProcAddress (hiBOS, "bos_ProcessNameGetDone");
2102 lpBosProcessNameGetNext = (lpBosProcessNameGetNext_t)GetProcAddress (hiBOS, "bos_ProcessNameGetNext");
2103 lpBosProcessInfoGet = (lpBosProcessInfoGet_t)GetProcAddress (hiBOS, "bos_ProcessInfoGet");
2104 lpBosProcessParameterGetBegin = (lpBosProcessParameterGetBegin_t)GetProcAddress (hiBOS, "bos_ProcessParameterGetBegin");
2105 lpBosProcessParameterGetDone = (lpBosProcessParameterGetDone_t)GetProcAddress (hiBOS, "bos_ProcessParameterGetDone");
2106 lpBosProcessParameterGetNext = (lpBosProcessParameterGetNext_t)GetProcAddress (hiBOS, "bos_ProcessParameterGetNext");
2107 lpBosProcessNotifierGet = (lpBosProcessNotifierGet_t)GetProcAddress (hiBOS, "bos_ProcessNotifierGet");
2108 lpBosProcessRestart = (lpBosProcessRestart_t)GetProcAddress (hiBOS, "bos_ProcessRestart");
2109 lpBosProcessAllStop = (lpBosProcessAllStop_t)GetProcAddress (hiBOS, "bos_ProcessAllStop");
2110 lpBosProcessAllStart = (lpBosProcessAllStart_t)GetProcAddress (hiBOS, "bos_ProcessAllStart");
2111 lpBosProcessAllWaitStop = (lpBosProcessAllWaitStop_t)GetProcAddress (hiBOS, "bos_ProcessAllWaitStop");
2112 lpBosProcessAllStopAndRestart = (lpBosProcessAllStopAndRestart_t)GetProcAddress (hiBOS, "bos_ProcessAllStopAndRestart");
2113 lpBosAdminCreate = (lpBosAdminCreate_t)GetProcAddress (hiBOS, "bos_AdminCreate");
2114 lpBosAdminDelete = (lpBosAdminDelete_t)GetProcAddress (hiBOS, "bos_AdminDelete");
2115 lpBosAdminGetBegin = (lpBosAdminGetBegin_t)GetProcAddress (hiBOS, "bos_AdminGetBegin");
2116 lpBosAdminGetDone = (lpBosAdminGetDone_t)GetProcAddress (hiBOS, "bos_AdminGetDone");
2117 lpBosAdminGetNext = (lpBosAdminGetNext_t)GetProcAddress (hiBOS, "bos_AdminGetNext");
2118 lpBosKeyCreate = (lpBosKeyCreate_t)GetProcAddress (hiBOS, "bos_KeyCreate");
2119 lpBosKeyDelete = (lpBosKeyDelete_t)GetProcAddress (hiBOS, "bos_KeyDelete");
2120 lpBosKeyGetBegin = (lpBosKeyGetBegin_t)GetProcAddress (hiBOS, "bos_KeyGetBegin");
2121 lpBosKeyGetDone = (lpBosKeyGetDone_t)GetProcAddress (hiBOS, "bos_KeyGetDone");
2122 lpBosKeyGetNext = (lpBosKeyGetNext_t)GetProcAddress (hiBOS, "bos_KeyGetNext");
2123 lpBosCellSet = (lpBosCellSet_t)GetProcAddress (hiBOS, "bos_CellSet");
2124 lpBosCellGet = (lpBosCellGet_t)GetProcAddress (hiBOS, "bos_CellGet");
2125 lpBosHostCreate = (lpBosHostCreate_t)GetProcAddress (hiBOS, "bos_HostCreate");
2126 lpBosHostDelete = (lpBosHostDelete_t)GetProcAddress (hiBOS, "bos_HostDelete");
2127 lpBosHostGetBegin = (lpBosHostGetBegin_t)GetProcAddress (hiBOS, "bos_HostGetBegin");
2128 lpBosHostGetDone = (lpBosHostGetDone_t)GetProcAddress (hiBOS, "bos_HostGetDone");
2129 lpBosHostGetNext = (lpBosHostGetNext_t)GetProcAddress (hiBOS, "bos_HostGetNext");
2130 lpBosExecutableCreate = (lpBosExecutableCreate_t)GetProcAddress (hiBOS, "bos_ExecutableCreate");
2131 lpBosExecutableRevert = (lpBosExecutableRevert_t)GetProcAddress (hiBOS, "bos_ExecutableRevert");
2132 lpBosExecutableTimestampGet = (lpBosExecutableTimestampGet_t)GetProcAddress (hiBOS, "bos_ExecutableTimestampGet");
2133 lpBosExecutablePrune = (lpBosExecutablePrune_t)GetProcAddress (hiBOS, "bos_ExecutablePrune");
2134 lpBosExecutableRestartTimeSet = (lpBosExecutableRestartTimeSet_t)GetProcAddress (hiBOS, "bos_ExecutableRestartTimeSet");
2135 lpBosExecutableRestartTimeGet = (lpBosExecutableRestartTimeGet_t)GetProcAddress (hiBOS, "bos_ExecutableRestartTimeGet");
2136 lpBosLogGet = (lpBosLogGet_t)GetProcAddress (hiBOS, "bos_LogGet");
2137 lpBosAuthSet = (lpBosAuthSet_t)GetProcAddress (hiBOS, "bos_AuthSet");
2138 lpBosCommandExecute = (lpBosCommandExecute_t)GetProcAddress (hiBOS, "bos_CommandExecute");
2139 lpBosSalvage = (lpBosSalvage_t)GetProcAddress (hiBOS, "bos_Salvage");
2141 lpKasServerOpen = (lpKasServerOpen_t)GetProcAddress (hiKAS, "kas_ServerOpen");
2142 lpKasServerClose = (lpKasServerClose_t)GetProcAddress (hiKAS, "kas_ServerClose");
2143 lpKasServerStatsGet = (lpKasServerStatsGet_t)GetProcAddress (hiKAS, "kas_ServerStatsGet");
2144 lpKasServerDebugGet = (lpKasServerDebugGet_t)GetProcAddress (hiKAS, "kas_ServerDebugGet");
2145 lpKasServerRandomKeyGet = (lpKasServerRandomKeyGet_t)GetProcAddress (hiKAS, "kas_ServerRandomKeyGet");
2146 lpKasStringToKey = (lpKasStringToKey_t)GetProcAddress (hiKAS, "kas_StringToKey");
2147 lpKasPrincipalCreate = (lpKasPrincipalCreate_t)GetProcAddress (hiKAS, "kas_PrincipalCreate");
2148 lpKasPrincipalDelete = (lpKasPrincipalDelete_t)GetProcAddress (hiKAS, "kas_PrincipalDelete");
2149 lpKasPrincipalGet = (lpKasPrincipalGet_t)GetProcAddress (hiKAS, "kas_PrincipalGet");
2150 lpKasPrincipalGetBegin = (lpKasPrincipalGetBegin_t)GetProcAddress (hiKAS, "kas_PrincipalGetBegin");
2151 lpKasPrincipalGetNext = (lpKasPrincipalGetNext_t)GetProcAddress (hiKAS, "kas_PrincipalGetNext");
2152 lpKasPrincipalGetDone = (lpKasPrincipalGetDone_t)GetProcAddress (hiKAS, "kas_PrincipalGetDone");
2153 lpKasPrincipalKeySet = (lpKasPrincipalKeySet_t)GetProcAddress (hiKAS, "kas_PrincipalKeySet");
2154 lpKasPrincipalLockStatusGet = (lpKasPrincipalLockStatusGet_t)GetProcAddress (hiKAS, "kas_PrincipalLockStatusGet");
2155 lpKasPrincipalUnlock = (lpKasPrincipalUnlock_t)GetProcAddress (hiKAS, "kas_PrincipalUnlock");
2156 lpKasPrincipalFieldsSet = (lpKasPrincipalFieldsSet_t)GetProcAddress (hiKAS, "kas_PrincipalFieldsSet");
2158 lpPtsGroupMemberAdd = (lpPtsGroupMemberAdd_t)GetProcAddress (hiPTS, "pts_GroupMemberAdd");
2159 lpPtsGroupOwnerChange = (lpPtsGroupOwnerChange_t)GetProcAddress (hiPTS, "pts_GroupOwnerChange");
2160 lpPtsGroupCreate = (lpPtsGroupCreate_t)GetProcAddress (hiPTS, "pts_GroupCreate");
2161 lpPtsGroupGet = (lpPtsGroupGet_t)GetProcAddress (hiPTS, "pts_GroupGet");
2162 lpPtsGroupDelete = (lpPtsGroupDelete_t)GetProcAddress (hiPTS, "pts_GroupDelete");
2163 lpPtsGroupMaxGet = (lpPtsGroupMaxGet_t)GetProcAddress (hiPTS, "pts_GroupMaxGet");
2164 lpPtsGroupMaxSet = (lpPtsGroupMaxSet_t)GetProcAddress (hiPTS, "pts_GroupMaxSet");
2165 lpPtsGroupMemberListBegin = (lpPtsGroupMemberListBegin_t)GetProcAddress (hiPTS, "pts_GroupMemberListBegin");
2166 lpPtsGroupMemberListNext = (lpPtsGroupMemberListNext_t)GetProcAddress (hiPTS, "pts_GroupMemberListNext");
2167 lpPtsGroupMemberListDone = (lpPtsGroupMemberListDone_t)GetProcAddress (hiPTS, "pts_GroupMemberListDone");
2168 lpPtsGroupMemberRemove = (lpPtsGroupMemberRemove_t)GetProcAddress (hiPTS, "pts_GroupMemberRemove");
2169 lpPtsGroupRename = (lpPtsGroupRename_t)GetProcAddress (hiPTS, "pts_GroupRename");
2170 lpPtsGroupModify = (lpPtsGroupModify_t)GetProcAddress (hiPTS, "pts_GroupModify");
2171 lpPtsUserCreate = (lpPtsUserCreate_t)GetProcAddress (hiPTS, "pts_UserCreate");
2172 lpPtsUserDelete = (lpPtsUserDelete_t)GetProcAddress (hiPTS, "pts_UserDelete");
2173 lpPtsUserGet = (lpPtsUserGet_t)GetProcAddress (hiPTS, "pts_UserGet");
2174 lpPtsUserRename = (lpPtsUserRename_t)GetProcAddress (hiPTS, "pts_UserRename");
2175 lpPtsUserModify = (lpPtsUserModify_t)GetProcAddress (hiPTS, "pts_UserModify");
2176 lpPtsUserMaxGet = (lpPtsUserMaxGet_t)GetProcAddress (hiPTS, "pts_UserMaxGet");
2177 lpPtsUserMaxSet = (lpPtsUserMaxSet_t)GetProcAddress (hiPTS, "pts_UserMaxSet");
2178 lpPtsUserMemberListBegin = (lpPtsUserMemberListBegin_t)GetProcAddress (hiPTS, "pts_UserMemberListBegin");
2179 lpPtsUserMemberListNext = (lpPtsUserMemberListNext_t)GetProcAddress (hiPTS, "pts_UserMemberListNext");
2180 lpPtsUserMemberListDone = (lpPtsUserMemberListDone_t)GetProcAddress (hiPTS, "pts_UserMemberListDone");
2181 lpPtsOwnedGroupListBegin = (lpPtsOwnedGroupListBegin_t)GetProcAddress (hiPTS, "pts_OwnedGroupListBegin");
2182 lpPtsOwnedGroupListNext = (lpPtsOwnedGroupListNext_t)GetProcAddress (hiPTS, "pts_OwnedGroupListNext");
2183 lpPtsOwnedGroupListDone = (lpPtsOwnedGroupListDone_t)GetProcAddress (hiPTS, "pts_OwnedGroupListDone");
2185 lpClientTokenGetExisting = (lpClientTokenGetExisting_t)GetProcAddress (hiClient, "afsclient_TokenGetExisting");
2186 lpClientCellOpen = (lpClientCellOpen_t)GetProcAddress (hiClient, "afsclient_CellOpen");
2187 lpClientCellClose = (lpClientCellClose_t)GetProcAddress (hiClient, "afsclient_CellClose");
2188 lpClientLocalCellGet = (lpClientLocalCellGet_t)GetProcAddress (hiClient, "afsclient_LocalCellGet");
2189 lpClientAFSServerGet = (lpClientAFSServerGet_t)GetProcAddress (hiClient, "afsclient_AFSServerGet");
2190 lpClientAFSServerGetBegin = (lpClientAFSServerGetBegin_t)GetProcAddress (hiClient, "afsclient_AFSServerGetBegin");
2191 lpClientAFSServerGetNext = (lpClientAFSServerGetNext_t)GetProcAddress (hiClient, "afsclient_AFSServerGetNext");
2192 lpClientAFSServerGetDone = (lpClientAFSServerGetDone_t)GetProcAddress (hiClient, "afsclient_AFSServerGetDone");
2193 lpClientInit = (lpClientInit_t)GetProcAddress (hiClient, "afsclient_Init");
2195 lpUtilDatabaseServerGetBegin = (lpUtilDatabaseServerGetBegin_t)GetProcAddress (hiUtil, "util_DatabaseServerGetBegin");
2196 lpUtilDatabaseServerGetNext = (lpUtilDatabaseServerGetNext_t)GetProcAddress (hiUtil, "util_DatabaseServerGetNext");
2197 lpUtilDatabaseServerGetDone = (lpUtilDatabaseServerGetDone_t)GetProcAddress (hiUtil, "util_DatabaseServerGetDone");
2201 if ( (lpVosBackupVolumeCreate == NULL) ||
2202 (lpVosBackupVolumeCreateMultiple == NULL) ||
2203 (lpVosPartitionGet == NULL) ||
2204 (lpVosPartitionGetBegin == NULL) ||
2205 (lpVosPartitionGetNext == NULL) ||
2206 (lpVosPartitionGetDone == NULL) ||
2207 (lpVosServerOpen == NULL) ||
2208 (lpVosServerClose == NULL) ||
2209 (lpVosServerSync == NULL) ||
2210 (lpVosFileServerAddressChange == NULL) ||
2211 (lpVosFileServerAddressRemove == NULL) ||
2212 (lpVosFileServerGetBegin == NULL) ||
2213 (lpVosFileServerGetNext == NULL) ||
2214 (lpVosFileServerGetDone == NULL) ||
2215 (lpVosServerTransactionStatusGetBegin == NULL) ||
2216 (lpVosServerTransactionStatusGetNext == NULL) ||
2217 (lpVosServerTransactionStatusGetDone == NULL) ||
2218 (lpVosVLDBGet == NULL) ||
2219 (lpVosVLDBGetBegin == NULL) ||
2220 (lpVosVLDBGetNext == NULL) ||
2221 (lpVosVLDBGetDone == NULL) ||
2222 (lpVosVLDBEntryRemove == NULL) ||
2223 (lpVosVLDBUnlock == NULL) ||
2224 (lpVosVLDBEntryLock == NULL) ||
2225 (lpVosVLDBEntryUnlock == NULL) ||
2226 (lpVosVLDBReadOnlySiteCreate == NULL) ||
2227 (lpVosVLDBReadOnlySiteDelete == NULL) ||
2228 (lpVosVLDBSync == NULL) ||
2229 (lpVosVolumeCreate == NULL) ||
2230 (lpVosVolumeDelete == NULL) ||
2231 (lpVosVolumeRename == NULL) ||
2232 (lpVosVolumeDump == NULL) ||
2233 (lpVosVolumeRestore == NULL) ||
2234 (lpVosVolumeOnline == NULL) ||
2235 (lpVosVolumeOffline == NULL) ||
2236 (lpVosVolumeGet == NULL) ||
2237 (lpVosVolumeGetBegin == NULL) ||
2238 (lpVosVolumeGetNext == NULL) ||
2239 (lpVosVolumeGetDone == NULL) ||
2240 (lpVosVolumeMove == NULL) ||
2241 (lpVosVolumeRelease == NULL) ||
2242 (lpVosVolumeZap == NULL) ||
2243 (lpVosPartitionNameToId == NULL) ||
2244 (lpVosPartitionIdToName == NULL) ||
2245 (lpVosVolumeQuotaChange == NULL) ||
2246 (lpBosServerOpen == NULL) ||
2247 (lpBosServerClose == NULL) ||
2248 (lpBosProcessCreate == NULL) ||
2249 (lpBosProcessDelete == NULL) ||
2250 (lpBosProcessExecutionStateGet == NULL) ||
2251 (lpBosProcessExecutionStateSet == NULL) ||
2252 (lpBosProcessExecutionStateSetTemporary == NULL) ||
2253 (lpBosProcessNameGetBegin == NULL) ||
2254 (lpBosProcessNameGetDone == NULL) ||
2255 (lpBosProcessNameGetNext == NULL) ||
2256 (lpBosProcessInfoGet == NULL) ||
2257 (lpBosProcessParameterGetBegin == NULL) ||
2258 (lpBosProcessParameterGetDone == NULL) ||
2259 (lpBosProcessParameterGetNext == NULL) ||
2260 (lpBosProcessNotifierGet == NULL) ||
2261 (lpBosProcessRestart == NULL) ||
2262 (lpBosProcessAllStop == NULL) ||
2263 (lpBosProcessAllStart == NULL) ||
2264 (lpBosProcessAllWaitStop == NULL) ||
2265 (lpBosProcessAllStopAndRestart == NULL) ||
2266 (lpBosAdminCreate == NULL) ||
2267 (lpBosAdminDelete == NULL) ||
2268 (lpBosAdminGetBegin == NULL) ||
2269 (lpBosAdminGetDone == NULL) ||
2270 (lpBosAdminGetNext == NULL) ||
2271 (lpBosKeyCreate == NULL) ||
2272 (lpBosKeyDelete == NULL) ||
2273 (lpBosKeyGetBegin == NULL) ||
2274 (lpBosKeyGetDone == NULL) ||
2275 (lpBosKeyGetNext == NULL) ||
2276 (lpBosCellSet == NULL) ||
2277 (lpBosCellGet == NULL) ||
2278 (lpBosHostCreate == NULL) ||
2279 (lpBosHostDelete == NULL) ||
2280 (lpBosHostGetBegin == NULL) ||
2281 (lpBosHostGetDone == NULL) ||
2282 (lpBosHostGetNext == NULL) ||
2283 (lpBosExecutableCreate == NULL) ||
2284 (lpBosExecutableRevert == NULL) ||
2285 (lpBosExecutableTimestampGet == NULL) ||
2286 (lpBosExecutablePrune == NULL) ||
2287 (lpBosExecutableRestartTimeSet == NULL) ||
2288 (lpBosExecutableRestartTimeGet == NULL) ||
2289 (lpBosLogGet == NULL) ||
2290 (lpBosAuthSet == NULL) ||
2291 (lpBosCommandExecute == NULL) ||
2292 (lpBosSalvage == NULL) ||
2293 (lpKasServerOpen == NULL) ||
2294 (lpKasServerClose == NULL) ||
2295 (lpKasServerStatsGet == NULL) ||
2296 (lpKasServerDebugGet == NULL) ||
2297 (lpKasServerRandomKeyGet == NULL) ||
2298 (lpKasStringToKey == NULL) ||
2299 (lpKasPrincipalCreate == NULL) ||
2300 (lpKasPrincipalDelete == NULL) ||
2301 (lpKasPrincipalGet == NULL) ||
2302 (lpKasPrincipalGetBegin == NULL) ||
2303 (lpKasPrincipalGetNext == NULL) ||
2304 (lpKasPrincipalGetDone == NULL) ||
2305 (lpKasPrincipalKeySet == NULL) ||
2306 (lpKasPrincipalLockStatusGet == NULL) ||
2307 (lpKasPrincipalUnlock == NULL) ||
2308 (lpKasPrincipalFieldsSet == NULL) ||
2309 (lpPtsGroupMemberAdd == NULL) ||
2310 (lpPtsGroupOwnerChange == NULL) ||
2311 (lpPtsGroupCreate == NULL) ||
2312 (lpPtsGroupGet == NULL) ||
2313 (lpPtsGroupDelete == NULL) ||
2314 (lpPtsGroupMaxGet == NULL) ||
2315 (lpPtsGroupMaxSet == NULL) ||
2316 (lpPtsGroupMemberListBegin == NULL) ||
2317 (lpPtsGroupMemberListNext == NULL) ||
2318 (lpPtsGroupMemberListDone == NULL) ||
2319 (lpPtsGroupMemberRemove == NULL) ||
2320 (lpPtsGroupRename == NULL) ||
2321 (lpPtsGroupModify == NULL) ||
2322 (lpPtsUserCreate == NULL) ||
2323 (lpPtsUserDelete == NULL) ||
2324 (lpPtsUserGet == NULL) ||
2325 (lpPtsUserRename == NULL) ||
2326 (lpPtsUserModify == NULL) ||
2327 (lpPtsUserMaxGet == NULL) ||
2328 (lpPtsUserMaxSet == NULL) ||
2329 (lpPtsUserMemberListBegin == NULL) ||
2330 (lpPtsUserMemberListNext == NULL) ||
2331 (lpPtsUserMemberListDone == NULL) ||
2332 (lpPtsOwnedGroupListBegin == NULL) ||
2333 (lpPtsOwnedGroupListNext == NULL) ||
2334 (lpPtsOwnedGroupListDone == NULL) ||
2335 (lpClientTokenGetExisting == NULL) ||
2336 (lpClientCellOpen == NULL) ||
2337 (lpClientCellClose == NULL) ||
2338 (lpClientLocalCellGet == NULL) ||
2339 (lpClientInit == NULL) ||
2340 (lpClientAFSServerGet == NULL) ||
2341 (lpClientAFSServerGetBegin == NULL) ||
2342 (lpClientAFSServerGetNext == NULL) ||
2343 (lpClientAFSServerGetDone == NULL) ||
2344 (lpUtilDatabaseServerGetBegin == NULL) ||
2345 (lpUtilDatabaseServerGetNext == NULL) ||
2346 (lpUtilDatabaseServerGetDone == NULL) ||
2351 *pStatus = ERROR_DLL_INIT_FAILED;
2355 // Initialize the client library
2357 afs_status_t status;
2358 if (!(*lpClientInit)(&status))
2361 *pStatus = (ULONG)status;
2369 void Worker_FreeLibraries (void)
2373 FreeLibrary (hiVOS);
2378 FreeLibrary (hiBOS);
2383 FreeLibrary (hiKAS);
2388 FreeLibrary (hiPTS);
2393 FreeLibrary (hiUtil);
2396 if (hiClient != NULL)
2398 FreeLibrary (hiClient);