home *** CD-ROM | disk | FTP | other *** search
/ Network Support Encyclopedia 96-1 / novell-nsepro-1996-1-cd2.iso / download / netware / usms1.exe / SMSSDAPI.H < prev    next >
Text File  |  1994-05-18  |  32KB  |  1,049 lines

  1. /* **************************************************************************
  2.    * Program Name:     Storage Management Services (SDAPI)
  3.    *
  4.    * Filename:         SMSSDAPI.H
  5.    *
  6.    * Date Created:     Feburary 17, 1992
  7.    *
  8.    * Version:          4.0
  9.    *
  10.    * Files used:       smstypes.h, smsdefns.h, and smstserr.h.
  11.    *
  12.    * Date Modified:    July 22, 1993
  13.    *
  14.    * Modifications:    
  15.    *
  16.    * Comments:         * * * P R E L I M I N A R Y * * *
  17.    *
  18.    * (C) Unpublished Copyright of Novell, Inc.  All Rights Reserved.
  19.    *
  20.    * No part of this file may be duplicated, revised, translated, localized or
  21.    * modified in any manner or compiled, linked or uploaded or downloaded to or
  22.    * from any computer system without the prior written consent of Novell, Inc.
  23.    **************************************************************************/
  24.  
  25.  
  26. // Constants
  27.    // globally used constants
  28.  
  29. #if !defined(_SMSSDAPI_H_INCLUDED)
  30.    #define _SMSSDAPI_H_INCLUDED
  31.  
  32.    #if !defined (_CLIB_HDRS_INCLUDED)
  33.        #define _CLIB_HDRS_INCLUDED
  34.        #include <string.h>
  35.        #include <stdlib.h>
  36.        #define NETWARE3X
  37.        #include <nwlocale.h>
  38.    #endif
  39.  
  40.    #include <smstypes.h>
  41.    #include <smsdefns.h>
  42.    #include <smssderr.h>
  43.  
  44.  
  45.    // General Defines
  46.  
  47. #define NWSMSD_WAIT_PENDING                    0xFFFFFFFF
  48. #define NWSMSD_DONT_CARE                       0xFFFFFFFF
  49.  
  50. #define NWSMSD_UNKNOWN                         0xFFFFFFFF
  51.  
  52. #define NWSMSD_MAX_LABEL_LEN                   0x00000040
  53.  
  54.    // Defines for objectType parameters
  55. #define NWSMSD_OBJECT_TYPE_CHANGER             0x00000001
  56.  
  57. #define NWSMSD_OBJECT_TYPE_DEVICE              0x00000002
  58.  
  59. #define NWSMSD_OBJECT_TYPE_MAGAZINE            0x00000003
  60.  
  61. #define NWSMSD_OBJECT_TYPE_MEDIA               0x00000004
  62.  
  63. #define NWSMSD_OBJECT_TYPE_MAIL_SLOT           0x00000005
  64.  
  65. #define NWSMSD_OBJECT_TYPE_STORAGE_SLOT        0x00000006
  66.  
  67. #define NWSMSD_OBJECT_TYPE_LAST                0x00000007
  68.  
  69.    // NWSMSD_OBJECT_STATUS.object
  70.  
  71. #define NWSMSD_OBJECT_STATUS_IDLE              0x00000000
  72.  
  73. #define NWSMSD_OBJECT_STATUS_DEACTIVED         0x00000001
  74.  
  75. #define NWSMSD_OBJECT_STATUS_BUSY              0x00000002
  76.  
  77. #define NWSMSD_OBJECT_STATUS_ATT_CHNG          0x00000003
  78.  
  79. #define NWSMSD_OBJECT_STATUS_LAST              0x00000004
  80.  
  81.    // NWSMSD_OBJECT_STATUS.objectOperation
  82.  
  83. #define NWSMSD_OPERATION_NONE                  0x00000000
  84. #define NWSMSD_OPERATION_NON_IDLE              0x00000001
  85. #define NWSMSD_OPERATION_WRITING               0x00000002
  86. #define NWSMSD_OPERATION_READING               0x00000003
  87. #define NWSMSD_OPERATION_MOVING                0x00000004
  88. #define NWSMSD_OPERATION_FORMATTING            0x00000005
  89. #define NWSMSD_OPERATION_DELETING              0x00000006
  90. #define NWSMSD_OPERATION_LAST                  0x00000007
  91.  
  92.    // NWSMSD_OBJECT_STATUS.subjugateMode
  93.    // NWSMSDSubjugateObject():subjugateMode
  94.        // (This field is bit mapped)
  95.  
  96. #define NWSMSD_SUBJUGATE_NONE                  0x00000000
  97.  
  98. #define NWSMSD_SUBJUGATE_READ                  0x00000001
  99.  
  100. #define NWSMSD_SUBJUGATE_WRITE                 0x00000002
  101.  
  102.  
  103.    // NWSMSD_OBJECT_STATUS.reservedStatus
  104.  
  105. #define NWSMSD_RESERVED_NOT                    0x00000000
  106.  
  107. #define NWSMSD_RESERVED_TO_THIS_SDI            0x00000001
  108.  
  109. #define NWSMSD_RESERVED_TO_OTHER_APP           0x00000002
  110.  
  111. #define NWSMSD_RESERVE_TYPE_LAST               0x00000003
  112.  
  113.    // NWSMSD_OBJECT_CAPACITY.factor
  114.  
  115. #define NWSMSD_CAPACITY_BYTE                   0x00000001
  116. #define NWSMSD_CAPACITY_KILO                   0x00000002
  117. #define NWSMSD_CAPACITY_MEGA                   0x00000003
  118. #define NWSMSD_CAPACITY_GIGA                   0x00000004
  119. #define NWSMSD_CAPACITY_TERA                   0x00000005
  120.  
  121.    // NWSMSD_DEVICE_STATUS.magazineMountStatus
  122.    // NWSMSD_DEVICE_STATUS.mediaMountStatus
  123.    // NWSMSD_MAGAZINE_STATUS.magazineMountStatus
  124.    // NWSMSD_MEDIA_STATUS.mediaMountStatus
  125.  
  126. #define NWSMSD_MOUNT_STATUS_MOUNTED            0x00000001
  127.  
  128. #define NWSMSD_MOUNT_STATUS_DISMOUNTED         0x00000002
  129. #define NWSMSD_MOUNT_STATUS_PENDING            0x00000003
  130. #define NWSMSD_MOUNT_STATUS_LAST               0x00000004
  131.  
  132.    // NWSMSD_MEDIA_SATUS.mediaState
  133.        // This is a bit mapped field
  134.  
  135. #define NWSMSD_MEDIA_STATE_RO                  0x00000001
  136.  
  137.    // NWSMSD_DEVICE_INFO.deviceType
  138.  
  139. #define NWSMSD_DEVICE_TYPE_DISK                0x00000001
  140.  
  141. #define NWSMSD_DEVICE_TYPE_TAPE                0x00000002
  142.  
  143. #define NWSMSD_DEVICE_TYPE_WORM                0x00000003
  144.  
  145. #define NWSMSD_DEVICE_TYPE_CDROM               0x00000004
  146.  
  147. #define NWSMSD_DEVICE_TYPE_MO                  0x00000005
  148.  
  149. #define NWSMSD_DEVICE_TYPE_LAST                0x00000007
  150.  
  151.    // NWSMSD_DEVICE_INFO.relationship
  152.        // (This is bit mapped)
  153.  
  154. #define NWSMSD_RELATION_SINGLE_MEDIA           0x00000000
  155.  
  156. #define NWSMSD_RELATION_MAGAZINE               0x00000001
  157.  
  158. #define NWSMSD_RELATION_CHANGER                0x00000002
  159.  
  160.    // NWSMSD_DEVICE_INFO.compressionMethod
  161.  
  162. #define NWSMSD_COMPRESSION_NONE                0x00000001
  163.  
  164. #define NWSMSD_COMPRESSION_DEV_PROP            0x00000002
  165.  
  166. #define NWSMSD_COMPRESSION_LAST                0x00000003
  167.  
  168.    // NWSMSD_DEVICE_INFO.encryptionMethod
  169.  
  170. #define NWSMSD_ENCRYPTION_NONE                 0x00000001
  171. #define NWSMSD_ENCRYPTION_DEV_PROP             0x00000002
  172.  
  173. #define NWSMSD_ENCRYPTION_LAST                 0x00000003
  174.  
  175.    // NWSMSD_DEVICE_INFO.eccLevel
  176.  
  177. #define NWSMSD_ECC_LEVEL_NONE                  0x00000001
  178.  
  179. #define NWSMSD_ECC_LEVEL_DEV_0                 0x00000002
  180.  
  181. #define NWSMSD_ECC_LEVEL_DEV_1                 0x00000003
  182.  
  183. #define NWSMSD_ECC_LEVEL_DEV_2                 0x00000004
  184.  
  185. #define NWSMSD_ECC_LEVEL_DEV_3                 0x00000005
  186.  
  187. #define NWSMSD_ECC_LEVEL_LAST                  0x00000006
  188.  
  189.    //  NWSMSD_MEDIA_INFO.dataFormatType
  190.    //  NWSMSDMediaLabel():dataFormatType
  191.  
  192. #define NWSMSD_DFT_UNIDENTIFIABLE              0x00000001
  193. #define NWSMSD_DFT_HIGH_SIERRA_CDROM           0x00000002
  194. #define NWSMSD_DFT_ISO_CDROM                   0x00000003
  195. #define NWSMSD_DFT_MAC_CDROM                   0x00000004
  196. #define NWSMSD_DFT_NW_FILE_SYSTEM              0x00000005
  197. #define NWSMSD_DFT_INTERNAL_ID_TYPE            0x00000007
  198. #define NWSMSD_DFT_SMS_PRE_SIDF                0x00000008
  199. #define NWSMSD_DFT_SIDF                        0x00000009
  200. #define NWSMSD_DFT_BLANK                       0x0000000A
  201. #define NWSMSD_DFT_ERROR                       0x0000000B
  202. #define NWSMSD_DFT_LAST                        0x0000000C
  203.  
  204.  
  205.    // The following are media data format types designated for third parties
  206. #define NWSMSD_UNREGISTERED_MASK               0xF0000000
  207.  
  208.    // NWSMSD_MEDIA_INFO.mediaType
  209.  
  210. #define NWSMSD_MEDIA_TYPE_FIXED                0x00000001
  211.  
  212. #define NWSMSD_MEDIA_TYPE_FLOPPY_5_25          0x00000002
  213.  
  214. #define NWSMSD_MEDIA_TYPE_FLOPPY_3_50          0x00000003
  215.  
  216. #define NWSMSD_MEDIA_TYPE_OPTICAL_5_25         0x00000004
  217.  
  218. #define NWSMSD_MEDIA_TYPE_OPTICAL_3_50         0x00000005
  219.  
  220. #define NWSMSD_MEDIA_TYPE_TAPE_0_50            0x00000006
  221.  
  222. #define NWSMSD_MEDIA_TYPE_TAPE_0_25            0x00000007
  223.  
  224. #define NWSMSD_MEDIA_TYPE_TAPE_8MM             0x00000008
  225.  
  226. #define NWSMSD_MEDIA_TYPE_TAPE_4MM             0x00000009
  227.  
  228. #define NWSMSD_MEDIA_TYPE_BERN_DISK            0x0000000A
  229.  
  230. #define NWSMSD_MEDIA_TYPE_LAST                 0x0000000B
  231.  
  232.    // Defines for  NWSMSD_MEDIA_INFO.formatType
  233.  
  234.       // These are to be determined
  235.  
  236. #define NWSMSD_FORMAT_TYPE_LAST                0x00000001
  237.  
  238.    // NWSMSD_CONTROL_BLOCK.transferBufferState
  239.  
  240. #define NWSMSD_TBS_UNASSIGNED                  0x00000000
  241.  
  242. #define NWSMSD_TBS_AVAILABLE                   0x00000001
  243.  
  244. #define NWSMSD_TBS_READY_TO_TRANSFER           0x00000002
  245.  
  246. #define NWSMSD_TBS_TRANSFER_IN_PROGRESS        0x00000003
  247.  
  248. #define NWSMSD_TBS_TRANSFER_COMPLETE           0x00000004
  249.  
  250. #define NWSMSD_TBS_TRANSFER_STATUS_LAST        0x00000005
  251.  
  252.    // NWSMSD_CONTROL_BLOCK.sessionDataType
  253.  
  254. #define NWSMSD_SDT_TSA_DATA                    0x00000001
  255.  
  256. #define NWSMSD_SDT_END_OF_TSA_DATA             0x00000002
  257.  
  258. #define NWSMSD_SDT_SESSION_TRAILER             0x00000003
  259.  
  260. #define NWSMSD_SDT_SESSION_INDEX               0x00000004
  261.  
  262. #define NWSMSD_SDT_MEDIA_INDEX                 0x00000005
  263.  
  264. #define NWSMSD_SDT_END_OF_SESSION              0x00000006
  265. #define NWSMSD_SDT_LAST                        0x00000007
  266.  
  267.    // NSWMSDMediaDismount():dismountMode
  268.  
  269. #define NWSMSD_DISMOUNT_NORMAL                 0x00000000
  270.  
  271. #define NWSMSD_DISMOUNT_WRITE_TRAILER          0x00000001
  272.  
  273. #define NWSMSD_DISMOUNT_LAST                   0x00000002
  274.  
  275.    // NWSMSDMediaFormat():formatCommand
  276.        // (Bit map)
  277.  
  278. #define NWSMSD_FORMAT_MEDIA                    0x00000001
  279.  
  280. #define NWSMSD_FORMAT_PARTITION                0x00000002
  281.  
  282. #define NWSMSD_FORMAT_LAST                     0x00000004
  283.  
  284.    // NWSMSDMediaDelete():deleteCommand
  285.  
  286. #define NWSMSD_DELETE_HEADER                   0x00000001
  287.  
  288. #define NWSMSD_DELETE_ERASE                    0x00000002
  289.  
  290. #define NWSMSD_DELETE_LAST                     0x00000003
  291.  
  292.    // NWSMSDMediaPosition():positionCommand
  293.  
  294. #define NWSMSD_POS_INQUIRE                     0x00000001
  295.  
  296. #define NWSMSD_POS_PARTITION                   0x00000002
  297.  
  298. #define NWSMSD_POS_SESSION_BEG_ABS             0x00000003
  299.  
  300. #define NWSMSD_POS_SESSION_BEG_REL             0x00000004
  301.  
  302. #define NWSMSD_POS_SESSION_END_ABS             0x00000005
  303.  
  304. #define NWSMSD_POS_SESSION_END_REL             0x00000006
  305.  
  306. #define NWSMSD_POS_SECTOR_SESSION_ABS          0x00000007
  307.  
  308. #define NWSMSD_POS_SECTOR_SESSION_REL          0x00000008
  309.  
  310. #define NWSMSD_POS_SECTOR_PART_ABS             0x00000009
  311.  
  312. #define NWSMSD_POS_SECTOR_PART_REL             0x0000000A
  313.  
  314. #define NWSMSD_POS_FILE_MARK_ABS               0x0000000B
  315.  
  316. #define NWSMSD_POS_FILE_MARK_REL               0x0000000C
  317.  
  318. #define NWSMSD_POS_SET_MARK_ABS                0x0000000D
  319.  
  320. #define NWSMSD_POS_SET_MARK_REL                0x0000000E
  321.  
  322. #define NWSMSD_POS_MEDIA_INDEX                 0x0000000F
  323.  
  324. #define NWSMSD_POS_REWIND_MEDIA                0x00000010
  325.  
  326. #define NWSMSD_POS_RETENSION_MEDIA             0x00000011
  327.  
  328. #define NWSMSD_POS_END_OF_MEDIA                0x00000012
  329.  
  330. #define NWSMSD_POS_LAST_COMMAND                0x00000013
  331.  
  332.    // NWSMSDMoveObject():moveCommand
  333.  
  334. #define NWSMSD_MOVE_INQUIRE                    0x00000001
  335.  
  336. #define NWSMSD_MOVE_OBJECT                     0x00000002
  337.  
  338. #define NWSMSD_MOVE_EJECT                      0x00000003
  339.  
  340. #define NWSMSD_MOVE_LAST_COMMAND               0x00000004
  341.  
  342.    // NWSMSDModifyObjectInfo():modifyMap
  343.    // NWSMSDQueryModifyObjectInfo():modifyMap
  344.        // (Bit map)
  345.  
  346. #define NWSMSD_MODIFY_UNIT_SIZE                0x00000001
  347.  
  348. #define NWSMSD_MODIFY_READ_AFTER_WRITE         0x00000002
  349.  
  350. #define NWSMSD_MODIFY_COMPRES_METHOD           0x00000004
  351.  
  352. #define NWSMSD_MODIFY_ENCRYPT_METHOD           0x00000008
  353.  
  354. #define NWSMSD_MODIFY_ECC_LEVEL                0x00000010
  355.  
  356. #define NWSMSD_MODIFY_FORMAT_TYPE              0x00000020
  357.  
  358.    // NWSMSDRegisterAlertRoutine():alertType
  359.  
  360. #define NWSMSD_ALRT_NEW_MEDIA                  0x00000001
  361.  
  362. #define NWSMSD_ALRT_NEW_MEDIA_NEEDED           0x00000002
  363.  
  364. #define NWSMSD_ALRT_NEW_MEDIA_NOT_BLANK        0x00000004
  365.  
  366. #define NWSMSD_ALRT_NEW_MEDIA_INCORRECT        0x00000008
  367.  
  368. #define NWSMSD_ALRT_OBJECT_ADDED               0x00000010
  369.  
  370. #define NWSMSD_ALRT_OBJECT_DELETED             0x00000020
  371.  
  372. #define NWSMSD_ALRT_OBJECT_RES_CHANGE          0x00000040
  373.  
  374. #define NWSMSD_ALRT_OBJECT_ATTR_CHANGE         0x00000080
  375.  
  376. #define NWSMSD_ALRT_MEDIA_READ_ONLY            0x00000100
  377.  
  378. #define NWSMSD_ALRT_LAST_NUMBER                0x00000200
  379.  
  380.  
  381. #define NWSMSD_ALRT_MAX_NUMBER                 0x00000020
  382.  
  383.    // NWSMSDAlertResponse():alertResponseValue
  384.  
  385. #define NWSMSD_RESP_NEW_MEDIA_CONTINUE         0x00000001
  386.  
  387. #define NWSMSD_RESP_NEW_MEDIA_ABORT            0x00000002
  388.  
  389. #define NWSMSD_RESP_MAX_NUMBER                 0x00000020
  390.  
  391.    // Defines That Have SDI Strings Associated With them
  392.  
  393.    // NWSMSDConvertValueToMessage():valueType
  394.  
  395. #define NWSMSD_VALUE_TYPE_MEDIA                0x00000001
  396.  
  397. #define NWSMSD_VALUE_TYPE_DEVICE               0x00000002
  398.  
  399. #define NWSMSD_VALUE_TYPE_OBJECT               0x00000003
  400.  
  401. #define NWSMSD_VALUE_TYPE_RELATION             0x00000004
  402.  
  403. #define NWSMSD_VALUE_TYPE_RESERVED             0x00000005
  404.  
  405. #define NWSMSD_VALUE_TYPE_MODE                 0x00000006
  406.  
  407. #define NWSMSD_VALUE_TYPE_MOUNTED              0x00000007
  408.  
  409. #define NWSMSD_VALUE_TYPE_FORMAT_TYPE          0x00000008
  410.  
  411. #define NWSMSD_VALUE_TYPE_CAPACITY             0x00000009
  412.  
  413. #define NWSMSD_VALUE_TYPE_OPERATION            0x0000000A
  414.  
  415. #define NWSMSD_VALUE_TYPE_LAST                 0x0000000B
  416.  
  417. // End of constant definitions
  418.  
  419.    // Data Structures
  420.  
  421.    // NWSMSD_OBJECT_LOCATION
  422. typedef struct
  423. {
  424.    UINT32                    parentUniqueID;
  425.    UINT32                    parentObjectType;
  426.    UINT32                    elementType;
  427.    UINT32                    elementNumber;
  428. } NWSMSD_OBJECT_LOCATION;
  429.  
  430.  
  431.    // NWSMSD_OBJECT_CAPACITY
  432. typedef struct
  433. {
  434.    UINT32                    factor;
  435.    UINT32                    value;
  436. } NWSMSD_OBJECT_CAPACITY;
  437.  
  438.  
  439.    // NWSMSD_OBJECT_STATUS
  440. typedef struct
  441. {
  442.    UINT32                    object;
  443.    UINT32                    operation;
  444.    UINT32                    subjugateMode;
  445.    UINT32                    reservedStatus;
  446.    UINT32                    numberOfSharedApps;
  447. } NWSMSD_OBJECT_STATUS;
  448.  
  449.  
  450.    // NWSMSD_CHANGER_STATUS
  451. typedef struct
  452. {
  453.    NWSMSD_OBJECT_STATUS      status;
  454.    NWBOOLEAN32               objectBeingMoved;
  455. } NWSMSD_CHANGER_STATUS;
  456.  
  457.  
  458.    // NWSMSD_DEVICE_STATUS
  459. typedef struct
  460. {
  461.    NWSMSD_OBJECT_STATUS      status;
  462.    UINT32                    magazineMountStatus;
  463.    UINT32                    mediaMountStatus;
  464. } NWSMSD_DEVICE_STATUS;
  465.  
  466.  
  467.    // NWSMSD_MAGAZINE_STATUS
  468. typedef struct
  469. {
  470.    NWSMSD_OBJECT_STATUS      status;
  471.    UINT32                    magazineMountStatus;
  472. } NWSMSD_MAGAZINE_STATUS;
  473.  
  474.  
  475.    // NWSMSD_MEDIA_STATUS
  476. typedef struct
  477. {
  478.    NWSMSD_OBJECT_STATUS      status;
  479.    UINT32                    mediaMountStatus;
  480.    UINT32                    mediaState;
  481. } NWSMSD_MEDIA_STATUS;
  482.  
  483.  
  484.    // NWSMSD_OBJECT_INFO
  485. typedef struct
  486. {
  487.    UINT32                    uniqueID;
  488.    UINT32                    objectType;
  489.    NWSMSD_OBJECT_LOCATION    location;
  490.    BUFFER                    name[NWSMSD_MAX_LABEL_LEN];
  491. } NWSMSD_OBJECT_INFO;
  492.  
  493.  
  494.    // NWSMSD_CHANGER_INFO
  495. typedef struct
  496. {
  497.    NWSMSD_OBJECT_INFO        objectInfo;
  498.    NWSMSD_CHANGER_STATUS     changerStatus;
  499.    UINT32                    numberOfDevices;
  500.    UINT32                    numberOfSlots;
  501.    UINT32                    numberOfMailSlots;
  502. } NWSMSD_CHANGER_INFO;
  503.  
  504.  
  505.    // NWSMSD_DEVICE_INFO
  506. typedef struct
  507. {
  508.    NWSMSD_OBJECT_INFO        objectInfo;
  509.    NWSMSD_DEVICE_STATUS      deviceStatus;
  510.    UINT32                    deviceType;
  511.    UINT32                    relationship;
  512.    NWBOOLEAN32               sequential;
  513.    NWBOOLEAN32               removable;
  514.    NWSMSD_OBJECT_CAPACITY    capacity;
  515.    UINT32                    unitSize;
  516.    NWBOOLEAN32               readAfterWrite;
  517.    UINT32                    compressionMethod;
  518.    UINT32                    encryptionMethod;
  519.    UINT32                    eccLevel;
  520.    UINT32                    reserved0;
  521.    UINT32                    reserved1;
  522.    UINT32                    reserved2;
  523.    UINT32                    reserved3;
  524.    UINT32                    reserved4;
  525. } NWSMSD_DEVICE_INFO;
  526.  
  527.  
  528.    // NWSMSD_MAGAZINE_INFO
  529. typedef struct
  530. {
  531.    NWSMSD_OBJECT_INFO        objectInfo;
  532.    NWSMSD_MAGAZINE_STATUS    magazineStatus;
  533.    UINT32                    numberOfSlots;
  534. } NWSMSD_MAGAZINE_INFO;
  535.  
  536.  
  537.    // NWSMSD_MEDIA_INFO
  538. typedef struct
  539. {
  540.    NWSMSD_OBJECT_INFO        objectInfo;
  541.    NWSMSD_MEDIA_STATUS       mediaStatus;
  542.    ECMATime                  dateAndTime;
  543.    ECMATime                  setDateAndTime;
  544.    UINT32                    number;
  545.    UINT32                    dataFormatType;
  546.    UINT32                    mediaType;
  547.    UINT32                    formatType;
  548.    UINT32                    unitSize;
  549.    NWSMSD_OBJECT_CAPACITY    totalCapacity;
  550.    NWSMSD_OBJECT_CAPACITY    capacityRemaining;
  551. } NWSMSD_MEDIA_INFO;
  552.  
  553.  
  554.    // NWSMSD_SESSION_INFO
  555. typedef struct
  556. {
  557.    ECMATime                  sessionDateAndTime;
  558.    char                      sessionDescription[NWSM_MAX_DESCRIPTION_LEN];
  559.    char                      sourceName[NWSM_MAX_TARGET_SRVC_NAME_LEN];
  560.    char                      sourceType[NWSM_MAX_TARGET_SRVC_TYPE_LEN];
  561.    char                      sourceVersion[NWSM_MAX_TARGET_SRVC_VER_LEN];
  562.    UINT32                    sessionID;
  563. } NWSMSD_SESSION_INFO;
  564.  
  565.  
  566. // Handles
  567.  
  568. typedef    UINT32          NWSMSD_CHANGER_HANDLE;
  569. typedef    UINT32          NWSMSD_DEVICE_HANDLE;
  570. typedef    UINT32          NWSMSD_MAGAZINE_HANDLE;
  571. typedef    UINT32          NWSMSD_MEDIA_HANDLE;
  572. typedef    UINT32          NWSMSD_SESSION_HANDLE;
  573.  
  574.    // NWSMSD_HEADER_BUFFER
  575. typedef struct
  576. {
  577.    UINT32                    bufferSize;
  578.    UINT32                    headerSize;
  579.    UINT32                    overflowSize;
  580.    BUFFER                    headerBuffer[1];
  581. } NWSMSD_HEADER_BUFFER;
  582.  
  583.  
  584.    // NWSMSD_TRANS_BUF_POSITION
  585.  
  586. typedef struct
  587. {
  588.    UINT32                    mediaNumber;
  589.    UINT32                    partitionNumber;
  590.    UINT32                    sessionSectorAddress;
  591.    UINT32                    absoluteSectorAddress;
  592. } NWSMSD_TRANS_BUF_POSITION;
  593.  
  594.  
  595.    // NWSMSD_MEDIA_POSITION
  596.  
  597. typedef struct
  598. {
  599.    NWSMSD_SESSION_HANDLE     sessionHandle;
  600.    NWSMSD_SESSION_INFO       sessionDesc;
  601.    UINT32                    mediaNumber;
  602.    UINT32                    partitionNumber;
  603.    union
  604.    {
  605.        INT32     relative;
  606.        UINT32    absolute;
  607.    }                         session;
  608.    union
  609.    {
  610.        INT32     relative;
  611.        UINT32    absolute;
  612.    }                         sectorOrMark;
  613. } NWSMSD_MEDIA_POSITION;
  614.  
  615.  
  616.    // NWSMSD_CONTROL_BLOCK
  617.  
  618. typedef struct
  619. {
  620.    UINT32                    transferBufferState;
  621.    union
  622.    {
  623.        NWSMSD_SESSION_HANDLE     session;
  624.        NWSMSD_MEDIA_HANDLE       media;
  625.    } handle;
  626.    UINT32                    transferBufferSequence;
  627.    NWBOOLEAN32               finalTransferBuffer;
  628.    BUFFERPTR                 transferBuffer;
  629.    UINT32                    transferBufferSizeAllocated;
  630.    UINT32                    transferBufferSizeData;
  631.    UINT32                    sessionDataType;
  632.    UINT32                    transferBufferDataOffset;
  633.    UINT32                    bytesNotTransfered;
  634.    UINT32                    bytesSpanned;
  635.    NWSMSD_TRANS_BUF_POSITION beginningPosition;
  636.    NWSMSD_TRANS_BUF_POSITION endingPosition;
  637.    UINT32                    completionStatus;
  638. } NWSMSD_CONTROL_BLOCK;
  639.  
  640.  
  641.    // NWSMSD_OBJECT_LIST
  642. typedef struct
  643. {
  644.    UINT32                    totalCount;
  645.    UINT32                    maxCount;
  646.    UINT32                    responseCount;
  647.    UINT32                    uniqueID;
  648.    void                     *objectInfoStructArray;
  649. } NWSMSD_OBJECT_LIST;
  650.  
  651.  
  652.    // NWSMSD_TRANSFER_BUF_INFO
  653. typedef struct
  654. {
  655.    UINT32                    sectorSize;
  656.    UINT32                    maxTransferBufferSize;
  657.    UINT32                    applicationAreaSize;
  658.    UINT32                    applicationAreaOffset;
  659.    UINT32                    transferBufferDataOffset;
  660. } NWSMSD_TRANSFER_BUF_INFO;
  661.  
  662.  
  663.    // NWSMSD_TIMEOUTS
  664. typedef struct
  665. {
  666.    UINT32                    NWSMSDListObjectsDevices;
  667.    UINT32                    NWSMSDListObjectsMedia;
  668.    UINT32                    NWSMSDSubjugateDevice;
  669.    UINT32                    NWSMSDSubjugateMedia;
  670.    UINT32                    NWSMSDMediaMount;
  671.    UINT32                    NWSMSDMediaDismount;
  672.    UINT32                    NWSMSDSessionOpenForWriting;
  673.    UINT32                    NWSMSDSessionOpenForReading;
  674.    UINT32                    NWSMSDSessionClose;
  675.    UINT32                    NWSMSDSessionWriteData;
  676.    UINT32                    NWSMSDSessionReadData;
  677.    UINT32                    NWSMSDDataTransferCancel;
  678.    UINT32                    NWSMSDMediaLabel;
  679.    UINT32                    NWSMSDMediaFormat;
  680.    UINT32                    NWSMSDMediaDelete;
  681.    UINT32                    NWSMSDMediaHeaderReturn;
  682.    UINT32                    NWSMSDMediaPosition;
  683.    UINT32                    NWSMSDMoveObject;
  684.    UINT32                    NWSMSDWriteRawData;
  685.    UINT32                    NWSMSDReadRawData;
  686. } NWSMSD_TIMEOUTS;
  687.  
  688.  
  689. // End of structure definitions
  690.  
  691. // Function prototypes
  692.  
  693.    // These first two are used in sdi.h, not down below
  694.  
  695. typedef
  696. CCODE _NWSMSDConnectToSDI(
  697.            STRING                    sdiName,
  698.            STRING                    sdiUserName,
  699.            void                     *reserved,
  700.            UINT32                   *connectionID);
  701.  
  702. typedef
  703. CCODE _NWSMSDReleaseSDI(
  704.            UINT32                   *connectionID);
  705.  
  706. typedef
  707. CCODE _NWSMSDListObjects(
  708.    UINT32                    connection,
  709.    UINT32                    objectType,
  710.    UINT32                    parentUniqueID,
  711.    NWBOOLEAN32               reScan,
  712.    void                     *authentication,
  713.    NWSMSD_OBJECT_LIST       *objectList,
  714.    UINT32                    engineHandle,
  715.    CCODE                    *completionStatus);
  716.  
  717.  
  718. typedef
  719. CCODE _NWSMSDSubjugateObject(
  720.    UINT32                    connection,
  721.    UINT32                    objectType,
  722.    void                     *objectInfo,
  723.    UINT32                    subjugateMode,
  724.    void                     *authentication,
  725.    void                     *objectHandle,
  726.    UINT32                    engineHandle,
  727.    CCODE                    *completionStatus);
  728.  
  729.  
  730. typedef
  731. CCODE _NWSMSDEmancipateObject(
  732.    UINT32                    connection,
  733.    void                     *objectHandle);
  734.  
  735.  
  736. typedef
  737. CCODE _NWSMSDMediaMount(
  738.    UINT32                    connection,
  739.    NWSMSD_DEVICE_HANDLE      deviceHandle,
  740.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  741.    void                     *mediaAuthentication,
  742.    UINT32                    engineHandle,
  743.    CCODE                    *completionStatus);
  744.  
  745.  
  746. typedef
  747. CCODE _NWSMSDMediaDismount(
  748.    UINT32                    connection,
  749.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  750.    UINT32                    dismountMode,
  751.    NWSMSD_HEADER_BUFFER     *mediaTrailerInfo,
  752.    UINT32                    engineHandle,
  753.    CCODE                    *completionStatus);
  754.  
  755.  
  756. typedef
  757. CCODE _NWSMSDSessionOpenForWriting(
  758.    UINT32                    connection,
  759.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  760.    NWSMSD_HEADER_BUFFER     *sessionHeaderInfo,
  761.    NWSMSD_TRANSFER_BUF_INFO *transferBufferInfo,
  762.    NWSMSD_SESSION_HANDLE    *sessionHandle,
  763.    UINT32                    engineHandle,
  764.    CCODE                    *completionStatus);
  765.  
  766.  
  767. typedef
  768. CCODE _NWSMSDSessionOpenForReading(
  769.    UINT32                    connection,
  770.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  771.    NWSMSD_SESSION_INFO      *sessionDesc,
  772.    void                     *sessionAuthentication,
  773.    NWSMSD_HEADER_BUFFER     *sessionHeader,
  774.    UINT32                   *sectorSize,
  775.    UINT32                   *transferBufferSize,
  776.    NWSMSD_SESSION_HANDLE    *sessionHandle,
  777.    UINT32                    engineHandle,
  778.    CCODE                    *completionStatus);
  779.  
  780.  
  781. typedef
  782. CCODE _NWSMSDSessionClose(
  783.    UINT32                    connection,
  784.    NWSMSD_SESSION_HANDLE    *sessionHandle,
  785.    UINT32                    engineHandle,
  786.    CCODE                    *completionStatus);
  787.  
  788.  
  789. typedef
  790. CCODE _NWSMSDSessionWriteData(
  791.    UINT32                    connection,
  792.    UINT32                    engineHandle,
  793.    NWSMSD_CONTROL_BLOCK     *controlBlock);
  794.  
  795.  
  796. typedef
  797. CCODE _NWSMSDSessionReadData(
  798.    UINT32                    connection,
  799.    UINT32                    engineHandle,
  800.    NWSMSD_CONTROL_BLOCK     *controlBlock);
  801.  
  802.  
  803. typedef
  804. CCODE _NWSMSDDataTransferCancel(
  805.    UINT32                    connection,
  806.    UINT32                    engineHandle,
  807.    NWSMSD_CONTROL_BLOCK     *controlBlock);
  808.  
  809.  
  810. typedef
  811. CCODE _NWSMSDMediaLabel(
  812.    UINT32                    connection,
  813.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  814.    UINT32                    dataFormatType,
  815.    NWSMSD_HEADER_BUFFER     *mediaHeaderInfo,
  816.    UINT32                    engineHandle,
  817.    CCODE                    *completionStatus);
  818.  
  819.  
  820. typedef
  821. CCODE _NWSMSDMediaFormat(
  822.    UINT32                    connection,
  823.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  824.    UINT32                    formatCommand,
  825.    UINT32                    numberOfPartitions,
  826.    NWSMSD_OBJECT_CAPACITY   *partitionSizeArray,
  827.    UINT32                    engineHandle,
  828.    CCODE                    *completionStatus);
  829.  
  830.  
  831. typedef
  832. CCODE _NWSMSDMediaDelete(
  833.    UINT32                    connection,
  834.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  835.    UINT32                    deleteMode,
  836.    UINT32                    engineHandle,
  837.    CCODE                    *completionStatus);
  838.  
  839.  
  840. typedef
  841. CCODE _NWSMSDMediaHeaderReturn(
  842.    UINT32                    connection,
  843.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  844.    NWBOOLEAN32               verifyHeader,
  845.    NWSMSD_HEADER_BUFFER     *mediaHeader,
  846.    UINT32                    engineHandle,
  847.    CCODE                    *completionStatus);
  848.  
  849.  
  850. typedef
  851. CCODE _NWSMSDMediaPosition(
  852.    UINT32                    connection,
  853.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  854.    NWSMSD_MEDIA_POSITION    *mediaPosition,
  855.    UINT32                    positionCommand,
  856.    void                     *authentication,
  857.    UINT32                    engineHandle,
  858.    CCODE                    *completionStatus);
  859.  
  860.  
  861. typedef
  862. CCODE _NWSMSDMoveObject(
  863.    UINT32                    connection,
  864.    UINT32                    objectHandle,
  865.    UINT32                    moveCommand,
  866.    NWSMSD_OBJECT_LOCATION   *location,
  867.    UINT32                    engineHandle,
  868.    CCODE                    *completionStatus);
  869.  
  870.  
  871. typedef
  872. CCODE _NWSMSDGetObjectStatus(
  873.    UINT32                    connection,
  874.    UINT32                    uniqueID,
  875.    UINT32                    allocatedStatusSize,
  876.    void                     *objectStatus);
  877.  
  878.  
  879. typedef
  880. CCODE _NWSMSDGetObjectInfo(
  881.    UINT32                    connection,
  882.    UINT32                    objectHandleOrID,
  883.    void                     *authentication,
  884.    UINT32                    allocatedInfoSize,
  885.    void                     *objectInfo);
  886.  
  887.  
  888. typedef
  889. CCODE _NWSMSDModifyObjectInfo(
  890.    UINT32                    connection,
  891.    UINT32                    objectHandle,
  892.    UINT32                    modifyMap,
  893.    void                     *objectInfo);
  894.  
  895.  
  896. typedef
  897. CCODE _NWSMSDQueryModifyObjectInfo(
  898.    UINT32                    connection,
  899.    UINT32                    objectHandle,
  900.    UINT32                   *modifyMap);
  901.  
  902.  
  903. typedef
  904. CCODE _NWSMSDRenameObject(
  905.    UINT32                    connection,
  906.    UINT32                    objectHandle,
  907.    char                     *newName);
  908.  
  909.  
  910. typedef
  911. CCODE _NWSMSDWriteRawData(
  912.    UINT32                    connection,
  913.    UINT32                    engineHandle,
  914.    NWSMSD_CONTROL_BLOCK     *controlBlock);
  915.  
  916.  
  917. typedef
  918. CCODE _NWSMSDReadRawData(
  919.    UINT32                    connection,
  920.    UINT32                    engineHandle,
  921.    NWSMSD_CONTROL_BLOCK     *controlBlock);
  922.  
  923.  
  924. typedef
  925. CCODE _NWSMSDAbortFunction(
  926.    UINT32                    connection,
  927.    UINT32                    engineHandle,
  928.    CCODE                    *completionStatus);
  929.  
  930.  
  931. typedef
  932. CCODE _NWSMSDSetSpanningSequence(
  933.    UINT32                    connection,
  934.    NWSMSD_MEDIA_HANDLE       mediaHandle,
  935.    UINT32                    number,
  936.    NWSMSD_OBJECT_LOCATION   *sequenceArray);
  937.  
  938.  
  939. typedef
  940. CCODE _NWSMSDSetReadTimeouts(
  941.    UINT32                    connection,
  942.    NWSMSD_TIMEOUTS          *sdiTimeouts,
  943.    NWBOOLEAN32               setReadMode);
  944.  
  945.  
  946. // Note: The NWSMSDAlertRoutine() routine is actually provided by the Engine
  947.  
  948. typedef 
  949. void _NWSMSDEngineAlertRoutine(
  950.    UINT32                    alertHandle,
  951.    UINT32                    alertType,
  952.    UINT32                    objectType,
  953.    UINT32                    uniqueID,
  954.    UINT32                    alertNumber,
  955.    STRING                    alertString);
  956.  
  957. typedef
  958. CCODE _NWSMSDRegisterAlertRoutine(
  959.    UINT32                    connection,
  960.    UINT32                    alertType,
  961.    _NWSMSDEngineAlertRoutine *alertRoutine);
  962.  
  963.  
  964. typedef
  965. CCODE _NWSMSDAlertResponse(
  966.    UINT32                    connection,
  967.    UINT32                    alertHandle,
  968.    UINT32                    alertType,
  969.    UINT32                    alertResponseValue);
  970.  
  971.  
  972. typedef
  973. CCODE _NWSMSDConvertValueToMessage(
  974.    UINT32                    connection,
  975.    UINT32                    valueType,
  976.    UINT32                    value,
  977.    UINT32                    stringSize,
  978.    STRING                    string);
  979.  
  980.  
  981. typedef
  982. CCODE _NWSMSDConvertError(
  983.    UINT32                    connection,
  984.    CCODE                     errorNumber,
  985.    STRING                    string);
  986.  
  987.  
  988. // end of Function Prototypes
  989.  
  990.  
  991. CCODE NWSMListSDIs(
  992.        char                         *pattern,
  993.        NWSM_NAME_LIST              **nameList);
  994.  
  995. CCODE GetSDIFunction(
  996.        UINT32                        connectionID, 
  997.        UINT16                        smspcode);
  998.  
  999. CCODE NWSMSDConnectToSDI(
  1000.        STRING                        sdiName,
  1001.        STRING                        sdiUserName,
  1002.        void                         *reserved,
  1003.        UINT32                       *connectionID);
  1004.  
  1005. CCODE NWSMSDReleaseSDI(
  1006.        UINT32                       *connectionID);
  1007.  
  1008. CCODE NWSMUnsupported(
  1009.        UINT32                        cp,
  1010.        ...);
  1011.  
  1012. _NWSMSDListObjects                 NWSMSDListObjects;
  1013. _NWSMSDSubjugateObject             NWSMSDSubjugateObject;
  1014. _NWSMSDEmancipateObject            NWSMSDEmancipateObject;
  1015. _NWSMSDMediaMount                  NWSMSDMediaMount;
  1016. _NWSMSDMediaDismount               NWSMSDMediaDismount;
  1017. _NWSMSDSessionOpenForWriting       NWSMSDSessionOpenForWriting;
  1018. _NWSMSDSessionOpenForReading       NWSMSDSessionOpenForReading;
  1019. _NWSMSDSessionClose                NWSMSDSessionClose;
  1020. _NWSMSDSessionWriteData            NWSMSDSessionWriteData;
  1021. _NWSMSDSessionReadData             NWSMSDSessionReadData;
  1022. _NWSMSDDataTransferCancel          NWSMSDDataTransferCancel;
  1023. _NWSMSDMediaLabel                  NWSMSDMediaLabel;
  1024. _NWSMSDMediaFormat                 NWSMSDMediaFormat;
  1025. _NWSMSDMediaDelete                 NWSMSDMediaDelete;
  1026. _NWSMSDMediaHeaderReturn           NWSMSDMediaHeaderReturn;
  1027. _NWSMSDMediaPosition               NWSMSDMediaPosition;
  1028. _NWSMSDMoveObject                  NWSMSDMoveObject;
  1029. _NWSMSDGetObjectStatus             NWSMSDGetObjectStatus;
  1030. _NWSMSDGetObjectInfo               NWSMSDGetObjectInfo;
  1031. _NWSMSDModifyObjectInfo            NWSMSDModifyObjectInfo;
  1032. _NWSMSDQueryModifyObjectInfo       NWSMSDQueryModifyObjectInfo;
  1033. _NWSMSDRenameObject                NWSMSDRenameObject;
  1034. _NWSMSDWriteRawData                NWSMSDWriteRawData;
  1035. _NWSMSDReadRawData                 NWSMSDReadRawData;
  1036. _NWSMSDAbortFunction               NWSMSDAbortFunction;
  1037. _NWSMSDSetSpanningSequence         NWSMSDSetSpanningSequence;
  1038. _NWSMSDSetReadTimeouts             NWSMSDSetReadTimeouts;
  1039. _NWSMSDRegisterAlertRoutine        NWSMSDRegisterAlertRoutine;
  1040. _NWSMSDAlertResponse               NWSMSDAlertResponse;
  1041. _NWSMSDConvertValueToMessage       NWSMSDConvertValueToMessage;
  1042. _NWSMSDConvertError                NWSMSDConvertError;
  1043.  
  1044. #endif                    
  1045. /***************************************************************************/
  1046.  
  1047.  
  1048. 
  1049.