home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Backup / Backup.zip / bacrest.zip / PSNSAPI.H < prev    next >
Text File  |  1999-10-05  |  32KB  |  689 lines

  1. /* ═══════════════════════════════ Module Header ══════════════════════════════ */
  2. /*    Name:                  PSnSApi.H                                          */
  3. /*    Description:                                                              */
  4. /*    Part version:          1.0                                                */
  5. /*    Used in PSnS version:  5.1                                                */
  6. /*    Last update:           29/Aug/1997                                        */
  7. /*    Author:                James Austin                                       */
  8. /*    Owner:                 Michael Fabianski                                  */
  9. /* ──────────────────────────────────────────────────────────────────────────── */
  10. /*  OCO SOURCE MATERIALS                                                        */
  11. /*  IBM CONFIDENTIAL                                                            */
  12. /*  5622─884                                                                    */
  13. /*  Copyright (c) International Business Machines Corporation 1995, 1997        */
  14. /*                        All Rights Reserved                                   */
  15. /* ──────────────────────────────────────────────────────────────────────────── */
  16. /*    Change history:                                                           */
  17. /*          29/Aug/97  JA  Initial version created                              */
  18. /*          22/Dec/97  MF  Increase buffer size to 256                          */
  19. /*          05/Mar/98  MF  Add support for removable drive source drive type    */
  20. /*          12/Sep/98  MF  Add macros to convert ULONG64 to/from                */
  21. /*                          unsigned long long                                  */
  22. /* ──────────────────────────────────────────────────────────────────────────── */
  23. /*  Description: PSnS API header file                                           */
  24. /* ──────────────────────────────────────────────────────────────────────────── */
  25. /*  Dependencies:                                                               */
  26. /* ════════════════════════════════════════════════════════════════════════════ */
  27. #ifndef _PSNSAPI_H_
  28. #define _PSNSAPI_H_
  29.  
  30. #include <os2def.h>
  31. #include <bsedos.h>
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. /*___________________________________________________________________________*/
  38. /*..................................................................... sizes*/
  39. #define PSNS_NAME_SIZE         31
  40. #define PSNS_VOLUME_NAME_SIZE  256                                       
  41. #define PSNS_DESCRIPTION_SIZE  127
  42. #define PSNS_DEVICE_NAME       63
  43.  
  44. /*___________________________________________________________________________*/
  45. /*................................................................ PsnsHandle*/
  46. typedef unsigned long PSNSHANDLE;
  47.  
  48. /*___________________________________________________________________________*/
  49. /*................................................................... ULONG64*/
  50. typedef struct _ULONG64 {
  51.    unsigned long high, low;
  52. } ULONG64, *PULONG64;
  53.  
  54. /*___________________________________________________________________________*/
  55. /*.................................... convert ULONG64 to unsigned long long */
  56. #define UL64TOULL(ul64) \
  57.    ((((unsigned long long)(ul64).high)<<32)|((ul64).low))
  58.  
  59. /*___________________________________________________________________________*/
  60. /*.................................... convert unsigned long long to ULONG64 */
  61. #define UL64FROMULL(ul64, ull) \
  62.    (ul64).high = (ull)>>32, (ul64).low = (ull)
  63.  
  64. /*___________________________________________________________________________*/
  65. /*.................................................. examples of macro usage */
  66. /* #include "stdio.h"                                                        */
  67. /* #include <psnsapi.h>                                                      */
  68. /*                                                                           */
  69. /* void showvalues(ULONG64 ul64, unsigned long long ull)                     */
  70. /* {                                                                         */
  71. /*    printf("\nULONG64 representation = {0x%08x, 0x%08x};" \                */
  72. /*           "\nunsigned long long     = {0x%08x, 0x%08x} %llu\n",           */
  73. /*           ul64.high, ul64.low,                                            */
  74. /*           (unsigned long)(ull>>32), (unsigned long)ull, ull);             */
  75. /* }                                                                         */
  76. /*                                                                           */
  77. /* int main(int argc, char **argv)                                           */
  78. /* {                                                                         */
  79. /*    ULONG64 ul64 = {0xffffffff, 0x00000000};                               */
  80. /*    unsigned long long ull;                                                */
  81. /*                                                                           */
  82. /*    ull = UL64TOULL(ul64);                                                 */
  83. /*    showvalues(ul64, ull);                                                 */
  84. /*                                                                           */
  85. /*    UL64FROMULL(ul64, ull);                                                */
  86. /*    showvalues(ul64, ull);                                                 */
  87. /*                                                                           */
  88. /*    ull = 0x00000000ffffffff;                                              */
  89. /*                                                                           */
  90. /*    UL64FROMULL(ul64, ull);                                                */
  91. /*    showvalues(ul64, ull);                                                 */
  92. /*                                                                           */
  93. /*    ull = UL64TOULL(ul64);                                                 */
  94. /*    showvalues(ul64, ull);                                                 */
  95. /*                                                                           */
  96. /*    return 0;                                                              */
  97. /* }                                                                         */
  98. /*___________________________________________________________________________*/
  99.  
  100. /*___________________________________________________________________________*/
  101. /*....................................................... Files Folders Bytes*/
  102. typedef struct _PSNSFFB {
  103.    unsigned long files, folders;
  104.    ULONG64 bytes;
  105. } PSNSFFB, *PPSNSFFB;
  106.  
  107. /*___________________________________________________________________________*/
  108. /*................................................................. Estimates*/
  109. typedef struct _ESTIMATE {
  110.    PSNSFFB total;
  111.    unsigned long time;
  112. } ESTIMATE, *PESTIMATE;
  113.  
  114. /*___________________________________________________________________________*/
  115. /*................................................................. PsnsStats*/
  116. typedef struct _PSNSSTATS {
  117.    PSNSFFB total, processed, failed;
  118.    unsigned long timeRemaining, timeElapsed, timeEstimate;
  119.    unsigned long dataRate;
  120.    unsigned long averageDataRate;
  121.    ULONG64 spaceLeft;
  122. } PSNSSTATS, *PPSNSSTATS;
  123.  
  124. /*___________________________________________________________________________*/
  125. /*................................................................. HPsnsList*/
  126. typedef int HPSNSLIST, *PHPSNSLIST;
  127.  
  128. /*___________________________________________________________________________*/
  129. /*............................................................... PsnsStatsFn*/
  130. typedef void (*PSNSSTATSFN)(PPSNSSTATS pPsnsStats, char *message);
  131.  
  132. /*___________________________________________________________________________*/
  133. /*........................................................... PsnsCompression*/
  134. typedef enum {
  135.    PSNS_NOCOMPRESSION,
  136.    PSNS_COMPRESSION,
  137.    PSNS_DEFAULT
  138. } PSNSCOMPRESSION;
  139.  
  140. /*___________________________________________________________________________*/
  141. /*............................................................... Init & Term*/
  142. typedef enum {
  143.    PSNS_PIPE,
  144.    PSNS_TCPIP
  145. } PSNSCONNECTION;
  146.  
  147. typedef struct _PSNSPIPEINFO {
  148.    char serverName[CCHMAXPATH];
  149.    char pipeName[CCHMAXPATH];
  150. } PSNSPIPEINFO, *PPSNSPIPEINFO;
  151.  
  152. typedef struct _PSNSTCPIPINFO {
  153.    char hostName[CCHMAXPATH];
  154.    SHORT port;
  155. } PSNSTCPIPINFO, *PPSNSTCPIPINFO;
  156.  
  157. int APIENTRY PsnsInit(PSNSHANDLE *handle, PSNSCONNECTION psnsConnection, PVOID data);
  158. int APIENTRY PsnsTerm(PSNSHANDLE handle);
  159.  
  160. /*___________________________________________________________________________*/
  161. /*................................................... Backup Method Functions*/
  162. typedef struct _BACKUPMETHODINFO {
  163.    char name[PSNS_NAME_SIZE+1];
  164.    char description[PSNS_DESCRIPTION_SIZE+1];
  165.    BOOL allFiles;
  166.    char drive;
  167.    char directory[CCHMAXPATH];
  168.    BOOL subdirectories;
  169.    PSNSCOMPRESSION compression;
  170.    int generations;
  171.    BOOL useRulebook;
  172.    char rulebook[PSNS_NAME_SIZE+1];
  173.    BOOL useFileFilter;
  174.    char fileFilter[PSNS_NAME_SIZE+1];
  175.    BOOL changedFilesOnly;
  176.    BOOL preview;
  177.    char backupSet[PSNS_NAME_SIZE+1];
  178. } BACKUPMETHODINFO, *PBACKUPMETHODINFO;
  179.  
  180. #define BM_NONE                    0x00000000
  181. #define BM_NAME                    0x00000001
  182. #define BM_DESCRIPTION             0x00000002
  183. #define BM_ALLFILES                0x00000004
  184. #define BM_DRIVE                   0x00000008
  185. #define BM_DIRECTORY               0x00000010
  186. #define BM_SUBDIRECTORIES          0x00000020
  187. #define BM_COMPRESSION             0x00000040
  188. #define BM_GENERATIONS             0x00000080
  189. #define BM_USERULEBOOK             0x00000100
  190. #define BM_RULEBOOK                0x00000200
  191. #define BM_USEFILEFILTER           0x00000400
  192. #define BM_FILEFILTER              0x00000800
  193. #define BM_CHANGEDFILESONLY        0x00001000
  194. #define BM_PREVIEW                 0x00002000
  195. #define BM_BACKUPSET               0x00004000
  196. #define BM_ALL                     0x00007FFF
  197.  
  198. int APIENTRY PsnsCreateBackupMethod(PSNSHANDLE handle, const char *name);
  199. int APIENTRY PsnsDeleteBackupMethod(PSNSHANDLE handle, const char *name);
  200. int APIENTRY PsnsRenameBackupMethod(PSNSHANDLE handle, const char *name, const char *newName);
  201. int APIENTRY PsnsCopyBackupMethod(PSNSHANDLE handle, const char *name, const char *newName);
  202. int APIENTRY PsnsBackupMethodInfo(PSNSHANDLE handle, const char *name, PBACKUPMETHODINFO pBackupMethodInfo, long mask);
  203. int APIENTRY PsnsListBackupMethods(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PBACKUPMETHODINFO pBackupMethodInfo, long mask);
  204. int APIENTRY PsnsEstimateBackupMethod(PSNSHANDLE handle, const char *name, PESTIMATE pEstimate);
  205. int APIENTRY PsnsRunBackupMethod(PSNSHANDLE handle, const char *name, PSNSSTATSFN psnsStatsFn);
  206.  
  207. /*___________________________________________________________________________*/
  208. /*.................................................. Restore Method Functions*/
  209. typedef struct _RESTOREMETHODINFO {
  210.    char name[PSNS_NAME_SIZE+1];
  211.    char description[PSNS_DESCRIPTION_SIZE+1];
  212.    char backupSet[PSNS_NAME_SIZE+1];
  213.    BOOL allFiles;
  214.    char drive;
  215.    char directory[CCHMAXPATH];
  216.    char pattern[CCHMAXPATH];
  217.    BOOL subdirectories;
  218.    BOOL byDate;
  219.    FDATE date;
  220.    FTIME time;
  221.    BOOL preview;
  222.    BOOL prompt;
  223.    BOOL originalLocation;
  224.    char destinationDrive;
  225.    char destinationPath[CCHMAXPATH];
  226. } RESTOREMETHODINFO, *PRESTOREMETHODINFO;
  227.  
  228. #define RM_NONE                    0x00000000
  229. #define RM_NAME                    0x00000001
  230. #define RM_DESCRIPTION             0x00000002
  231. #define RM_BACKUPSET               0x00000004
  232. #define RM_ALLFILES                0x00000008
  233. #define RM_DRIVE                   0x00000010
  234. #define RM_DIRECTORY               0x00000020
  235. #define RM_PATTERN                 0x00000040
  236. #define RM_SUBDIRECTORIES          0x00000080
  237. #define RM_BYDATE                  0x00000100
  238. #define RM_DATE                    0x00000200
  239. #define RM_TIME                    0x00000400
  240. #define RM_PREVIEW                 0x00000800
  241. #define RM_PROMPT                  0x00001000
  242. #define RM_ORIGINALLOCATION        0x00002000
  243. #define RM_DESTINATIONDRIVE        0x00004000
  244. #define RM_DESTINATIONPATH         0x00008000
  245. #define RM_ALL                     0x0000FFFF
  246.  
  247. int APIENTRY PsnsCreateRestoreMethod(PSNSHANDLE handle, const char *name);
  248. int APIENTRY PsnsDeleteRestoreMethod(PSNSHANDLE handle, const char *name);
  249. int APIENTRY PsnsRenameRestoreMethod(PSNSHANDLE handle, const char *name, const char *newName);
  250. int APIENTRY PsnsCopyRestoreMethod(PSNSHANDLE handle, const char *name, const char *newName);
  251. int APIENTRY PsnsRestoreMethodInfo(PSNSHANDLE handle, const char *name, PRESTOREMETHODINFO pRestoreMethodInfo, long mask);
  252. int APIENTRY PsnsListRestoreMethods(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PRESTOREMETHODINFO pRestoreMethodInfo, long mask);
  253. int APIENTRY PsnsEstimateRestoreMethod(PSNSHANDLE handle, const char *name, PESTIMATE pEstimate);
  254. int APIENTRY PsnsRunRestoreMethod(PSNSHANDLE handle, const char *name, PSNSSTATSFN psnsStatsFn, BOOL base, BOOL incremental);
  255.  
  256. /*___________________________________________________________________________*/
  257. /*...................................................... Backup Set Functions*/
  258. typedef struct _BACKUPSETINFO {
  259.    char name[PSNS_NAME_SIZE+1];
  260.    char description[PSNS_DESCRIPTION_SIZE+1];
  261.    char storageDevice[PSNS_DEVICE_NAME+1];
  262.    char incStorageDevice[PSNS_DEVICE_NAME+1];
  263.    BOOL transferredIn;
  264. } BACKUPSETINFO, *PBACKUPSETINFO;
  265.  
  266. #define BS_NONE                    0x00000000
  267. #define BS_NAME                    0x00000001
  268. #define BS_DESCRIPTION             0x00000002
  269. #define BS_STORAGEDEVICE           0x00000004
  270. #define BS_INCSTORAGEDEVICE        0x00000008
  271. #define BS_TRANSFERREDIN           0x00000010
  272. #define BS_ALL                     0x000000FF
  273.  
  274. int APIENTRY PsnsCreateBackupSet(PSNSHANDLE handle, const char *name, const char *storageDevice, const char *config, const char *incStorageDevice, const char *incConfig);
  275. int APIENTRY PsnsDeleteBackupSet(PSNSHANDLE handle, const char *name);
  276. int APIENTRY PsnsBackupSetInfo(PSNSHANDLE handle, const char *name, PBACKUPSETINFO pBackupSetInfo, long mask);
  277. int APIENTRY PsnsSetBackupSetConfig(PSNSHANDLE handle, const char *name, const char *config, const char *incConfig);
  278. int APIENTRY PsnsGetBackupSetConfig(PSNSHANDLE handle, const char *name, char *config, ULONG *length, char *incConfig, ULONG *incLength);
  279. int APIENTRY PsnsListBackupSets(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PBACKUPSETINFO pBackupSetInfo, long mask);
  280. int APIENTRY PsnsTransferBackupSet(PSNSHANDLE handle, const char *name, BOOL action, BOOL base);
  281. int APIENTRY PsnsTransferIn(PSNSHANDLE handle, const char *storageDevice, const char *backupSet);
  282. int APIENTRY PsnsGetLogFile(PSNSHANDLE handle, const char *backupSet, char *buffer);
  283. int APIENTRY PsnsEmptyBackupSet(PSNSHANDLE handle, const char *name);
  284.  
  285. /*___________________________________________________________________________*/
  286. /*.................................................. Storage Device Functions*/
  287. typedef struct _STORAGEDEVICEINFO {
  288.    char name[PSNS_DEVICE_NAME+1];
  289.    char dllName[CCHMAXPATH];
  290. } STORAGEDEVICEINFO, *PSTORAGEDEVICEINFO;
  291.  
  292. #define SD_NONE                    0x00000000
  293. #define SD_NAME                    0x00000001
  294. #define SD_DLLNAME                 0x00000002
  295. #define SD_CREATABLE               0x00000004
  296. #define SD_ALL                     0x00000007
  297.  
  298. int APIENTRY PsnsCreateStorageDevice(PSNSHANDLE handle, const char *type, const char *config, char *name);
  299. int APIENTRY PsnsDeleteStorageDevice(PSNSHANDLE handle, const char *name);
  300. int APIENTRY PsnsStorageDeviceInfo(PSNSHANDLE handle, const char *name, PSTORAGEDEVICEINFO pStorageDevice, long mask);
  301. int APIENTRY PsnsSetStorageDeviceConfig(PSNSHANDLE handle, const char *name, const char *config);
  302. int APIENTRY PsnsGetStorageDeviceConfig(PSNSHANDLE handle, const char *name, char *config, ULONG *length);
  303. int APIENTRY PsnsListStorageDevices(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PSTORAGEDEVICEINFO pStorageDeviceInfo, long mask);
  304. int APIENTRY PsnsRefreshStorageDevices(PSNSHANDLE handle);
  305.  
  306. /*___________________________________________________________________________*/
  307. /*.......................................................... Volume Functions*/
  308. typedef struct _VOLUMEINFO {
  309.    ULONG id;
  310.    char name[PSNS_VOLUME_NAME_SIZE+1];
  311.    char storageDevice[PSNS_DEVICE_NAME+1];
  312.    BOOL transferredOut;
  313.    BOOL available;
  314.    char backupSets;
  315.    ULONG unitMultiplier;
  316.    ULONG totalCapacity;
  317.    ULONG psnsCapacity;
  318.    ULONG psnsUsed;
  319.    ULONG psnsFree;
  320.    ULONG otherFree;
  321.    ULONG otherUsed;
  322.    ULONG totalBad;
  323.    char backupSet[PSNS_NAME_SIZE+1];
  324.    LONG indexNo;
  325. } VOLUMEINFO, *PVOLUMEINFO;
  326.  
  327. typedef struct _BACKUPSETVOLUME {
  328.    ULONG id;
  329.    char backupSet[PSNS_NAME_SIZE+1];
  330.    ULONG spaceUsed;
  331. } BACKUPSETVOLUME, *PBACKUPSETVOLUME;
  332.  
  333. #define VOL_NONE                   0x00000000
  334. #define VOL_ID                     0x00000001
  335. #define VOL_NAME                   0x00000002
  336. #define VOL_STORAGEDEVICE          0x00000004
  337. #define VOL_TRANSFERREDOUT         0x00000008
  338. #define VOL_AVAILABLE              0x00000010
  339. #define VOL_BACKUPSETS             0x00000020
  340. #define VOL_TOTALCAPACITY_LESS     0x00000040
  341. #define VOL_TOTALCAPACITY_MORE     0x00000080
  342. #define VOL_PSNSCAPACITY_LESS      0x00000100
  343. #define VOL_PSNSCAPACITY_MORE      0x00000200
  344. #define VOL_PSNSUSED_LESS          0x00000400
  345. #define VOL_PSNSUSED_MORE          0x00000800
  346. #define VOL_PSNSFREE_LESS          0x00001000
  347. #define VOL_PSNSFREE_MORE          0x00002000
  348. #define VOL_OTHERFREE_LESS         0x00004000
  349. #define VOL_OTHERFREE_MORE         0x00008000
  350. #define VOL_OTHERUSED_LESS         0x00010000
  351. #define VOL_OTHERUSED_MORE         0x00020000
  352. #define VOL_TOTALBAD_LESS          0x00040000
  353. #define VOL_TOTALBAD_MORE          0x00080000
  354. #define VOL_BACKUPSET              0x00100000
  355. #define VOL_INDEXNO                0x00200000
  356. #define VOL_ALL                    0x003FFFFF
  357.  
  358. int APIENTRY PsnsCreateVolume(PSNSHANDLE handle, const char *storageDevice, ULONG *voluemID);
  359. int APIENTRY PsnsDeleteVolume(PSNSHANDLE handle, ULONG volumeID);
  360. int APIENTRY PsnsVolumeInfo(PSNSHANDLE handle, ULONG volumeID, PVOLUMEINFO pVolumeInfo, long mask);
  361. int APIENTRY PsnsListVolumeBackupSets(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, const char *storageDevice, PBACKUPSETVOLUME pBackupSetVolume);
  362. int APIENTRY PsnsListVolumes(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PVOLUMEINFO pVolumeInfo, long mask);
  363. int APIENTRY PsnsActivateVolume(PSNSHANDLE handle, ULONG volumeID, BOOL activate);
  364. int APIENTRY PsnsAssociateVolume(PSNSHANDLE handle, ULONG volumeID, const char *backupSet);
  365.  
  366. /*___________________________________________________________________________*/
  367. /*........................................................ Schedule Functions*/
  368. typedef enum {
  369.    EV_REGULAR  =1,
  370.    EV_DAILY    =2,
  371.    EV_STARTUP  =3,
  372.    EV_NAMEDDAYS=4,
  373.    EV_MONTHLY  =5
  374. } EVENTTYPE;
  375.  
  376. typedef enum {
  377.    EVENT_NO       =-1,
  378.    EVENT_AS_METHOD=0,
  379.    EVENT_YES      =+1
  380. } EVENTOPTION;
  381.  
  382. typedef struct _EVENTINFO {
  383.    USHORT id;
  384.    EVENTTYPE type;
  385.    char backupMethod[PSNS_NAME_SIZE+1];
  386.    union {
  387.       struct {
  388.          int hours, minutes;
  389.       } regular;
  390.       struct {
  391.          int hours, minutes;
  392.       } daily;
  393.       struct {
  394.          int day, hours, minutes;
  395.       } monthly;
  396.       struct {
  397.          int hours, minutes;
  398.          char days, weeks;
  399.       } namedDays;
  400.       struct {
  401.          int hours, minutes;
  402.       } startup;
  403.    } info;
  404.    EVENTOPTION changedFilesOnly;
  405.    EVENTOPTION showPreview;
  406.    BOOL active;
  407.    DATETIME lastRun;
  408.    DATETIME nextRun;
  409. } EVENTINFO, *PEVENTINFO;
  410.  
  411. #define EV_NONE                    0x00000000
  412. #define EV_ID                      0x00000001
  413. #define EV_TYPE                    0x00000002
  414. #define EV_BACKUPMETHOD            0x00000004
  415. #define EV_HOURS                   0x00000008
  416. #define EV_MINUTES                 0x00000010
  417. #define EV_DAY                     0x00000020
  418. #define EV_DAYS                    0x00000040
  419. #define EV_WEEKS                   0x00000080
  420. #define EV_TIMEMASK                0x000000F8
  421. #define EV_CHANGEDFILESONLY        0x00000100
  422. #define EV_SHOWPREVIEW             0x00000200
  423. #define EV_ACTIVE                  0x00000400
  424. #define EV_LASTRUN_BEFORE          0x00000800
  425. #define EV_LASTRUN_AFTER           0x00001000
  426. #define EV_NEXTRUN_BEFORE          0x00002000
  427. #define EV_NEXTRUN_AFTER           0x00004000
  428. #define EV_ALL                     0x00007FFF
  429.  
  430. int APIENTRY PsnsCreateEvent(PSNSHANDLE handle, EVENTTYPE type, const char *bkmethod, USHORT *eventID);
  431. int APIENTRY PsnsDeleteEvent(PSNSHANDLE handle, USHORT eventID);
  432. int APIENTRY PsnsCopyEvent(PSNSHANDLE handle, USHORT eventID, USHORT *newEventID);
  433. int APIENTRY PsnsEventInfo(PSNSHANDLE handle, USHORT eventID, PEVENTINFO pEventInfo, long mask);
  434. int APIENTRY PsnsListEvents(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PEVENTINFO pEventInfo, long mask);
  435. int APIENTRY PsnsGetNextEvent(PSNSHANDLE handle, PEVENTINFO pEventInfo);
  436. int APIENTRY PsnsActivateEvent(PSNSHANDLE handle, USHORT eventID, BOOL activate);
  437.  
  438. /*___________________________________________________________________________*/
  439. /*..................................................... File Filter Functions*/
  440. typedef enum {
  441.    FILTER_TREE=1,
  442.    FILTER_LIST=2
  443. } FILEFILTERTYPE;
  444.  
  445. typedef struct _FILEFILTERINFO {
  446.    FILEFILTERTYPE type;
  447.    char name[PSNS_NAME_SIZE+1];
  448.    char description[PSNS_DESCRIPTION_SIZE+1];
  449.    int numRules;
  450.    char searchFile[CCHMAXPATH];
  451. } FILEFILTERINFO, *PFILEFILTERINFO;
  452.  
  453. typedef struct _FILEFILTERRULE {
  454.    char drive;
  455.    char directory[CCHMAXPATH];
  456.    char pattern[CCHMAXPATH];
  457.    BOOL include;
  458.    BOOL subdirectories;
  459. } FILEFILTERRULE, *PFILEFILTERRULE;
  460.  
  461. #define FF_NONE                    0x00000000
  462. #define FF_TYPE                    0x00000001
  463. #define FF_NAME                    0x00000002
  464. #define FF_DESCRIPTION             0x00000004
  465. #define FF_SEARCHFILE              0x00000008
  466. #define FF_DRIVE                   0x00000010
  467. #define FF_DIRECTORY               0x00000020
  468. #define FF_PATTERN                 0x00000040
  469. #define FF_INCLUDE                 0x00000080
  470. #define FF_SUBDIRECTORIES          0x00000100
  471. #define FF_ALL                     0x000001FF
  472.  
  473. int APIENTRY PsnsCreateFileFilter(PSNSHANDLE handle, const char *name, FILEFILTERTYPE fileFilterType);
  474. int APIENTRY PsnsDeleteFileFilter(PSNSHANDLE handle, const char *name);
  475. int APIENTRY PsnsRenameFileFilter(PSNSHANDLE handle, const char *name, const char *newName);
  476. int APIENTRY PsnsCopyFileFilter(PSNSHANDLE handle, const char *name, const char *newName);
  477. int APIENTRY PsnsFileFilterInfo(PSNSHANDLE handle, const char *name, PFILEFILTERINFO pFileFilterInfo, long mask);
  478. int APIENTRY PsnsAddFileFilterRule(PSNSHANDLE handle, const char *fileFilter, PFILEFILTERRULE pFileFilterRule, int position);
  479. int APIENTRY PsnsDeleteFileFilterRule(PSNSHANDLE handle, const char *fileFilter, int which);
  480. int APIENTRY PsnsFileFilterRuleInfo(PSNSHANDLE handle, const char *fileFilter, int which, PFILEFILTERRULE pFileFilterRule, long mask);
  481. int APIENTRY PsnsListFileFilters(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PFILEFILTERINFO pFileFilterInfo, long mask);
  482.  
  483. /*___________________________________________________________________________*/
  484. /*........................................................ Rulebook Functions*/
  485. typedef struct _RULEBOOKINFO {
  486.    char name[PSNS_NAME_SIZE+1];
  487.    char description[PSNS_DESCRIPTION_SIZE+1];
  488.    int numRules;
  489. } RULEBOOKINFO, *PRULEBOOKINFO;
  490.  
  491. typedef struct _RULEBOOKRULE {
  492.    char drive;
  493.    char directory[CCHMAXPATH];
  494.    char pattern[CCHMAXPATH];
  495.    BOOL subdirectories;
  496.    int generations;
  497.    PSNSCOMPRESSION compression;
  498. } RULEBOOKRULE, *PRULEBOOKRULE;
  499.  
  500. #define RB_NONE                    0x00000000
  501. #define RB_NAME                    0x00000001
  502. #define RB_DESCRIPTION             0x00000002
  503. #define RB_DRIVE                   0x00000004
  504. #define RB_DIRECTORY               0x00000008
  505. #define RB_PATTERN                 0x00000010
  506. #define RB_GENERATIONS             0x00000020
  507. #define RB_COMPRESSION             0x00000040
  508. #define RB_SUBDIRECTORIES          0x00000080
  509. #define RB_ALL                     0x000000FF
  510.  
  511. int APIENTRY PsnsCreateRulebook(PSNSHANDLE handle, const char *name);
  512. int APIENTRY PsnsDeleteRulebook(PSNSHANDLE handle, const char *name);
  513. int APIENTRY PsnsRenameRulebook(PSNSHANDLE handle, const char *name, const char *newName);
  514. int APIENTRY PsnsCopyRulebook(PSNSHANDLE handle, const char *name, const char *newName);
  515. int APIENTRY PsnsRulebookInfo(PSNSHANDLE handle, const char *name, PRULEBOOKINFO pRuleBookInfo, long mask);
  516. int APIENTRY PsnsAddRulebookRule(PSNSHANDLE handle, const char *rulebook, PRULEBOOKRULE pRulebookRule, int position);
  517. int APIENTRY PsnsDeleteRulebookRule(PSNSHANDLE handle, const char *rulebook, int which);
  518. int APIENTRY PsnsRulebookRuleInfo(PSNSHANDLE handle, const char *rulebook, int which, PRULEBOOKRULE pRulebookRule, long mask);
  519. int APIENTRY PsnsListRulebooks(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PRULEBOOKINFO pRulebookInfo, long mask);
  520.  
  521. /*___________________________________________________________________________*/
  522. /*.................................................... Source Drive Functions*/
  523. typedef enum {
  524.    DRI_HARDDISK =1,
  525.    DRI_DISKETTE =2,
  526.    DRI_LANDRIVE =3,
  527.    DRI_RWOPTICAL=4,
  528.    DRI_CDROM    =5,
  529.    DRI_PRM      =6,
  530.    DRI_OTHER    =7
  531. } DRIVETYPE;
  532.  
  533. typedef struct _SOURCEDRIVEINFO {
  534.    char letter;
  535.    DRIVETYPE type;
  536.    BOOL selected;
  537. } SOURCEDRIVEINFO, *PSOURCEDRIVEINFO;
  538.  
  539. #define DR_NONE                       0x00000000
  540. #define DR_LETTER                     0x00000001
  541. #define DR_TYPE                       0x00000002
  542. #define DR_SELECTED                   0x00000004
  543. #define DR_ALL                        0x00000007
  544.  
  545. int APIENTRY PsnsSelectSourceDrive(PSNSHANDLE handle, char drive, BOOL use);
  546. int APIENTRY PsnsSourceDriveType(PSNSHANDLE handle, char drive, DRIVETYPE driveType);
  547. int APIENTRY PsnsListSourceDrives(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PSOURCEDRIVEINFO pSourceDriveInfo, long mask);
  548. int APIENTRY PsnsRefreshSourceDrives(PSNSHANDLE handle);
  549.  
  550. /*___________________________________________________________________________*/
  551. /*........................................... Settings and Defaults Functions*/
  552. typedef enum {
  553.    NORMAL=1,
  554.    HIGH  =2
  555. } PSNSPRIORITY;
  556.  
  557. typedef struct _PSNSDEFAULTS {
  558.    char fileFilter[PSNS_NAME_SIZE+1];
  559.    char rulebook[PSNS_NAME_SIZE+1];
  560.    char backupSet[PSNS_NAME_SIZE+1];
  561.    BOOL compression;
  562.    int generations;
  563. } PSNSDEFAULTS, *PPSNSDEFAULTS;
  564.  
  565. typedef struct _PSNSSETTINGS {
  566.    PSNSPRIORITY manualPriority;
  567.    PSNSPRIORITY autoPriority;
  568.    char tempPath[CCHMAXPATH];
  569.    long flags;
  570.    ULONG logFileLimit;
  571.    char backupExit[CCHMAXPATH];
  572.    char restoreExit[CCHMAXPATH];
  573.    BOOL enableACLBackup;
  574.    char uadFilename[CCHMAXPATH];
  575. } PSNSSETTINGS, *PPSNSSETTINGS;
  576.  
  577. #define SET_NONE                    0x00000000
  578. #define SET_FILEFILTER              0x00000001
  579. #define SET_RULEBOOK                0x00000002
  580. #define SET_BACKUPSET               0x00000004
  581. #define SET_COMPRESSION             0x00000008
  582. #define SET_GENERATIONS             0x00000010
  583. #define SET_ACLENABLE               0x00000020
  584. #define SET_ACLFILENAME             0x00000040
  585. #define SET_MANUALPRIORITY          0x00000080
  586. #define SET_AUTOPRIORITY            0x00000100
  587. #define SET_TEMPPATH                0x00000200
  588. #define SET_FLAGS                   0x00000400
  589. #define SET_LOGFILELIMIT            0x00000800
  590. #define SET_BACKUPEXIT              0x00001000
  591. #define SET_RESTOREEXIT             0x00002000
  592. #define SET_ALL                     0x00003FFF
  593.  
  594. #define SET_LOG                     0x00000001
  595. #define SET_LOG_SUCCESSES           0x00000002
  596. #define SET_LOG_FAILURES            0x00000004
  597. #define SET_BACKUP_EXIT             0x00000008
  598. #define SET_RESTORE_EXIT            0x00000010
  599.  
  600. int APIENTRY PsnsDefaults(PSNSHANDLE handle, PPSNSDEFAULTS pPsnsDefaults, long mask);
  601. int APIENTRY PsnsSettings(PSNSHANDLE handle, PPSNSSETTINGS pPsnsSettings, long mask);
  602.  
  603. /*___________________________________________________________________________*/
  604. /*..........................................................Archive Functions*/
  605. typedef struct _PSNSFILEINFO {
  606.    char backupSet[PSNS_NAME_SIZE+1];
  607.    char filename[CCHMAXPATH];
  608.    short generations;
  609.    short thisGeneration;
  610.    FDATE creationDate;
  611.    FTIME creationTime;
  612.    FDATE writeDate;
  613.    FTIME writeTime;
  614.    FDATE backupDate;
  615.    FTIME backupTime;
  616.    ULONG size;
  617.    ULONG attribs;
  618.    ULONG volumeID;
  619. } PSNSFILEINFO, *PPSNSFILEINFO;
  620.  
  621. #define FILE_NONE                  0x00000000
  622. #define FILE_BACKUPSET             0x00000001
  623. #define FILE_FILENAME              0x00000002
  624. #define FILE_GENERATIONS_LESS      0x00000004
  625. #define FILE_GENERATIONS_MORE      0x00000008
  626. #define FILE_CREATIONDATE_BEFORE   0x00000010
  627. #define FILE_CREATIONDATE_ON       0x00000020
  628. #define FILE_CREATIONDATE_AFTER    0x00000040
  629. #define FILE_CREATIONTIME_BEFORE   0x00000080
  630. #define FILE_CREATIONTIME_AFTER    0x00000100
  631. #define FILE_WRITEDATE_BEFORE      0x00000200
  632. #define FILE_WRITEDATE_ON          0x00000400
  633. #define FILE_WRITEDATE_AFTER       0x00000800
  634. #define FILE_WRITETIME_BEFORE      0x00001000
  635. #define FILE_WRITETIME_AFTER       0x00002000
  636. #define FILE_BACKUPDATE_BEFORE     0x00004000
  637. #define FILE_BACKUPDATE_ON         0x00008000
  638. #define FILE_BACKUPDATE_AFTER      0x00010000
  639. #define FILE_BACKUPTIME_BEFORE     0x00020000
  640. #define FILE_BACKUPTIME_AFTER      0x00040000
  641. #define FILE_SIZE_LESS             0x00080000
  642. #define FILE_SIZE_MORE             0x00100000
  643. #define FILE_ATTRIBS_EXACT         0x00200000
  644. #define FILE_ATTRIBS_ALLOF         0x00400000
  645. #define FILE_ATTRIBS_SOMEOF        0x00800000
  646. #define FILE_ATTRIBS_NOTSOMEOF     0x01000000
  647. #define FILE_ATTRIBS_NONEOF        0x02000000
  648. #define FILE_VOLUMEID              0x04000000
  649. #define FILE_ALL                   0x07FFFFFF
  650. #define FILE_ALLGENERATIONS        0x08000000
  651.  
  652. #define ALL_GENERATIONS            0xFFFF
  653.  
  654. int APIENTRY PsnsListFiles(PSNSHANDLE handle, PHPSNSLIST pHPsnsList, PPSNSFILEINFO pPsnsFileInfo, long mask);
  655.  
  656. /*___________________________________________________________________________*/
  657. /*................................................ Higher-Level API Functions*/
  658. int APIENTRY PsnsAddFile(PSNSHANDLE handle, const char *filename, short gen);
  659. int APIENTRY PsnsBackupFiles(PSNSHANDLE handle, PBACKUPMETHODINFO pBackupMethodInfo, PSNSSTATSFN stats);
  660. int APIENTRY PsnsRestoreFiles(PSNSHANDLE handle, PRESTOREMETHODINFO pRestoreMethodInfo, PSNSSTATSFN stats);
  661. int APIENTRY PsnsDropFiles(PSNSHANDLE handle, const char *backupSet, PSNSSTATSFN stats);
  662. int APIENTRY PsnsPurgeFiles(PSNSHANDLE handle);
  663.  
  664. int APIENTRY PsnsCloseList(PSNSHANDLE handle, PHPSNSLIST pHPsnsList);
  665.  
  666. #define PSNSM_OK                      0x00000001L
  667. #define PSNSM_RETRY                   0x00000002L
  668. #define PSNSM_IGNORE                  0x00000004L
  669. #define PSNSM_CANCEL                  0x00000008L
  670. #define PSNSM_YES                     0x00000010L
  671. #define PSNSM_NO                      0x00000020L
  672. #define PSNSM_ABORT                   0x00000040L
  673. #define PSNSM_DEFAULT                 0x00000100L
  674.  
  675. typedef ULONG (*PSNSMESSAGEFN)(const char *msg, ULONG style, void *privates);
  676.  
  677. int APIENTRY PsnsMessageCallback(PSNSHANDLE handle, PSNSMESSAGEFN fn, void *privates);
  678. int APIENTRY PsnsGetMessageText(PSNSHANDLE handle, int rc, char *message, ULONG *length);
  679. int APIENTRY PsnsGetLastError(PSNSHANDLE handle, char *message, ULONG *length);
  680.  
  681. /*___________________________________________________________________________*/
  682.  
  683. #ifdef __cplusplus
  684. }
  685. #endif
  686.  
  687. #endif
  688. /*___________________________________________________________________________*/
  689.