home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / NETCLB35.ZIP / NETCLB35.EXE / DOCS / NETWARE.TXT < prev    next >
Text File  |  1996-01-03  |  306KB  |  7,188 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.          ╔═════════════════════════════════════════════════════════╗
  17.          ║                                                         ║
  18.          ║                    Netware C Library                    ║
  19.          ║                                                         ║
  20.          ║                       Version 3.5                       ║
  21.          ║                                                         ║
  22.          ║                    Reference  Manual                    ║
  23.          ║                                                         ║
  24.          ║       Copyright (c)  Adrian M. Cunnelly 1992-1995       ║
  25.          ║                                                         ║
  26.          ║            Internet: adrian@amcsoft.demon.co.uk         ║
  27.          ║                                                         ║
  28.          ╚═════════════════════════════════════════════════════════╝
  29.  
  30.  
  31.  
  32. Netware C Library                                                     Contents-1
  33. ────────────────────────────────────────────────────────────────────────────────
  34.  
  35.     1. Introduction.........................................1-1
  36.  
  37.         1.1  General Information............................1-1
  38.         1.2  Registration Information.......................1-1
  39.         1.3  Disclaimer.....................................1-1
  40.         1.4  Future Enhancements............................1-1
  41.         1.5  Change History.................................1-1
  42.         1.6  Function List..................................1-2
  43.         1.7  Using the Libraries............................1-5
  44.         1.8  Netware Data Types.............................1-6
  45.         1.9  Date/Time formats..............................1-7
  46.         1.10 Contacting the Author..........................1-8
  47.  
  48.     2. Bindery Services.....................................2-1
  49.  
  50.         2.1  Bindery Objects................................2-1
  51.  
  52.             2.1.1  Object Type .............................2-1
  53.             2.1.2  Object Name..............................2-2
  54.             2.1.3  Object Flag..............................2-2
  55.             2.1.4  Object Security..........................2-2
  56.             2.1.5  Properties Flag..........................2-2
  57.  
  58.         2.2  Properties and their values....................2-2
  59.  
  60.             2.2.1  Property Name............................2-2
  61.             2.2.2  Property Flag............................2-3
  62.             2.2.3  Property Security........................2-3
  63.             2.2.4  Property Values Flag.....................2-3
  64.  
  65.         2.3  Bindery Functions..............................2-4
  66.  
  67.             2.3.1   AddBinderyObjectToSet...................2-4
  68.             2.3.2   ChangeBinderyObjectPassword.............2-4
  69.             2.3.3   ChangeBinderyObjectSecurity.............2-4
  70.             2.3.4   ChangePropertySecurity..................2-5
  71.             2.3.5   CloseBindery............................2-5
  72.             2.3.6   CreateBinderyObject.....................2-5
  73.             2.3.7   CreateProperty..........................2-5
  74.             2.3.8   DeleteBinderyObjectFromSet..............2-6
  75.             2.3.9   DeleteBinderyObject.....................2-6
  76.             2.3.10  DeleteProperty..........................2-6
  77.             2.3.11  GetBinderyAccessLevel...................2-6
  78.             2.3.12  GetBinderyObjectID......................2-7
  79.             2.3.13  GetBinderyObjectName....................2-7
  80.             2.3.14  IsBinderyObjectInSet....................2-7
  81.             2.3.15  OpenBindery.............................2-8
  82.             2.3.16  ReadPropertyValue.......................2-8
  83.             2.3.17  RenameBinderyObject.....................2-8
  84.             2.3.18  ScanBinderyObject.......................2-9
  85.             2.3.19  ScanProperty............................2-9
  86.             2.3.20  VerifyBinderyObjectPassword.............2-10
  87.             2.3.21  WritePropertyValue......................2-10
  88.  
  89.     3.  File Server Environment Services....................3-1
  90.  
  91.                                                                                 
  92. Netware C Library                                                     Contents-2
  93. ────────────────────────────────────────────────────────────────────────────────
  94.  
  95.         3.1  File Server Environment Functions..............3-1
  96.  
  97.             3.1.1   CheckConsolePrivileges..................3-1
  98.             3.1.2   ClearConnectionNumber...................3-1
  99.             3.1.3   ConvertPathToDirectoryEntry.............3-1
  100.             3.1.4   DisableFileServerLogin..................3-2
  101.             3.1.5   DisableTransactionTracking..............3-2
  102.             3.1.6   DownFileServer..........................3-2
  103.             3.1.7   EnableFileServerLogin...................3-2
  104.             3.1.8   EnableTransactionTracking...............3-2
  105.             3.1.9   GetBinderyObjectDiskSpaceLeft...........3-3
  106.             3.1.10  GetConnectionsOpenFiles.................3-3
  107.             3.1.11  GetConnectionsUsageStatistics...........3-4
  108.             3.1.12  GetDiskCacheStatistics..................3-4
  109.             3.1.13  GetDiskUtilisation......................3-4
  110.             3.1.14  GetFileServerDateTime...................3-5
  111.             3.1.15  GetFileServerInformation................3-5
  112.             3.1.16  GetFileServerLoginStatus................3-5
  113.             3.1.17  GetNetworkSerialNumber..................3-6
  114.             3.1.18  GetPathFromDirectoryEntry...............3-6
  115.             3.1.19  GetPhysicalDiskStatistics...............3-6
  116.             3.1.20  GetSemaphoreInformation.................3-7
  117.             3.1.21  SendConsoleBroadcast....................3-7
  118.  
  119.     4.  Connection/Workstation Services.....................4-1
  120.  
  121.         4.1  Workstation Tables.............................4-1
  122.  
  123.             4.1.1   File Server Name Table..................4-1
  124.             4.1.2   Connection ID Table.....................4-1
  125.             4.1.3   Drive Flag Table........................4-1
  126.             4.1.4   Drive Connection ID Table...............4-1
  127.             4.1.5   Drive Handle Table......................4-2
  128.  
  129.         4.2  Multiple Servers...............................4-2
  130.         4.3  Connection Functions...........................4-3
  131.  
  132.             4.3.1   AttachToFileServer......................4-3
  133.             4.3.2   DetachFromFileServer....................4-3
  134.             4.3.3   EnterLoginArea..........................4-3
  135.             4.3.4   GetConnectionInformation................4-3
  136.             4.3.5   GetConnectionNumber.....................4-4
  137.             4.3.6   GetInternetAddress......................4-4
  138.             4.3.7   GetObjectConnectionNumbers..............4-5
  139.             4.3.8   GetStationAddress.......................4-5
  140.             4.3.9   LoginToFileServer.......................4-5
  141.             4.3.10  LogoutFromFileServer....................4-5
  142.             4.3.11  Logout..................................4-6
  143.  
  144.         4.4  Workstation Functions..........................4-6
  145.  
  146.             4.4.1   EndOfJob................................4-6
  147.             4.4.2   GetConnectionIDTable....................4-6
  148.             4.4.3   GetDefaultConnectionID..................4-6
  149.             4.4.4   GetDriveConnectionID....................4-6
  150.             4.4.5   GetDriveFlagTable.......................4-7
  151.                                                                                 
  152. Netware C Library                                                     Contents-3
  153. ────────────────────────────────────────────────────────────────────────────────
  154.  
  155.             4.4.6   GetDriveHandleTable.....................4-7
  156.             4.4.7   GetFileServerName.......................4-7
  157.             4.4.7   GetFileServerTable......................4-7
  158.             4.4.8   GetNetwareShellVersion..................4-8
  159.             4.4.9   GetNumberOfLocalDrives..................4-8
  160.             4.4.10  GetPreferredConnectionID................4-8
  161.             4.4.11  GetPrimaryConnectionID..................4-8
  162.             4.4.12  GetServerConnectionID...................4-9
  163.             4.4.13  IsShellLoaded...........................4-9
  164.             4.4.14  SetEndofJobStatus.......................4-9
  165.             4.4.15  SetNWErrorMode..........................4-9
  166.             4.4.16  SetPreferredConnectionID................4-10
  167.             4.4.17  SetPrimaryConnectionID..................4-10
  168.  
  169.     5.  Queue Services......................................5-1
  170.  
  171.         5.1  Queue Functions................................5-1
  172.  
  173.             5.1.1   AbortServicingQueueJobAndFile...........5-1
  174.             5.1.2   AttachQueueServerToQueue................5-2
  175.             5.1.3   ChangeQueueJobEntry.....................5-2
  176.             5.1.4   ChangeQueueJobPosition..................5-2
  177.             5.1.5   ChangeToClientRights....................5-3
  178.             5.1.7   CloseFileAndAbortQueueJob...............5-3
  179.             5.1.8   CloseFileAndStartQueueJob...............5-3
  180.             5.1.6   CreateQueue.............................5-4
  181.             5.1.9   CreateQueueJobAndFile...................5-4
  182.             5.1.10  DestroyQueue............................5-5
  183.             5.1.11  DetachQueueServerFromQueue..............5-5
  184.             5.1.12  FinishServicingQueueJobAndFile..........5-5
  185.             5.1.13  GetQueueJobList.........................5-6
  186.             5.1.14  GetQueueJobsFileSize....................5-6
  187.             5.1.15  ReadQueueCurrentStatus..................5-6
  188.             5.1.16  ReadQueueJobEntry.......................5-7
  189.             5.1.17  ReadQueueServerCurrentStatus............5-7
  190.             5.1.18  RemoveJobFromQueue......................5-8
  191.             5.1.19  RestoreQueueServerRights................5-8
  192.             5.1.20  ServiceQueueJobAndOpenFile..............5-8
  193.             5.1.21  SetQueueCurrentStatus...................5-8
  194.             5.1.22  SetQueueServerCurrentStatus.............5-9
  195.  
  196.     6.  Message Services....................................6-1
  197.  
  198.         6.1  Message Functions..............................6-1
  199.  
  200.             6.1.1   BroadcastToConsole......................6-1
  201.             6.1.2   CheckPipeStatus.........................6-1
  202.             6.1.3   CloseMessagePipe........................6-2
  203.             6.1.4   GetBroadcastMessage.....................6-2
  204.             6.1.5   GetBroadcastMode........................6-2
  205.             6.1.6   GetPersonalMessage......................6-3
  206.             6.1.7   LogNetworkMessage.......................6-3
  207.             6.1.8   OpenMessagePipe.........................6-4
  208.             6.1.9   SendBroadcastMessage....................6-4
  209.             6.1.10  SendPersonalMessage.....................6-5
  210.             6.1.11  SetBroadcastMode........................6-5
  211.                                                                                 
  212. Netware C Library                                                     Contents-4
  213. ────────────────────────────────────────────────────────────────────────────────
  214.  
  215.  
  216.     7.  File Services.......................................7-1
  217.  
  218.         7.1  Directory Handles..............................7-1
  219.         7.2  Search Attributes..............................7-1
  220.         7.3  File Attributes................................7-1
  221.         7.4  Extended File Attributes.......................7-2
  222.         7.5  File Functions.................................7-2
  223.  
  224.             7.5.1   EraseFiles..............................7-2
  225.             7.5.2   FileServerFileCopy......................7-3
  226.             7.5.3   PurgeAllErasedFiles.....................7-3
  227.             7.5.4   PurgeErasedFiles........................7-3
  228.             7.5.5   ScanFileInformation.....................7-4
  229.             7.5.6   SetFileInformation......................7-5
  230.  
  231.     8.  Directory Services..................................8-1
  232.  
  233.         8.1  Directory Handle Table.........................8-1
  234.         8.2  Drive Handle Table.............................8-1
  235.         8.3  Drive Flag Table...............................8-1
  236.         8.4  Drive Connection ID Table......................8-2
  237.         8.5  Trustee Rights Mask............................8-2
  238.         8.6  Directory Functions............................8-3
  239.  
  240.             8.6.1   AddTrusteeToDirectory...................8-3
  241.             8.6.2   AddUserDiskSpaceRestriction.............8-3
  242.             8.6.3   AllocPermanentDirectoryHandle...........8-4
  243.             8.6.4   AllocTemporaryDirectoryHandle...........8-4
  244.             8.6.5   CreateDirectory.........................8-5
  245.             8.6.6   DeallocateDirectoryHandle...............8-5
  246.             8.6.7   DeleteDirectory.........................8-5
  247.             8.6.8   DeleteFakeRoot..........................8-6
  248.             8.6.9   DeleteTrusteeFromDirectory..............8-6
  249.             8.6.10  GetCurrentDirectory.....................8-6
  250.             8.6.11  GetDirectoryHandle......................8-6
  251.             8.6.12  GetDirectoryPath........................8-7
  252.             8.6.13  GetEffectiveDirectoryRights.............8-7
  253.             8.6.14  GetVolumeInformation....................8-7
  254.             8.6.15  GetVolumeInfoWithHandle.................8-8
  255.             8.6.16  GetVolumeInfoWithNumber.................8-8
  256.             8.6.17  GetVolumeName...........................8-9
  257.             8.6.18  GetVolumeNumber.........................8-9
  258.             8.6.19  MapFakeRoot.............................8-9
  259.             8.6.20  ModifyMaximumRightsMask.................8-10
  260.             8.6.21  RenameDirectory.........................8-10
  261.             8.6.22  RestoreDirectoryHandle..................8-10
  262.             8.6.23  SaveDirectoryHandle.....................8-11
  263.             8.6.24  ScanBinderyObjectTrusteePaths...........8-11
  264.             8.6.25  ScanDirectoryForTrustees................8-12
  265.             8.6.26  ScanDirectoryInformation................8-13
  266.             8.6.27  SetDirectoryHandle......................8-13
  267.             8.6.28  SetDirectoryInformation.................8-14
  268.  
  269.     9.  Print Services......................................9-1
  270.  
  271.                                                                                 
  272. Netware C Library                                                     Contents-5
  273. ────────────────────────────────────────────────────────────────────────────────
  274.  
  275.         9.1  Print Functions................................9-1
  276.  
  277.             9.1.1   CancelLPTCapture........................9-1
  278.             9.1.2   CancelSpecificLPTCapture................9-1
  279.             9.1.3   EndLPTCapture...........................9-1
  280.             9.1.4   EndSpecificLPTCapture...................9-1
  281.             9.1.5   FlushLPTCapture.........................9-2
  282.             9.1.6   FlushSpecificLPTCapture.................9-2
  283.             9.1.7   GetBannerUserName.......................9-2
  284.             9.1.8   GetLPTCaptureStatus.....................9-2
  285.             9.1.9   GetDefaultLocalPrinter..................9-2
  286.             9.1.10  GetDefaultCaptureFlags..................9-3
  287.             9.1.11  GetPrinterStatus........................9-3
  288.             9.1.12  GetSpecificCaptureFlags.................9-3
  289.             9.1.13  SetBannerUserName.......................9-4
  290.             9.1.14  SetCapturePrintQueue....................9-4
  291.             9.1.15  SetDefaultLocalPrinter..................9-4
  292.             9.1.16  SetDefaultCaptureFlags..................9-4
  293.             9.1.17  SetSpecificCaptureFlags.................9-5
  294.             9.1.18  SpecifyCaptureFile......................9-5
  295.             9.1.19  StartLPTCapture.........................9-5
  296.             9.1.20  StartSpecificLPTCapture.................9-5
  297.  
  298.     10.  Synchronisation Services...........................10-1
  299.  
  300.         10.1  Semaphores....................................10-1
  301.         10.2  Synchronisation Functions.....................10-2
  302.  
  303.             10.2.1  CloseSemaphore..........................10-2
  304.             10.2.2  ExamineSemaphore........................10-2
  305.             10.2.3  OpenSemaphore...........................10-2
  306.             10.2.4  SignalSemaphore.........................10-3
  307.             10.2.5  WaitOnSemaphore.........................10-3
  308.  
  309.     11.  Communication Services.............................11-1
  310.  
  311.         11.1  IPX Protocol..................................11-1
  312.  
  313.             11.1.1  IPX Packet Structure....................11-1
  314.  
  315.         11.2  SPX Protocol..................................11-2
  316.  
  317.             11.2.1  SPX Packet Structure....................11-2
  318.  
  319.         11.3  Event Control Block (ECB).....................11-4
  320.  
  321.             11.3.1  ECB Structure...........................11-4
  322.  
  323.         11.4  IPX Functions.................................11-7
  324.  
  325.             11.4.1  IPXCancelEvent..........................11-7
  326.             11.4.2  IPXCloseSocket..........................11-7
  327.             11.4.3  IPXDisconnectFromTarget.................11-7
  328.             11.4.4  IPXGetInternetworkAddress...............11-8
  329.             11.4.5  IPXGetIntervalMarker....................11-8
  330.             11.4.6  IPXGetLocalTarget.......................11-8
  331.                                                                                 
  332. Netware C Library                                                     Contents-6
  333. ────────────────────────────────────────────────────────────────────────────────
  334.  
  335.             11.4.7  IPXInitialise...........................11-8
  336.             11.4.8  IPXListenForPacket......................11-9
  337.             11.4.9  IPXOpenSocket...........................11-9
  338.             11.4.10 IPXRelinquishControl....................11-9
  339.             11.4.11 IPXScheduleIPXEvent.....................11-10
  340.             11.4.12 IPXSendPacket...........................11-10
  341.  
  342.         11.5 SPX Functions..................................11-11
  343.  
  344.             11.5.1  SPXAbortConnection......................11-11
  345.             11.5.2  SPXEstablishConnection..................11-11
  346.             11.5.3  SPXGetConnectionStatus..................11-12
  347.             11.5.4  SPXInitialise...........................11-12
  348.             11.5.5  SPXListenForConnection..................11-12
  349.             11.5.6  SPXListenForSequencedPacket.............11-13
  350.             11.5.7  SPXSendSequencedPacket..................11-14
  351.             11.5.8  SPXTerminateConnection..................11-14
  352.  
  353.     Appendix I    Netware Result Codes......................A1-1
  354.     Appendix II   Function List.............................A2-1
  355.     Appendix III  Data Structures...........................A3-1
  356.  
  357.         A3.1  CONNECTION_ID_TABLE...........................A3-1
  358.         A3.2  DISK_CACHE_STATISTICS.........................A3-3
  359.         A3.3  FILE_SERVER_INFO..............................A3-5
  360.         A3.4  OPEN_FILES_INFO...............................A3-6
  361.         A3.5  PHYSICAL_DISK_STATISTICS......................A3-8
  362.         A3.6  PRINT_CONTROL_DATA............................A3-10
  363.         A3.7  QUEUE_JOB_ENTRY...............................A3-12
  364.         A3.8  SPX_CONNECTION_STATUS.........................A3-14
  365.         A3.9  VOLUME_STATISTICS.............................A3-16
  366.  
  367.     Appendix IV   Order Form................................A4-1
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                                                                 
  392. Netware C Library          Chapter One - Introduction                  Page: 1-1
  393. ────────────────────────────────────────────────────────────────────────────────
  394.  
  395.                                1. Introduction
  396.  
  397. 1.1 General Information
  398.  
  399.     This   document  and  the  associated  C  libraries  provide  the  network
  400.     programmer with a whole  host  of  functions  for accessing Novell Netware
  401.     Services.  Only the small memory model libraries for Microsoft C, Turbo  C
  402.     and  Borland  C++ are provided, but a Microsoft Windows DLL and medium and
  403.     large memory models are  provided  with  registration.  The source code is
  404.     also available, see  registration  below,  enabling  libraries  for  other
  405.     compilers to be produced.
  406.  
  407.     The  libraries  were  produced using Microsoft C v6.0 & v7.0, Turbo C v2.0
  408.     and Borland C++ v2.0  &  3.1.   All  the  functions  have been tested with
  409.     Novell Advanced Netware 286 v2.15, and some have been  tested  on  Netware
  410.     3.11 and Netware 4.1.
  411.  
  412. 1.2 Registration Information
  413.  
  414.     Registration provides the following :-
  415.  
  416.         ■ Windows DLL.
  417.  
  418.         ■ Latest version of the libraries which will include small, medium and
  419.           large memory models for Microsoft C, Turbo C and Borland C++.
  420.  
  421.         ■ Royalty-free use of all library functions.
  422.  
  423.         ■ Unlimited technical support via e-mail or snail-mail.
  424.  
  425.         ■ Low-cost upgrades.
  426.  
  427.         ■ Source code (optional).
  428.  
  429. 1.3 Disclaimer
  430.  
  431.     The  author,  Adrian  Cunnelly,  claims  no responsibility for any damages
  432.     caused by the use or misuse  of this product.  This product is distributed
  433.     "as is" with no warranty expressed or implied.  The  author  will  not  be
  434.     responsible for any losses incurred, either directly or indirectly, by the
  435.     use  of  this  product.   Use this product entirely at your own risk.  The
  436.     author reserves the right to  make  modifications at any time.  Prices are
  437.     subject to change without notice.
  438.  
  439. 1.4 Future Enhancements
  440.  
  441.     Future  versions  of  this  library  will  contain Accounting, TTS and IPX
  442.     Diagnostic  Services  along  with   additional  File  and  Synchronization
  443.     Services.  The windows DLL will also be enhanced to  include  the  IPX/SPX
  444.     services.
  445.     All registered users will be automatically informed of all updates.  Which
  446.     will be available for a small fee.
  447.  
  448. 1.5 Change History
  449.  
  450.     For a complete list of changes see the file history.txt.
  451.                                                                                 
  452. Netware C Library          Chapter One - Introduction                  Page: 1-2
  453. ────────────────────────────────────────────────────────────────────────────────
  454.  
  455. 1.6 Function List
  456.  
  457.     The following functions are provided in this library:
  458.  
  459.     Message Services:
  460.  
  461.         BroadcastToConsole             LogNetworkMessage
  462.         CheckPipeStatus                OpenMessagePipe
  463.         CloseMessagePipe               SendBroadcastMessage
  464.         GetBroadcastMessage            SendPersonalMessage
  465.         GetBroadcastMode               SetBroadcastMode
  466.         GetPersonalMessage
  467.  
  468.     Connection\Workstation Services:
  469.  
  470.         AttachToFileServer             GetNumberOfLocalDrives
  471.         DetachFromFileServer           GetObjectConnectionNumbers
  472.         EndOfJob                       GetPreferredConnectionID
  473.         EnterLoginArea                 GetPrimaryConnectionID
  474.         GetConnectionIDTable           GetServerConnectionID
  475.         GetConnectionInformation       GetStationAddress
  476.         GetConnectionNumber            IsShellLoaded
  477.         GetDefaultConnectionID         LoginToFileServer
  478.         GetDriveConnectionID           Logout
  479.         GetDriveFlagTable              LogoutFromFileServer
  480.         GetDriveHandleTable            SetEndofJobStatus
  481.         GetFileServerName              SetNWErrorMode
  482.         GetFileServerTable             SetPreferredConnectionID
  483.         GetInternetAddress             SetPrimaryConnectionID
  484.         GetNetwareShellVersion
  485.  
  486.     Directory Services:
  487.  
  488.         AddTrusteeToDirectory          GetVolumeInfoWithHandle
  489.         AddUserDiskSpaceRestriction    GetVolumeInfoWithNumber
  490.         AllocPermanentDirectoryHandle  GetVolumeName
  491.         AllocTemporaryDirectoryHandle  GetVolumeNumber
  492.         CreateDirectory                MapFakeRoot
  493.         DeallocateDirectoryHandle      ModifyMaximumRightsMask
  494.         DeleteDirectory                RenameDirectory
  495.         DeleteFakeRoot                 RestoreDirectoryHandle
  496.         DeleteTrusteeFromDirectory     SaveDirectoryHandle
  497.         GetCurrentDirectory            ScanBinderyObjectTrusteePaths
  498.         GetDirectoryHandle             ScanDirectoryForTrustees
  499.         GetDirectoryPath               ScanDirectoryInformation
  500.         GetEffectiveDirectoryRights    SetDirectoryHandle
  501.         GetVolumeInformation           SetDirectoryInformation
  502.  
  503.     File Services:
  504.  
  505.         EraseFiles                     PurgeErasedFiles
  506.         FileServerFileCopy             ScanFileInformation
  507.         PurgeAllErasedFiles            SetFileInformation
  508.  
  509.  
  510.  
  511.                                                                                 
  512. Netware C Library          Chapter One - Introduction                  Page: 1-3
  513. ────────────────────────────────────────────────────────────────────────────────
  514.  
  515.     File Server Environment Services:
  516.  
  517.         CheckConsolePrivileges         GetDiskCacheStatistics
  518.         ClearConnectionNumber          GetDiskUtilisation
  519.         ConvertPathToDirectoryEntry    GetFileServerDateTime
  520.         DisableFileServerLogin         GetFileServerInformation
  521.         DisableTransactionTracking     GetFileServerLoginStatus
  522.         DownFileServer                 GetNetworkSerialNumber
  523.         EnableFileServerLogin          GetPathFromDirectoryEntry
  524.         EnableTransactionTracking      GetPhysicalDiskStatistics
  525.         GetBinderyObjectDiskSpaceLeft  GetSemaphoreInformation
  526.         GetConnectionsOpenFiles        SendConsoleBroadcast
  527.         GetConnectionsUsageStatistics
  528.  
  529.     Bindery Services:
  530.  
  531.         AddBinderyObjectToSet          GetBinderyObjectID
  532.         ChangeBinderyObjectPassword    GetBinderyObjectName
  533.         ChangeBinderyObjectSecurity    IsBinderyObjectInSet
  534.         ChangePropertySecurity         OpenBindery
  535.         CloseBindery                   ReadPropertyValue
  536.         CreateBinderyObject            RenameBinderyObject
  537.         CreateProperty                 ScanBinderyObject
  538.         DeleteBinderyObjectFromSet     ScanProperty
  539.         DeleteBinderyObject            VerifyBinderyObjectPassword
  540.         DeleteProperty                 WritePropertyValue
  541.         GetBinderyAccessLevel
  542.  
  543.     Print Services:
  544.  
  545.         CancelLPTCapture               GetPrinterStatus
  546.         CancelSpecificLPTCapture       GetSpecificCaptureFlags
  547.         EndLPTCapture                  SetBannerUserName
  548.         EndSpecificLPTCapture          SetCapturePrintQueue
  549.         FlushLPTCapture                SetDefaultLocalPrinter
  550.         FlushSpecificLPTCapture        SetDefaultCaptureFlags
  551.         GetBannerUserName              SetSpecificCaptureFlags
  552.         GetLPTCaptureStatus            SpecifyCaptureFile
  553.         GetDefaultLocalPrinter         StartLPTCapture
  554.         GetDefaultCaptureFlags         StartSpecificLPTCapture
  555.  
  556.     Communication Services:
  557.  
  558.         IPXCancelEvent                 IPXInitialise
  559.         IPXCloseSocket                 IPXListenForPacket
  560.         IPXDisconnectFromTarget        IPXOpenSocket
  561.         IPXGetInternetworkAddress      IPXRelinquishControl
  562.         IPXGetIntervalMarker           IPXScheduleIPXEvent
  563.         IPXGetLocalTarget              IPXSendPacket
  564.  
  565.         SPXAbortConnection             SPXListenForConnection
  566.         SPXEstablishConnection         SPXListenForSequencedPacket
  567.         SPXGetConnectionStatus         SPXSendSequencedPacket
  568.         SPXInitialise                  SPXTerminateConnection
  569.  
  570.  
  571.                                                                                 
  572. Netware C Library          Chapter One - Introduction                  Page: 1-4
  573. ────────────────────────────────────────────────────────────────────────────────
  574.  
  575.     Synchronisation Services:
  576.  
  577.         CloseSemaphore                 SignalSemaphore
  578.         ExamineSemaphore               WaitOnSemaphore
  579.         OpenSemaphore
  580.  
  581.     Queue Management Services:
  582.  
  583.         AbortServicingQueueJobAndFile  FinishServicingQueueJobAndFile
  584.         AttachQueueServerToQueue       GetQueueJobList
  585.         ChangeQueueJobEntry            GetQueueJobsFileSize
  586.         ChangeQueueJobPosition         ReadQueueCurrentStatus
  587.         ChangeToClientRights           ReadQueueJobEntry
  588.         CloseFileAndAbortQueueJob      ReadQueueServerCurrentStatus
  589.         CloseFileAndStartQueueJob      RemoveJobFromQueue
  590.         CreateQueue                    RestoreQueueServerRights
  591.         CreateQueueJobAndFile          ServiceQueueJobAndOpenFile
  592.         DestroyQueue                   SetQueueCurrentStatus
  593.         DetachQueueServerFromQueue     SetQueueServerCurrentStatus
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.                                                                                 
  632. Netware C Library          Chapter One - Introduction                  Page: 1-5
  633. ────────────────────────────────────────────────────────────────────────────────
  634.  
  635. 1.7 Using the libraries
  636.  
  637.     DOS:
  638.  
  639.         To use  the  library  functions  from  within  a  DOS application, the
  640.         following must be specified in your source code:
  641.  
  642.                #include "netware.h"
  643.  
  644.         and  your  object  files  must  be  linked  with  one of the following
  645.         libraries:
  646.  
  647.                BC2NWRES.LIB - Borland C++ v2.x Small Model Library
  648.                BC2NWREM.LIB - Borland C++ v2.x Medium Model Library
  649.                BC2NWREL.LIB - Borland C++ v2.x Large Model Library
  650.  
  651.                BC3NWRES.LIB - Borland C++ v3.x Small Model Library
  652.                BC3NWREM.LIB - Borland C++ v3.x Medium Model Library
  653.                BC3NWREL.LIB - Borland C++ v3.x Large Model Library
  654.  
  655.                MS6NWRES.LIB - Microsoft C v6.x Small Model Library
  656.                MS6NWREM.LIB - Microsoft C v6.x Medium Model Library
  657.                MS6NWREL.LIB - Microsoft C v6.x Large Model Library
  658.  
  659.                MS7NWRES.LIB - Microsoft C v7.x Small Model Library
  660.                MS7NWREM.LIB - Microsoft C v7.x Medium Model Library
  661.                MS7NWREL.LIB - Microsoft C v7.x Large Model Library
  662.  
  663.                TC2NWRES.LIB - Turbo C v2.x Small Model Library
  664.                TC2NWREM.LIB - Turbo C v2.x Medium Model Library
  665.                TC2NWREL.LIB - Turbo C v2.x Large Model Library
  666.  
  667.         The  medium  and  large  model  libraries  are  only supplied with the
  668.         registered version.
  669.  
  670.     Windows (Registered version only):
  671.  
  672.         To use the library  functions  from  within a Windows application, the
  673.         following must be specified in your source code:
  674.  
  675.                #define NETC_WIN
  676.                #include "netware.h"
  677.  
  678.         and  your object files must be linked the following Import library:
  679.  
  680.                NCLIBV35.LIB
  681.  
  682.         This will provide the link between your application and the windows
  683.         DLL:
  684.  
  685.                NCLIBV35.DLL
  686.  
  687.  
  688.  
  689.  
  690.  
  691.                                                                                 
  692. Netware C Library          Chapter One - Introduction                  Page: 1-6
  693. ────────────────────────────────────────────────────────────────────────────────
  694.  
  695. 1.8 Netware Data Types
  696.  
  697.     Netware  numeric  items  are  different  from  the  native  representation
  698.     internal to the PC.  Instead of integers being in low-high format  Netware
  699.     expects  them  to be in high-low format.  This means that the bytes of int
  700.     and long values will have to be swapped round.
  701.  
  702.     The following structures are declared in the header file "Netware.h":
  703.  
  704.          typedef unsigned long    dword;     /* four bytes */
  705.          typedef unsigned int     word;      /* two bytes */
  706.          typedef unsigned char    byte;      /* single byte */
  707.  
  708.          typedef struct { byte hi_byte;
  709.                           byte lo_byte;   } nw_int;
  710.  
  711.          typedef struct { byte hihi_byte;
  712.                           byte hilo_byte;
  713.                           byte lohi_byte;
  714.                           byte lolo_byte; } nw_long;
  715.  
  716.     And the  following  functions  are  provided  to  convert  between Netware
  717.     internal format and native PC format:
  718.  
  719.         PC int to Netware int:
  720.                void ConvertIntToNWInt(int in,nw_int *convert);
  721.  
  722.         PC long to Netware long:
  723.                void ConvertLongToNWLong(unsigned long in,nw_long *convert);
  724.  
  725.         Netware int to PC int:
  726.                int ConvertNWIntToInt(nw_int in);
  727.  
  728.         Netware long to PC long:
  729.                long ConvertNWLongToLong(nw_long *in);
  730.  
  731. 1.9 Date/Time formats
  732.  
  733.     The following structures are used by the library routines to hold date and
  734.     time values:
  735.  
  736.          typedef struct { unsigned char hours;   /* Hours */
  737.                           unsigned char minutes; /* Minutes */
  738.                           unsigned char seconds; /* Seconds */
  739.                         } nw_time;
  740.  
  741.          typedef struct { unsigned int   year;   /* Year */
  742.                           unsigned char  month;  /* Month (1 = Jan) */
  743.                           unsigned char  day;    /* Day (1 to 31) */
  744.                         } nw_date;
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.                                                                                 
  752. Netware C Library          Chapter One - Introduction                  Page: 1-7
  753. ────────────────────────────────────────────────────────────────────────────────
  754.  
  755. 1.10 Contacting the Author
  756.  
  757.     The author, Adrian Cunnelly, can be contacted by letter post at:
  758.  
  759.                 18 Kingsley Avenue,
  760.                 Heaton Norris,
  761.                 Stockport,
  762.                 Cheshire.
  763.                 SK4 1PW
  764.                 United Kingdom
  765.  
  766.     or by email to:  adrian@amcsoft.demon.co.uk
  767.  
  768. Netware C Library        Chapter Two - Bindery Services                Page: 2-1
  769. ────────────────────────────────────────────────────────────────────────────────
  770.  
  771.                              2. Bindery Services
  772.  
  773.     The bindery is  basically  a  database,   maintained  by  the Netware file
  774.     server, of the resources and users available on the network.   It consists
  775.     of objects and properties.   An object can be a user,group  or  any  other
  776.     entity  on  the network that has been given a name.   Each object can have
  777.     many properties  associated  with  it,   and  each  property  may  have an
  778.     associated value.
  779.                           ┌────────────┐
  780.                           │   Object   │
  781.                           └─────┬──────┘
  782.                ┌────────────────┼────────────────┐
  783.         ┌──────┴──────┐  ┌──────┴──────┐  ┌──────┴──────┐
  784.         │  Property   │  │  Property   │  │  Property   │
  785.         └──────┬──────┘  └──────┬──────┘  └──────┬──────┘
  786.         ┌──────┴──────┐  ┌──────┴──────┐  ┌──────┴──────┐
  787.         │ Prop Value  │  │ Prop Value  │  │ Prop Value  │
  788.         └─────────────┘  └─────────────┘  └─────────────┘
  789.  
  790. 2.1 Bindery Objects
  791.  
  792.     Each bindery object consists of:  object ID,  object type,   object  name,
  793.     object  flag,  object security,  and properties flag.   The object ID is a
  794.     4-byte unique identifier assigned by  Netware  when the object is created.
  795.     The object type and object name uniquely identify the object.   The object
  796.     flag indicates whether the object  is  dynamic  or  static.    The  object
  797.     security  determines whether other objects can access it.   The properties
  798.     flag indicates whether the object has any properties associated with it.
  799.  
  800.     2.1.1 Object Type
  801.  
  802.         The following object types are currently recognised by Netware:
  803.  
  804.             Description                 Object Type       #define in Netware.h
  805.  
  806.             Unknown                     0x0000            UNKNOWN
  807.             User                        0x0001            USER
  808.             User Group                  0x0002            USER_GROUP
  809.             Print Queue                 0x0003            PRINT_Q
  810.             File Server                 0x0004            FILE_SERVER
  811.             Job Server                  0x0005            JOB_SERVER
  812.             Gateway                     0x0006            GATEWAY
  813.             Print Server                0x0007            PRN_SERVER
  814.             Archive Queue               0x0008            ARCHIVE_Q
  815.             Archive Server              0x0009            ARC_SERVER
  816.             Job Queue                   0x000a            JOB_Q
  817.             Administration              0x000b            ADMIN
  818.             Remote Bridge Server        0x0026            REM_BRIDGE
  819.             Advertising Print Server    0x0047            ADV_PRN_SERVER
  820.             Reserved up to              0x8000
  821.             Wild                        0xffff (-1)       WILDCARD
  822.  
  823.  
  824.  
  825.  
  826.  
  827.                                                                                 
  828. Netware C Library        Chapter Two - Bindery Services                Page: 2-2
  829. ────────────────────────────────────────────────────────────────────────────────
  830.  
  831.     2.1.2 Object Name
  832.  
  833.         The object name contains a  48-byte null terminated string.   The name
  834.         can be 1  -  47  characters  long  and  must  contain  only  printable
  835.         characters,   it  cannot  include  spaces or the following characters:
  836.         slash (/),  backslash  (\),   colon  (:),   semicolon (;),  comma (,),
  837.         asterisk (*) and question mark (?).
  838.  
  839.     2.1.3 Object Flag
  840.  
  841.         The object flag specifies whether  the  object  is  Static  (0x00)  or
  842.         Dynamic (0x01).  A static object is permanent until it is specifically
  843.         deleted,   but a dynamic object will disappear when the file server is
  844.         rebooted.
  845.  
  846.     2.1.4 Object Security
  847.  
  848.         The object security specifies who has access rights to the object,  it
  849.         consists of 1 byte where  the  low-order nibble (bottom 4 bits) define
  850.         the read access and the high-order nibble  (top  4  bits)  define  the
  851.         write access.  The following are defined for each nibble:
  852.  
  853.             Binary   Access     Description
  854.             0 0 0 0  Anyone     Access allowed to all users
  855.             0 0 0 1  Logged     Access to all logged in users
  856.             0 0 1 0  Object     Access only to users who have logged in
  857.                                 with this object name,type and password
  858.             0 0 1 1  Supervisor Access only to supervisor users
  859.             0 1 0 0  Netware    Access only allowed by Netware itself
  860.  
  861.     2.1.5 Properties flag
  862.  
  863.         The  properties  flag  is  an  indicator which is set if there are any
  864.         properties associated with this object.
  865.  
  866. 2.2 Properties and their Values
  867.  
  868.     Properties are either Item Properties or Set Properties.  An item property
  869.     has associated with it  a  128  byte  value,   whereas  a set property has
  870.     associated with it a list of 1 to 32 object IDs contained in  a  128  byte
  871.     segment.
  872.  
  873.     Each  property  consists  of:   property  name,  property flags,  property
  874.     security and property values flag.
  875.  
  876.     2.2.1 Property Name
  877.  
  878.         The property  name  can  be  1  to  15  characters  long  of which the
  879.         following are currently defined by Netware:
  880.  
  881.                 LOGIN_CONTROL       Item            ACCOUNT_SERVERS     Set
  882.                 ACCOUNT_BALANCE     Item            SECURITY_EQUALS     Set
  883.                 PASSWORD            Item            GROUP_MEMBERS       Set
  884.                 NET_ADDRESS         Item            GROUPS_I'M_IN       Set
  885.                 IDENTIFICATION      Item            OPERATORS           Set
  886.                 USER_DEFAULTS       Item
  887.                                                                                 
  888. Netware C Library        Chapter Two - Bindery Services                Page: 2-3
  889. ────────────────────────────────────────────────────────────────────────────────
  890.  
  891.     2.2.2 Property Flag
  892.  
  893.         The property flags is a 1 byte field, where only 2 bits are defined:
  894.  
  895.             Bits    7 6 5 4 3 2 1 0
  896.                     - - - - - - - 0  The property is static
  897.                     - - - - - - - 1  The property is dynamic
  898.                     - - - - - - 0 -  The property is an item
  899.                     - - - - - - 1 -  The property is a set
  900.  
  901.     2.2.3 Property Security
  902.  
  903.         The property security specifies who has access rights to the property,
  904.         it consists of 1 byte where  the  low-order  nibble  (bottom  4  bits)
  905.         defines  who  can  scan  for  and find the property and the high-order
  906.         nibble (top 4 bits) defines who  can add values to the property.   The
  907.         following are defined for each nibble:
  908.  
  909.             Binary   Access     Description
  910.             0 0 0 0  Anyone     Access allowed to all users
  911.             0 0 0 1  Logged     Access to all logged in users
  912.             0 0 1 0  Object     Access only to users who have logged in
  913.                                 with this object name,type and password
  914.             0 0 1 1  Supervisor Access only to supervisor users
  915.             0 1 0 0  Netware    Access only allowed by Netware itself
  916.  
  917.     2.2.4 Property Values Flag
  918.  
  919.         The property values flag is an indicator which is set if there are any
  920.         values associated with this property.
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.                                                                                 
  948. Netware C Library        Chapter Two - Bindery Services                Page: 2-4
  949. ────────────────────────────────────────────────────────────────────────────────
  950.  
  951. 2.3 Bindery Functions
  952.  
  953.     2.3.1 AddBinderyObjectToSet
  954.  
  955.           Adds a bindery object to a set property.
  956.  
  957.           int AddBinderyObjectToSet(int objectType,char *objectName,
  958.               char *propertyName,int memberType,char *memberName);
  959.  
  960.           Input:
  961.              objectType:     Bindery object type of property owner
  962.              objectName:     48-byte null terminated Object Name of property
  963.                              owner
  964.              propertyName:   16-byte null terminated Property Name
  965.              memberType:     Bindery object type of object to add to the set
  966.              memberName:     48-byte null terminated Object name of object
  967.                              to add to the set
  968.  
  969.           Returns:           Result code (see Appendix I)
  970.  
  971.     2.3.2 ChangeBinderyObjectPassword
  972.  
  973.           Changes the password  of  a  bindery  object.   The password will be
  974.           automatically encrypted by this call, if encrypted passwords  are in
  975.           use.
  976.  
  977.           int ChangeBinderyObjectPassword(int objectType,char *objectName,
  978.               char *oldPassword,char *newPassword);
  979.  
  980.           Input:
  981.              objectType:    Bindery object type
  982.              objectName:    48-byte null terminated Object Name
  983.              oldPassword:   128-byte null terminated old password, this can
  984.                             be a null string if the current bindery user is
  985.                             supervisor equivalent.
  986.              newPassword:   128-byte null terminated new password
  987.  
  988.           Returns:          Result code (see Appendix I)
  989.  
  990.     2.3.3 ChangeBinderyObjectSecurity
  991.  
  992.           Allows the supervisor to change the security of a bindery object.
  993.  
  994.           int ChangeBinderyObjectSecurity(byte newSecurity,int objectType,
  995.               char *objectName);
  996.  
  997.           Input:
  998.              newSecurity:   The new security setting for this object
  999.              objectType:    Bindery object type
  1000.              objectName:    48-byte null terminated Object Name
  1001.  
  1002.           Returns:          Result code (see Appendix I)
  1003.  
  1004.  
  1005.  
  1006.  
  1007.                                                                                 
  1008. Netware C Library        Chapter Two - Bindery Services                Page: 2-5
  1009. ────────────────────────────────────────────────────────────────────────────────
  1010.  
  1011.     2.3.4 ChangePropertySecurity
  1012.  
  1013.           Changes the security of a bindery objects property.
  1014.  
  1015.           int ChangePropertySecurity(int objectType,char *objectName,
  1016.               byte newPropSecurity,char *propName);
  1017.  
  1018.           Input:
  1019.              objectType:       Bindery object type
  1020.              objectName:       48-byte null terminated Object Name
  1021.              newPropSecurity:  The new property security
  1022.              propName:         16-byte null terminated Property name
  1023.  
  1024.           Returns:             Result code (see Appendix I)
  1025.  
  1026.     2.3.5 CloseBindery                                            (Supervisor)
  1027.  
  1028.           Allows the supervisor to  close  the  bindery, it closes all bindery
  1029.           files.  Whilst the bindery is closed no other bindery calls  can  be
  1030.           serviced,  so  the time spent with the bindery closed should be kept
  1031.           to a minimum.
  1032.  
  1033.           int CloseBindery(void);
  1034.  
  1035.           Returns:        Result code (see Appendix I)
  1036.  
  1037.     2.3.6 CreateBinderyObject                                     (Supervisor)
  1038.  
  1039.           Allows the supervisor to create a bindery object.
  1040.  
  1041.           int CreateBinderyObject(byte flag,byte security,int objectType,
  1042.               char *objectName);
  1043.  
  1044.           Input:
  1045.              flag:          Specifies whether static (0x00) or dynamic (0x01)
  1046.              security:      Security setting for this object
  1047.              objectType:    Bindery object type
  1048.              objectName:    48-byte null terminated Object name
  1049.  
  1050.           Returns:          Result code (see Appendix I)
  1051.  
  1052.     2.3.7 CreateProperty
  1053.  
  1054.           Adds a property to a bindery object.
  1055.  
  1056.           int CreateProperty(int objectType,char *objectName,
  1057.               byte propFlags,byte propSecurity,char *propName);
  1058.  
  1059.           Input:
  1060.              objectType:    Bindery object type
  1061.              objectName:    48-byte null terminated Object name
  1062.              propFlags:     Property flags (static/dynamic & item/set)
  1063.              propSecurity:  Security setting for this property
  1064.              propName:      16-byte null terminated Property name
  1065.  
  1066.           Returns:          Result code (see Appendix I)
  1067.                                                                                 
  1068. Netware C Library        Chapter Two - Bindery Services                Page: 2-6
  1069. ────────────────────────────────────────────────────────────────────────────────
  1070.  
  1071.  
  1072.     2.3.8 DeleteBinderyObjectFromSet
  1073.  
  1074.           Deletes a bindery object from a set property.
  1075.  
  1076.           int DeleteBinderyObjectFromSet(int objectType,char *objectName,
  1077.               char *propertyName,int memberType,char *memberName);
  1078.  
  1079.           Input:
  1080.              objectType:    Bindery object type of property owner
  1081.              objectName:    48-byte null terminated Object name of property
  1082.                             owner
  1083.              propertyName:  16-byte null terminated Set Property name
  1084.              memberType:    Bindery object type of object to remove from set
  1085.              memberName:    48-byte null terminated Object name of object
  1086.                             to remove from set
  1087.  
  1088.           Returns:          Result code (see Appendix I)
  1089.  
  1090.     2.3.9  DeleteBinderyObject                                    (Supervisor)
  1091.  
  1092.           Allows the supervisor to delete a bindery object.
  1093.  
  1094.           int DeleteBinderyObject(int objectType,char *objectName);
  1095.  
  1096.           Input:
  1097.              objectType:    Bindery object type
  1098.              objectName:    48-byte null terminated Object name
  1099.  
  1100.           Returns:           Result code (see Appendix I)
  1101.  
  1102.     2.3.10 DeleteProperty
  1103.  
  1104.           Deletes a property from a bindery object.
  1105.  
  1106.           int DeleteProperty(int objectType,char *objectName,char *propName);
  1107.  
  1108.           Input:
  1109.              objectType:    Bindery object type
  1110.              objectName:    48-byte null terminated Object name
  1111.              propName:      16-byte null terminated Property name
  1112.  
  1113.           Returns:           Result code (see Appendix I)
  1114.  
  1115.     2.3.11 GetBinderyAccessLevel
  1116.  
  1117.           Returns the current users access level to the server's bindery.
  1118.  
  1119.           int GetBinderyAccessLevel(long *objectID,byte *accessLevel);
  1120.  
  1121.           Output:
  1122.              objectID:       Returns Bindery object ID of logged in user
  1123.              accessLevel:    Returns Bindery access level of logged in user.
  1124.                              See Object Security above.
  1125.  
  1126.           Returns:           Result code (see Appendix I)
  1127.                                                                                 
  1128. Netware C Library        Chapter Two - Bindery Services                Page: 2-7
  1129. ────────────────────────────────────────────────────────────────────────────────
  1130.  
  1131.     2.3.12 GetBinderyObjectID
  1132.  
  1133.           Returns a bindery object's identification number.
  1134.  
  1135.           int GetBinderyObjectID(int objectType,char *objectName,
  1136.               long *objectID);
  1137.  
  1138.           Input:
  1139.              objectType:    Bindery object type
  1140.              objectName:    48-byte null terminated Object name
  1141.  
  1142.           Output:
  1143.              objectID:      Returns ID number of specified object.
  1144.  
  1145.           Returns:          Result code (see Appendix I)
  1146.  
  1147.     2.3.13 GetBinderyObjectName
  1148.  
  1149.           Returns the type and name of the specified object.
  1150.  
  1151.           int GetBinderyObjectName(long objectID,int *objectType,
  1152.               char *objectName);
  1153.  
  1154.           Input:
  1155.              objectID:   Bindery object identification number.
  1156.  
  1157.           Output:
  1158.              objectType: Returns bindery object type.
  1159.              objectName: Returns 48-byte null terminated Bindery object name.
  1160.  
  1161.           Returns:       Result code (see Appendix I)
  1162.  
  1163.     2.3.14 IsBinderyObjectInSet
  1164.  
  1165.           Determines if a bindery object is a  member  of  the  specified  set
  1166.           property.
  1167.  
  1168.           int IsBinderyObjectInSet(int objectType,char *objectName,
  1169.               char *propertyName,int memberType,char *memberName);
  1170.  
  1171.           Input:
  1172.              objectType:    Bindery object type of property owner
  1173.              objectName:    48-byte null terminated Object Name of property
  1174.                             owner
  1175.              propertyName:  16-byte null terminated Property Name
  1176.              memberType:    Bindery object type of object to check
  1177.              memberName:    48-byte null terminated Object name of object to
  1178.                             check
  1179.  
  1180.           Returns:          Result code (see Appendix I)
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.                                                                                 
  1188. Netware C Library        Chapter Two - Bindery Services                Page: 2-8
  1189. ────────────────────────────────────────────────────────────────────────────────
  1190.  
  1191.     2.3.15 OpenBindery                                            (Supervisor)
  1192.  
  1193.           Allows the supervisor to open the  bindery, it opens all the bindery
  1194.           files.  The bindery files are normally kept open and locked, so this
  1195.           function is only needed following a call to CloseBindery.
  1196.  
  1197.           int OpenBindery(void);
  1198.  
  1199.           Returns:        Result code (see Appendix I)
  1200.  
  1201.     2.3.16 ReadPropertyValue
  1202.  
  1203.           Returns the value of a bindery objects property.  This function must
  1204.           be  called  repeatedly  to  return  all  values  associated  with  a
  1205.           particular property.
  1206.  
  1207.           int ReadPropertyValue(int objectType,char *objectName,
  1208.               char *propertyName,int segment,char *propertyValues,
  1209.               byte *moreSegments,byte *propertyFlag);
  1210.  
  1211.           Input:
  1212.              objectType:     Bindery object type
  1213.              objectName:     48-byte null terminated Object name
  1214.              propertyName:   16-byte null terminated Property name
  1215.              segment:        The first time this call is made 1 should be
  1216.                              placed in this field, it should then be increased
  1217.                              by 1 for each subsequent call until the call sets
  1218.                              the more_segments field to 0 or a result code
  1219.                              of 0xec (No such segment) is returned.
  1220.  
  1221.           Output:
  1222.              propertyValues: Returns the 128-byte property value.
  1223.              moreSegments:   Returns if there are any more property values
  1224.                              to be read:
  1225.                                            0 = No more, 0xff = More.
  1226.              propertyFlag:   Returns property flag.
  1227.                              See definition of Properties.
  1228.  
  1229.           Returns:           Result code (see Appendix I)
  1230.  
  1231.     2.3.17 RenameBinderyObject                                    (Supervisor)
  1232.  
  1233.           Allows the supervisor to rename a bindery object.
  1234.  
  1235.           int RenameBinderyObject(int objectType,char *objectName,
  1236.               char *newObjectName);
  1237.  
  1238.           Input:
  1239.              objectType:       Bindery object type
  1240.              objectName:       48-byte null terminated original bindery
  1241.                                object name
  1242.              newObjectName:    48-byte null terminated new bindery object name
  1243.  
  1244.           Returns:             Result code (see Appendix I)
  1245.  
  1246.  
  1247.                                                                                 
  1248. Netware C Library        Chapter Two - Bindery Services                Page: 2-9
  1249. ────────────────────────────────────────────────────────────────────────────────
  1250.  
  1251.     2.3.18 ScanBinderyObject
  1252.  
  1253.           Searches the bindery for the  specified  object.  This can be called
  1254.           iteratively in order to scan the bindery for several  objects  of  a
  1255.           particular type.
  1256.  
  1257.           int ScanBinderyObject(int scanObjectType,char *scanObjectName,
  1258.               long *lastObjectID,int *objectType,char *objectName,
  1259.               byte *objectHasProperties,byte *objectSecurity,
  1260.               byte *objectFlag);
  1261.  
  1262.           Input:
  1263.              scanObjectType:         Type of object to scan for.  This can be
  1264.                                      one particular type, e.g. USER 0x0001, or
  1265.                                      all object types, e.g. WILDCARD 0xffff.
  1266.              scanObjectName:         48-byte  null terminated object name  for
  1267.                                      which  the call  should scan.  The object
  1268.                                      name can contain wildcard characters.
  1269.  
  1270.           Output:
  1271.              lastObjectID:           Returns id of object found, this should
  1272.                                      be set to -1 on the first call to this
  1273.                                      procedure.
  1274.              objectType:             Returns type of object found
  1275.              objectName:             Returns 48-byte null terminated name of
  1276.                                      object found
  1277.              objectHasProperties:    Returns whether the object has any
  1278.                                      properties:
  1279.                                          0x00 = No properties associated
  1280.                                          0xff = There are some properties
  1281.              objectSecurity:         Returns access security bits.
  1282.                                      See Object Security in definition of
  1283.                                      Bindery Objects.
  1284.              objectFlag:             Returns object flag:
  1285.                                          0x00 = Object is Static
  1286.                                          0x01 = Object is Dynamic
  1287.  
  1288.           Returns:                   Result code (see Appendix I)
  1289.  
  1290.     2.3.19 ScanProperty
  1291.  
  1292.           Searches for an objects property.
  1293.  
  1294.           int ScanProperty(int objectType,char *objectName,
  1295.               char *scanPropertyName,long *lastSequence,
  1296.               char *propertyName,byte *propertyFlags,byte *propertySecurity,
  1297.               byte *propertyHasValue,byte *moreProperties);
  1298.  
  1299.           Input:
  1300.              objectType:        Bindery object type
  1301.              objectName:        48-byte null terminated Object name
  1302.              scanPropertyName:  16-byte null terminated property name to
  1303.                                 scan for
  1304.  
  1305.  
  1306.  
  1307.                                                                                 
  1308. Netware C Library        Chapter Two - Bindery Services               Page: 2-10
  1309. ────────────────────────────────────────────────────────────────────────────────
  1310.  
  1311.           Output:
  1312.              lastSequence:      Returns the sequence number of the last
  1313.                                 property found. This should be set to -1 on
  1314.                                 the first call to this procedure.
  1315.              propertyName:      Returns 16-byte null terminated name of
  1316.                                 the property found
  1317.              propertyFlags:     Returns property flag.
  1318.              propertySecurity:  Returns property access bits.
  1319.              propertyHasValue:  0x00 = No values associated
  1320.                                 0xff = This property has some values
  1321.              moreProperties:    0x00 = No more properties
  1322.                                 0xff = Yes there are more properties
  1323.  
  1324.           Returns:              Result code (see Appendix I)
  1325.  
  1326.     2.3.20 VerifyBinderyObjectPassword
  1327.  
  1328.           Verifies that the specified password  matches the actual password of
  1329.           the specified bindery object.  The password  will  be  automatically
  1330.           encrypted by this call, if encrypted passwords are in use.
  1331.  
  1332.           int VerifyBinderyObjectPassword(int objectType,char *objectName,
  1333.               char *password);
  1334.  
  1335.           Input:
  1336.              objectType:    Bindery object type
  1337.              objectName:    48-byte null terminated Object name
  1338.              password:      128-byte null terminated Password to verify
  1339.  
  1340.           Returns:          Result code (see Appendix I)
  1341.  
  1342.     2.3.21 WritePropertyValue
  1343.  
  1344.           Writes  a  value  to  a  property.   Property  values  are stored in
  1345.           128-byte segments known  as  value  segments.  Before creating value
  1346.           segment n, segments 1 through n-1 must be created.
  1347.  
  1348.           This call must not be  used  to  write  values  to  Set  Properties,
  1349.           instead use AddBinderyObjectToSet.
  1350.  
  1351.           int WritePropertyValue(int objectType,char *objectName,
  1352.               int segment,byte eraseRemaining,char *propName,byte *value);
  1353.  
  1354.           Input:
  1355.              objectType:     Bindery object type
  1356.              objectName:     48-byte null terminated Object name
  1357.              segment:        Segment number to write
  1358.              eraseRemaining: This specifies whether any segments that exist
  1359.                              after this segment are to be deleted.
  1360.                                  0x00 = Erase all following segments
  1361.                                  0xff = Do not erase following segments
  1362.              propName:       16-byte null terminated Name of property to
  1363.                              amend
  1364.              value:          128-byte value segment to write
  1365.  
  1366.           Returns:           Result code (see Appendix I)
  1367.                                                                                 
  1368. Netware C Library     Chapter Three - File Server Services             Page: 3-1
  1369. ────────────────────────────────────────────────────────────────────────────────
  1370.  
  1371.                      3. File Server Environment Services
  1372.  
  1373.     These services allow an application to return information about  the  file
  1374.     system,   transaction  tracking  system,   physical disks,  disk channels,
  1375.     volumes,  disk caches etc.    In  fact  it  provides many of the functions
  1376.     performed by FCONSOLE.   Most of the calls in this section require  either
  1377.     Operator or Supervisor rights.
  1378.  
  1379.  
  1380. 3.1 File Server Functions
  1381.  
  1382.     3.1.1 CheckConsolePrivileges
  1383.  
  1384.           This  call  returns  whether  the current logged in user has console
  1385.           operator rights.
  1386.  
  1387.           int CheckConsolePrivileges(void);
  1388.  
  1389.           Returns:    0x00    Successful (has operator rights)
  1390.                       0xc6    No console rights
  1391.  
  1392.     3.1.2 ClearConnectionNumber                                   (Supervisor)
  1393.  
  1394.           This clears a logical connection from  the file server.  It closes a
  1395.           connections open files and release any file locks.  On  a  TTS  file
  1396.           server it causes a connections transactions to be aborted.
  1397.  
  1398.           int ClearConnectionNumber(int connection);
  1399.  
  1400.           Input:
  1401.              connection:     Contains the connection number of the workstation
  1402.                              that is to be cleared.
  1403.  
  1404.           Returns:           Result code (see Appendix I)
  1405.  
  1406.     3.1.3 ConvertPathToDirectoryEntry
  1407.  
  1408.           Returns the volume number and directory entry for a specified path.
  1409.  
  1410.           int ConvertPathToDirectoryEntry(byte directoryHandle,
  1411.               char *directoryPath,word *volumeNumber,dword *dirEntryNumber);
  1412.  
  1413.           Input:
  1414.              directoryHandle: An optional directory handle, pointing to an
  1415.                               entry in the servers Directory Handle Table.
  1416.                               If "directoryPath" contains the full pathname
  1417.                               then this must be 0x00.
  1418.              directoryPath:   256-byte null terminated directory path name.
  1419.                               This can either be a full path name, i.e.
  1420.                               VOLUME:DIR\..\DIR or a partial name containing
  1421.                               at least a directory name.
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.                                                                                 
  1428. Netware C Library     Chapter Three - File Server Services             Page: 3-2
  1429. ────────────────────────────────────────────────────────────────────────────────
  1430.  
  1431.           Output:
  1432.              volumeNumber:    Returns the volume number containing the
  1433.                               directory.
  1434.              directoryEntry:  Returns the offset in the servers Directory
  1435.                               Entry Table.
  1436.  
  1437.           Returns:            Result code (see Appendix I)
  1438.  
  1439.     3.1.4 DisableFileServerLogin                                    (Operator)
  1440.  
  1441.           This disables all future logins to the default file server.
  1442.  
  1443.           int DisableFileServerLogin(void);
  1444.  
  1445.           Returns:        Result code (see Appendix I)
  1446.  
  1447.     3.1.5 DisableTransactionTracking                                (Operator)
  1448.  
  1449.           Disable  transaction tracking on the default file server.  It has no
  1450.           effect if TTS is not installed.
  1451.  
  1452.           int DisableTransactionTracking(void);
  1453.  
  1454.           Returns:        Result code (see Appendix I)
  1455.  
  1456.     3.1.6 DownFileServer                                          (Supervisor)
  1457.  
  1458.           Close down the file server.
  1459.  
  1460.           int DownFileServer(int forceIt);
  1461.  
  1462.           Input:
  1463.              forceIt:    0x00 = Do not close down if there are any open files
  1464.                          0x01 = Force close down regardless of any open files
  1465.  
  1466.           Returns:       Result code (see Appendix I)
  1467.  
  1468.     3.1.7 EnableFileServerLogin                                     (Operator)
  1469.  
  1470.           Enable logins on the default file server.
  1471.  
  1472.           int EnableFileServerLogin(void);
  1473.  
  1474.           Returns:        Result code (see Appendix I)
  1475.  
  1476.     3.1.8 EnableTransactionTracking                                 (Operator)
  1477.  
  1478.           Enable transaction tracking on the default file server.
  1479.  
  1480.           int EnableTransactionTracking(void);
  1481.  
  1482.           Returns:        Result code (see Appendix I)
  1483.  
  1484.  
  1485.  
  1486.  
  1487.                                                                                 
  1488. Netware C Library     Chapter Three - File Server Services             Page: 3-3
  1489. ────────────────────────────────────────────────────────────────────────────────
  1490.  
  1491.     3.1.9 GetBinderyObjectDiskSpaceLeft
  1492.  
  1493.           Return a bindery objects remaining disk space.
  1494.  
  1495.           int GetBinderyObjectDiskSpaceLeft(long objectID,
  1496.               long *systemElapsedTime,long *unusedDiskBlocks,
  1497.               byte *restrictionsEnforced);
  1498.  
  1499.           Input:
  1500.              objectID:             Bindery object identification number, this
  1501.                                    must be the currently logged in object,
  1502.                                    unless the logged object has console
  1503.                                    operator rights.
  1504.  
  1505.           Output:
  1506.              systemElapsedTime:    Returns time that has elapsed since the
  1507.                                    server was loaded, in clock ticks. Where
  1508.                                    18.2 ticks = 1 second approx. When this
  1509.                                    field reaches 0xFFFFFFFF it wraps back to
  1510.                                    zero.
  1511.              unusedDiskBlocks:     Returns the number of remaining blocks the
  1512.                                    bindery object can allocate (1 block=4,096
  1513.                                    bytes). The unused disk blocks available to
  1514.                                    a user do not reflect how much disk space
  1515.                                    is really available.
  1516.              restrictionsEnforced: Returns whether disk restrictions are
  1517.                                    active:
  1518.                                       0x00 = Disk resource limit is active
  1519.                                       0xff = Disk resource limit is not active
  1520.  
  1521.           Returns:                 Result code (see Appendix I)
  1522.  
  1523.     3.1.10 GetConnectionsOpenFiles                                  (Operator)
  1524.  
  1525.           Returns information  about  files  a  specific  connection has open.
  1526.  
  1527.           int GetConnectionsOpenFiles(int connection,int maxEntries,
  1528.               OPEN_FILES_INFO *openFiles,int *fileCount);
  1529.  
  1530.           Input:
  1531.              connection:     Logical connection number
  1532.              maxEntries:     Contains the maximum number of elements that can
  1533.                              be returned.
  1534.  
  1535.           Output:
  1536.              openFiles:      Pointer to a row of OPEN_FILES_INFO structures
  1537.                              which will contain the details of the files that
  1538.                              the specified connection has open.
  1539.                              The structure is declared in "nwserver.h".
  1540.                              See Appendix III.
  1541.              fileCount:      Returns the total number of files that the
  1542.                              connection has open.
  1543.  
  1544.           Returns:           Result code (see Appendix I)
  1545.  
  1546.  
  1547.                                                                                 
  1548. Netware C Library     Chapter Three - File Server Services             Page: 3-4
  1549. ────────────────────────────────────────────────────────────────────────────────
  1550.  
  1551.     3.1.11 GetConnectionsUsageStatistics                            (Operator)
  1552.  
  1553.           Returns a logical  connection's  usage statistics.  Console operator
  1554.           rights are required unless the requesting  workstation's  connection
  1555.           number is used.
  1556.  
  1557.           This function is not supported in Netware 386.
  1558.  
  1559.           int GetConnectionsUsageStatistics(int connection,
  1560.               long *systemElapsedTime,double *bytesRead,
  1561.               double *bytesWritten,long *totalRequestPackets);
  1562.  
  1563.           Input:
  1564.              connection:          Logical connection number
  1565.  
  1566.           Output:
  1567.              systemElapsedTime:   Returns time that has elapsed since the
  1568.                                   server was loaded, in clock ticks. Where
  1569.                                   18.2 ticks = 1 second approx. When this
  1570.                                   field reaches 0xFFFFFFFF it wraps back to
  1571.                                   zero.
  1572.              bytesRead:           Returns the number of bytes that have been
  1573.                                   read since the workstation was logged in.
  1574.              bytesWritten:        Returns the number of bytes that have been
  1575.                                   written since the workstation was logged
  1576.                                   in.
  1577.              totalRequestPackets: Returns the number of request packets sent
  1578.                                   by the workstation to the server since the
  1579.                                   workstation attached.
  1580.  
  1581.           Returns:                Result code (see Appendix I)
  1582.  
  1583.     3.1.12 GetDiskCacheStatistics                                   (Operator)
  1584.  
  1585.           Return statistics from the default file servers cache software.
  1586.  
  1587.           int GetDiskCacheStatistics(DISK_CACHE_STATISTICS *buffer);
  1588.  
  1589.           Output:
  1590.              buffer:  Returns all cache statistics.
  1591.                       The structure is declared in "nwserver.h".
  1592.                       See Appendix III.
  1593.  
  1594.           Returns:    Result code (see Appendix I)
  1595.  
  1596.     3.1.13 GetDiskUtilisation
  1597.  
  1598.           Returns the disk usage of a bindery object on a volume.
  1599.  
  1600.           int GetDiskUtilisation(long objectID,byte volumeNumber,
  1601.               word *usedDirectories,word *usedFiles,word *usedBlocks);
  1602.  
  1603.           Input:
  1604.              objectID:        Bindery object identification number
  1605.              volumeNumber:    This identifies the volume in the Volume Table
  1606.                               on the file server
  1607.                                                                                 
  1608. Netware C Library     Chapter Three - File Server Services             Page: 3-5
  1609. ────────────────────────────────────────────────────────────────────────────────
  1610.  
  1611.           Output:
  1612.              usedDirectories: Returns the number of directories owned by the
  1613.                               bindery object.
  1614.              usedFiles:       Returns the number of files created by the
  1615.                               bindery object
  1616.              usedBlocks:      Returns the number of blocks used by "usedFiles"
  1617.  
  1618.           Returns:            Result code (see Appendix I)
  1619.  
  1620.     3.1.14 GetFileServerDateTime
  1621.  
  1622.           Returns the current date and time on the server.
  1623.  
  1624.           void GetFileServerDateTime(nw_time *time,nw_date *date,
  1625.                int *dayOfWeek);
  1626.  
  1627.           Output:
  1628.              time:       Current time, see chapter 1 for the structure format.
  1629.              date:       Current date, see chapter 1 for the structure format.
  1630.              dayOfWeek:  Returns the day of the Week (0 to 6, 0=Sunday)
  1631.  
  1632.     3.1.15 GetFileServerInformation
  1633.  
  1634.           Returns information about the default file server.
  1635.  
  1636.           int GetFileServerInformation(FILE_SERVER_INFO *info);
  1637.  
  1638.           Output:
  1639.              info:       Returned Information.
  1640.                          The Structure is declared in the header "nwserver.h".
  1641.                          See Appendix III.
  1642.  
  1643.           Returns:       Result code (see Appendix I)
  1644.  
  1645.     3.1.16 GetFileServerLoginStatus                                 (Operator)
  1646.  
  1647.           Returns the default file server's login status.
  1648.  
  1649.           int GetFileServerLoginStatus(int *loginEnabled);
  1650.  
  1651.           Output:
  1652.              loginEnabled:  Returns whether login is enabled (0xff) or
  1653.                             disabled (0x00).Logins can be disabled by calling
  1654.                             DisableFileServerLogin and subsequently enabled
  1655.                             with EnableFileServerLogin.
  1656.  
  1657.           Returns:          Result code (see Appendix I)
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.                                                                                 
  1668. Netware C Library     Chapter Three - File Server Services             Page: 3-6
  1669. ────────────────────────────────────────────────────────────────────────────────
  1670.  
  1671.     3.1.17 GetNetworkSerialNumber
  1672.  
  1673.           Returns the  default  file  server's  serial  number and application
  1674.           number.
  1675.  
  1676.           int GetNetworkSerialNumber(dword *serverSerialNumber ,
  1677.               word *appSerialNumber);
  1678.  
  1679.           Output:
  1680.              serverSerialNumber:  Returns the file server's serial number.
  1681.              appSerialNumber:     Returns the file server's application
  1682.                                   serial number.
  1683.  
  1684.           Returns:                Result code (see Appendix I)
  1685.  
  1686.     3.1.18 GetPathFromDirectoryEntry
  1687.  
  1688.           Returns  the  full  file  path associated with a specified directory
  1689.           entry number on a particular volume.
  1690.  
  1691.           int GetPathFromDirectoryEntry(byte nameSpace,byte volumeNumber,
  1692.               int directoryEntry,char *path);
  1693.  
  1694.           Input:
  1695.              nameSpace:      The name space to use. This value is ignored for
  1696.                              Netware 2.x.
  1697.              volumeNumber:   Volume number containing the directory.
  1698.              directoryEntry: The offset in the servers Directory Entry Table.
  1699.                              This is returned by GetConnectionsOpenFiles.
  1700.  
  1701.           Output:
  1702.              path:           Returns the 256-byte null terminated full file
  1703.                              path of the directory.
  1704.  
  1705.           Returns:           Result code (see Appendix I)
  1706.  
  1707.     3.1.19 GetPhysicalDiskStatistics                                (Operator)
  1708.  
  1709.           Returns information about a physical disk.
  1710.  
  1711.           int GetPhysicalDiskStatistics(byte physicalDiskNumber,
  1712.               PHYSICAL_DISK_STATISTICS *diskStats);
  1713.  
  1714.           Input:
  1715.              physicalDiskNumber: Physical number of the disk.
  1716.  
  1717.           Output:
  1718.              diskStats:          Returns structure containing the disk
  1719.                                  statistics.
  1720.                                  The structure is declared in the header file
  1721.                                  "nwserver.h".
  1722.                                  See Appendix III.
  1723.  
  1724.           Returns:               Result code (see Appendix I)
  1725.  
  1726.  
  1727.                                                                                 
  1728. Netware C Library     Chapter Three - File Server Services             Page: 3-7
  1729. ────────────────────────────────────────────────────────────────────────────────
  1730.  
  1731.     3.1.20 GetSemaphoreInformation                                  (Operator)
  1732.  
  1733.           This call returns information about the specified semaphore.
  1734.  
  1735.           int GetSemaphoreInformation( char *semaphoreName,word *openCount,
  1736.               int *semaphoreValue,int maxConnections,
  1737.               word *logicalConnections,word *taskNumbers,
  1738.               int *connectionCount);
  1739.  
  1740.           Input:
  1741.              semaphoreName:     The name of the semaphore for which
  1742.                                 information is to be retrieved.
  1743.              maxConnections:    Maximum number of elements in the logical
  1744.                                 connection and task number arrays.
  1745.  
  1746.           Output:
  1747.              openCount:         Returns the number of logical connections that
  1748.                                 have this semaphore open.
  1749.              semaphoreValue:    Returns the current value of the semaphore, in
  1750.                                 the range -127 to 127. A negative value is the
  1751.                                 number of applications that are currently
  1752.                                 waiting for the semaphore, a positive value is
  1753.                                 the number of applications that can still use
  1754.                                 the semaphore.
  1755.              logicalConnection: Pointer to a row of words that will contain
  1756.                                 the logical connections that are using the
  1757.                                 semaphore.
  1758.              taskNumber:        Pointer to a row of words that will contain
  1759.                                 the task numbers within the logical
  1760.                                 connections that have the semaphore open.
  1761.              connectionCount:   Total number of connections that have this
  1762.                                 semaphore open.
  1763.  
  1764.           Returns:              Result code (see Appendix I)
  1765.  
  1766.     3.1.21 SendConsoleBroadcast                                     (Operator)
  1767.  
  1768.           Send a message to a number of logical connections.
  1769.  
  1770.           int SendConsoleBroadcast(byte connectionCount,byte *connections,
  1771.               char *message );
  1772.  
  1773.           Input:
  1774.              connectionCount: Number of connections that are to receive the
  1775.                               message. If this is zero then all attached
  1776.                               workstations are broadcast to. Maximum number
  1777.                               of connections that can be broadcast is 100.
  1778.              connections:     List of connections to which message is to be
  1779.                               sent. Must contain "connectionCount" entries.
  1780.              message:         60-byte null terminated message to send to the
  1781.                               specified connections.
  1782.  
  1783.           Returns:            Result code (see Appendix I)
  1784.  
  1785.  
  1786.  
  1787.                                                                                 
  1788. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-1
  1789. ────────────────────────────────────────────────────────────────────────────────
  1790.  
  1791.                       4. Connection/Workstation Services
  1792.  
  1793.     These services allow  applications  to  connect  to  a  file server and to
  1794.     obtain information about current connections and the current workstation.
  1795.  
  1796. 4.1 Workstation Tables
  1797.  
  1798.     These are the various tables maintained by the workstation shell:
  1799.  
  1800.     4.1.1 File Server Name Table
  1801.  
  1802.           This  table  contains  the  name  of  each  file server to which the
  1803.           current workstation is attached.  There  are 8 entries each of which
  1804.           is 48 bytes in length.
  1805.  
  1806.     4.1.2 Connection ID Table
  1807.  
  1808.           This is used to manage connections with file servers.  There is  one
  1809.           entry for each attached file server.  The entries in the File Server
  1810.           Name Table correspond to entries in this table.  See the description
  1811.           of the CONNECTION_ID_TABLE structure in appendix III of this manual.
  1812.  
  1813.     4.1.3 Drive Flag Table
  1814.  
  1815.           This table contains a flag for each workstation drive that indicates
  1816.           the type of drive it is mapped to.  There are 32 1-byte entries, one
  1817.           for each drive letter (A to Z) and one for each temporary drive:
  1818.  
  1819.                      [   (left square bracket)
  1820.                      \   (backslash)
  1821.                      ]   (right square bracket)
  1822.                      ^   (caret)
  1823.                      _   (underline)
  1824.                      '   (apostrophe)
  1825.  
  1826.           Each slot in the table contains a value which defines  the  type  of
  1827.           drive:
  1828.  
  1829.                      0x00  Not allocated
  1830.                      0x01  Permanent Network drive
  1831.                      0x02  Temporary Network drive
  1832.                      0x80  Local drive
  1833.                      0x81  Local drive allocated as a permanent network drive
  1834.                      0x82  Local drive allocated as a temporary network drive
  1835.  
  1836.     4.1.4 Drive Connection ID Table
  1837.  
  1838.           This  table  indicates  which  server each drive is mapped to.  Each
  1839.           entry contains a server connection number, 0 to 8, which is an index
  1840.           into the Connection ID Table, a  value of 0 indicates that the drive
  1841.           is not mapped.  There are 32 1-byte  entries,  one  for  each  drive
  1842.           letter (A to Z) and one for each temporary drive ([\]^_').
  1843.  
  1844.  
  1845.  
  1846.  
  1847.                                                                                 
  1848. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-2
  1849. ────────────────────────────────────────────────────────────────────────────────
  1850.  
  1851.     4.1.5 Drive Handle Table
  1852.  
  1853.           This  table  holds  the  file server directory handles to which each
  1854.           drive is mapped.  Local and  unallocated drives do not have entries.
  1855.           There are 32 1-byte entries, one for each drive letter (A to Z)  and
  1856.           one  for  each  temporary  drive  ([\]^_'),  each  entry  contains a
  1857.           directory handle.
  1858.  
  1859. 4.2 Multiple Servers
  1860.  
  1861.     When multiple file servers are used,  then the following algorithm is used
  1862.     by Netware to determine which server to send the request to.
  1863.  
  1864.         1)  If  the  function  call requires a drive letter or a connection ID
  1865.             then the Server to which this points is used.
  1866.  
  1867.         2)  If a preferred file server has been set using a call to
  1868.             SetPreferredConnectionID, then send the request to this server.
  1869.  
  1870.         3)  If the default drive is a network drive, then send the request
  1871.             to the server associated with this drive.
  1872.  
  1873.         4)  Send the request to the primary server, which is the server the
  1874.             workstation is logged into unless changed by a call to
  1875.             SetPrimaryConnectionID.
  1876.  
  1877.         5)  Send the request to the first server in the Server Name Table.
  1878.             This is only if the connection to the primary server has been
  1879.             lost.
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.                                                                                 
  1908. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-3
  1909. ────────────────────────────────────────────────────────────────────────────────
  1910.  
  1911. 4.3 Connection Functions
  1912.  
  1913.     4.3.1 AttachToFileServer
  1914.  
  1915.           Attaches  the  workstation  to   the  specified  file  server.   The
  1916.           workstation must already be logged into at least one server, and can
  1917.           be attached to as many as eight.
  1918.  
  1919.           int AttachToFileServer(char *serverName,int *conectionID);
  1920.  
  1921.           Input:
  1922.              serverName:     Name of server to which the current workstation
  1923.                              is to attach.
  1924.  
  1925.           Output:
  1926.              connectionID:   Returns the position in the File Server Name
  1927.                              Table (1 to 8) allocated to this server.
  1928.  
  1929.           Returns:           Result code (see Appendix I)
  1930.  
  1931.     4.3.2 DetachFromFileServer
  1932.  
  1933.           Detaches the workstation from the specified file server.
  1934.  
  1935.           int DetachFromFileServer(char *serverName);
  1936.  
  1937.           Input:
  1938.              serverName:     Name of server to detach from
  1939.  
  1940.           Returns:           Result code (see Appendix I)
  1941.  
  1942.     4.3.3 EnterLoginArea
  1943.  
  1944.           Puts  the  workstation in the server's SYS:LOGIN directory and tells
  1945.           Netware the name of the  subdirectory beneath SYS:LOGIN in which the
  1946.           login utility is located.
  1947.  
  1948.           int EnterLoginArea(int numberOfLocalDrives,char *loginDirectoryName)
  1949.  
  1950.           Input:
  1951.              numberOfLocalDrives:    Used to determine the workstation drive
  1952.                                      ID to assign to SYS:
  1953.              loginDirectoryName:     256-byte null terminated ASCII string
  1954.                                      containing the name of the subdirectory.
  1955.  
  1956.           Returns:                   Result code (see Appendix I)
  1957.  
  1958.     4.3.4 GetConnectionInformation
  1959.  
  1960.           Returns information about the user logged in on a connection.
  1961.  
  1962.           int GetConnectionInformation(word connectNo,char *objectName,
  1963.               int *objectType,long *objectID,byte *loginTime);
  1964.  
  1965.           Input:
  1966.              connectNo:  Logical connection number
  1967.                                                                                 
  1968. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-4
  1969. ────────────────────────────────────────────────────────────────────────────────
  1970.  
  1971.           Output:
  1972.              objectName: Returns the 48-byte null terminated name of the
  1973.                          logged in object.
  1974.              objectType: Returns the bindery object type of the logged in
  1975.                          object.
  1976.              objectID:   Returns the bindery object identification of the
  1977.                          logged in object.
  1978.              loginTime:  Returns the date and time the bindery object logged
  1979.                          in:
  1980.  
  1981.                      Byte: 0   Year     (0 to 99, where 80=1980,81=1981 etc.
  1982.                                          however a value less than 80 is
  1983.                                          considered to be in the 21st century)
  1984.                            1   Month    (1 to 12)
  1985.                            2   Day      (1 to 31)
  1986.                            3   Hour     (0 to 23)
  1987.                            4   Minute   (0 to 59)
  1988.                            5   Second   (0 to 59)
  1989.                            6   Week Day (0 to 6, where 0=Sunday etc.)
  1990.  
  1991.           Returns:       Result code (see Appendix I)
  1992.  
  1993.     4.3.5 GetConnectionNumber
  1994.  
  1995.           Returns the connection number of the requesting workstation.
  1996.  
  1997.           int GetConnectionNumber(void);
  1998.  
  1999.           Returns:   Workstations connection number (1-100) or zero if
  2000.                      the workstation shell is not loaded.
  2001.  
  2002.     4.3.6 GetInternetAddress
  2003.  
  2004.           Returns a connections internetwork address.
  2005.  
  2006.           int GetInternetAddress(int conn_no,byte *networkNumber,
  2007.               byte *nodeAddress,word *socketNumber);
  2008.  
  2009.           Input:
  2010.              conn_no:       Logical connection number
  2011.  
  2012.           Output:
  2013.              networkNumber: Returns the 4-byte network number identifying the
  2014.                             file server the workstation is physically attached
  2015.                             to.
  2016.              nodeAddress:   Returns the 6-byte network address of the
  2017.                             workstations LAN board.
  2018.              socketNumber:  Returns the socket that the workstation uses to
  2019.                             communicate with the file server. This socket
  2020.                             must not be used by other applications.
  2021.  
  2022.           Returns:          Result code (see Appendix I)
  2023.  
  2024.  
  2025.  
  2026.  
  2027.                                                                                 
  2028. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-5
  2029. ────────────────────────────────────────────────────────────────────────────────
  2030.  
  2031.     4.3.7 GetObjectConnectionNumbers
  2032.  
  2033.           Returns  a  list  of upto 100 connection numbers indicating how many
  2034.           times and under what connection  numbers  a bindery object is logged
  2035.           in to the default file server.
  2036.  
  2037.           int GetObjectConnectionNumbers(int objectType,char *objectName,
  2038.               word *connectionCount,byte *connections);
  2039.  
  2040.           Input:
  2041.              objectType:      Bindery object type
  2042.              objectName:      48-byte null terminated Object Name
  2043.  
  2044.           Output:
  2045.              connectionCount: Returns the number of connections
  2046.              connections:     Returns a list of connection numbers, each one
  2047.                               is 1 byte.
  2048.  
  2049.           Returns:            Result code (see Appendix I)
  2050.  
  2051.     4.3.8 GetStationAddress
  2052.  
  2053.           Returns the physical node address of the requesting workstation.
  2054.  
  2055.           void GetStationAddress(byte *physicalNodeAddress);
  2056.  
  2057.           Output:
  2058.              physicalNodeAddress:  Returns the 6-byte physical address of the
  2059.                                    workstation.
  2060.  
  2061.     4.3.9 LoginToFileServer
  2062.  
  2063.           Log a bindery object  into  the  default  file server.  The password
  2064.           will be automatically encrypted by this call, if encrypted passwords
  2065.           are in use.
  2066.  
  2067.           int LoginToFileServer(int connectionID,int objectType,
  2068.               char *objectName,char *objectPassword);
  2069.  
  2070.           Input:
  2071.              connectionID:   The connection ID (1-8) of the server.
  2072.              objectType:     Bindery object type
  2073.              objectName:     48-byte null terminated Object name
  2074.              objectPassword: 128-byte null terminated Object password.
  2075.  
  2076.           Returns:           Result code (see Appendix I)
  2077.  
  2078.     4.3.10 LogoutFromFileServer
  2079.  
  2080.           This logs the object out from the specified  server,  but  does  not
  2081.           detach the workstation from the server.
  2082.  
  2083.           void LogoutFromFileServer(char *serverName);
  2084.  
  2085.           Input:
  2086.              serverName: Name of the file server to log out from.
  2087.                                                                                 
  2088. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-6
  2089. ────────────────────────────────────────────────────────────────────────────────
  2090.  
  2091.     4.3.11 Logout
  2092.  
  2093.           This  closes  all  open  files belonging to the object, and logs the
  2094.           object out from all files servers.  It then detaches the workstation
  2095.           from all servers except the default one.
  2096.  
  2097.           void Logout(void);
  2098.  
  2099. 4.4 Workstation Functions
  2100.  
  2101.     4.4.1 EndOfJob
  2102.  
  2103.           The workstation shell  will  automatically  issue  this  call when a
  2104.           program exits (i.e.  DOS functions 0x00 and 0x4c are actioned ),  so
  2105.           that  the workstation environment will be reset.  All resources used
  2106.           on the server, ( open files, locks etc.  ), will be released.
  2107.  
  2108.           void EndOfJob(void);
  2109.  
  2110.     4.4.2 GetConnectionIDTable
  2111.  
  2112.           This  returns  the  workstation  shells  Connection  ID  Table.  The
  2113.           structure  ConnectionIDTable  is  defined   in   the   header   file
  2114.           "nwwrkstn.h"
  2115.  
  2116.           int GetConnectionIDTable(CONNECTION_ID_TABLE *table);
  2117.  
  2118.           Output:
  2119.              table: Structure  containing  the  connection  ID  table for each
  2120.                     attached server.  This must be setup with at  least  eight
  2121.                     elements.  It is declared in the header file "nwwrkstn.h".
  2122.                     See Appendix III.
  2123.  
  2124.           Returns:  Result code (see Appendix I)
  2125.  
  2126.     4.4.3 GetDefaultConnectionID
  2127.  
  2128.           Returns the connection ID (1-8) of  the file server to which request
  2129.           packets are currently being sent.
  2130.  
  2131.           int GetDefaultConnectionID(void);
  2132.  
  2133.           Returns:    Default server connection ID (1-8)
  2134.  
  2135.     4.4.4 GetDriveConnectionID
  2136.  
  2137.           This returns the workstation shells Drive Connection ID  Table.   It
  2138.           consists of 32 1-byte entries and each entry contains the connection
  2139.           ID of the server that  is  associated  with  that drive.  A value of
  2140.           zero indicates that the drive is not mapped to a file  server,  i.e.
  2141.           it is a local drive or it is not used.
  2142.  
  2143.              void GetDriveConnectionID(char *table);
  2144.  
  2145.           Output:
  2146.              table:  32-byte string to contain the Drive Connection ID Table.
  2147.                                                                                 
  2148. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-7
  2149. ────────────────────────────────────────────────────────────────────────────────
  2150.  
  2151.  
  2152.     4.4.5 GetDriveFlagTable
  2153.  
  2154.           This  returns  the workstation shells Drive Flag Table.  It consists
  2155.           of 32 1-byte entries and  each  entry contains the current status of
  2156.           the drive.
  2157.  
  2158.                  0x00    Not allocated
  2159.                  0x01    Permanent Network drive
  2160.                  0x02    Temporary Network drive
  2161.                  0x80    Local drive
  2162.                  0x81    Local drive allocated as a permanent Network drive
  2163.                  0x82    Local drive allocated as a temporary Network drive
  2164.  
  2165.           void GetDriveFlagTable(char *table);
  2166.  
  2167.           Output:
  2168.              table:  32-byte string to contain the Drive Flag Table.
  2169.  
  2170.     4.4.6 GetDriveHandleTable
  2171.  
  2172.           Returns the workstation shells Drive Handle Table.  It  consists  of
  2173.           32  1-byte  entries  and each entry contains the directory handle on
  2174.           the file server.  A value of zero indicates a drive is not mapped to
  2175.           a directory.
  2176.  
  2177.           void GetDriveHandleTable(char *table);
  2178.  
  2179.           Output:
  2180.              table:  32-byte string to contain the Drive Handle Table.
  2181.  
  2182.     4.4.7 GetFileServerName
  2183.  
  2184.           Returns the name of the server which has the specified connection id
  2185.           (1-8)
  2186.  
  2187.           void GetFileServerName(int serverID,char *serverName);
  2188.  
  2189.           Input:
  2190.              serverID:   The connection id of the server. This will be a
  2191.                          value between 1 and 8.
  2192.  
  2193.           Output:
  2194.              serverName: Name of the file server.
  2195.  
  2196.     4.4.8 GetFileServerTable
  2197.  
  2198.           Returns the workstation shells File  Server Name Table.  It consists
  2199.           of 8 48-byte entries  and  each  entry  contains  a  null-terminated
  2200.           server name.
  2201.  
  2202.           void GetFileServerTable(char *table);
  2203.  
  2204.           Output:
  2205.              table:  384-byte string to contain the File Server Name Table.
  2206.  
  2207.                                                                                 
  2208. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-8
  2209. ────────────────────────────────────────────────────────────────────────────────
  2210.  
  2211.     4.4.9 GetNetwareShellVersion
  2212.  
  2213.           Returns information about the workstations shell.
  2214.  
  2215.           void GetNetwareShellVersion(char *shellInfo,byte *majorVersion,
  2216.                byte *minorVersion,byte *revisionLevel,byte *shellType);
  2217.  
  2218.           Output:
  2219.              shellInfo:      40-byte string which will contain the following
  2220.                              four null-terminated strings:
  2221.  
  2222.                                  1) Operating system type
  2223.                                  2) Operating system version
  2224.                                  3) Hardware type
  2225.                                  4) Short hardware type
  2226.  
  2227.              majorVersion:   Returns the major version number of the
  2228.                              workstations shell.
  2229.              minorVersion:   Returns the minor version number of the
  2230.                              workstations shell.
  2231.              revisionLevel:  Returns the revision number of the shell.
  2232.                              1 = A, 2 = B etc.
  2233.              shellType:      Returns the memory type of the loaded shell.
  2234.                              0 = conventional, 1 = expanded, 2 = extended.
  2235.                              This is only  valid  if  the workstation shell is
  2236.                              release 3.00 or above.
  2237.  
  2238.     4.4.10 GetNumberOfLocalDrives
  2239.  
  2240.           Returns the number of local drives on the workstation.
  2241.  
  2242.           int GetNumberOfLocalDrives(void);
  2243.  
  2244.           Returns:    Number of local drives.
  2245.  
  2246.     4.4.11 GetPreferredConnectionID
  2247.  
  2248.           This returns the connection ID of the preferred file server.
  2249.  
  2250.           int GetPreferredConnectionID(void);
  2251.  
  2252.           Returns:    The connection ID (1-8) of the Preferred File Server.
  2253.                       This has been set by calling SetPreferredConnectionID.
  2254.  
  2255.     4.4.12 GetPrimaryConnectionID
  2256.  
  2257.           This returns the connection ID of the primary file server.
  2258.  
  2259.           int GetPrimaryConnectionID(void);
  2260.  
  2261.           Returns:    The connection ID (1-8) of the Primary File Server.
  2262.                       This has been set by calling SetPrimaryConnectionID.
  2263.  
  2264.  
  2265.  
  2266.  
  2267.                                                                                 
  2268. Netware C LibraryChapter Four - Connection/Workstation Services        Page: 4-9
  2269. ────────────────────────────────────────────────────────────────────────────────
  2270.  
  2271.     4.4.13 GetServerConnectionID
  2272.  
  2273.           Get the connection ID of the specified server.
  2274.  
  2275.           int GetServerConnectionID(char *serverName,int *connectionID);
  2276.  
  2277.           Input:
  2278.              serverName:     Server name
  2279.  
  2280.           Output:
  2281.              connectionID:   The connection ID of the specified server (1-8)
  2282.  
  2283.           Returns:           Result code (see Appendix I)
  2284.  
  2285.     4.4.14 IsShellLoaded
  2286.  
  2287.           Checks whether a netware shell is loaded in the workstation.
  2288.  
  2289.           int IsShellLoaded(void);
  2290.  
  2291.           Returns:           0x00 - Shell Loaded
  2292.                              0xbb - No Shell Loaded
  2293.  
  2294.     4.4.15 SetEndofJobStatus
  2295.  
  2296.           This  enables\disables the end of job performed automatically by the
  2297.           workstation shell when control returns to "COMMAND.COM".
  2298.  
  2299.           int SetEndofJobStatus(int NewStatus);
  2300.  
  2301.           Input:
  2302.              NewStatus:  New end of job flag, 0 = Disabled, 1 = Enabled.
  2303.  
  2304.           Returns:       Original end of job flag.
  2305.  
  2306.     4.4.16 SetNWErrorMode
  2307.  
  2308.           This sets the workstation shell  to  determine how it should respond
  2309.           to DOS emulation call errors.  It has three modes :-
  2310.  
  2311.             Mode:   0   This is the default, it uses the normal response
  2312.                         format used by DOS. (i.e. "Abort, Retry, Fail")
  2313.  
  2314.                     1   This will not invoke the normal INT 24h handler, but
  2315.                         will return the error code for all file I/O calls in
  2316.                         AL.
  2317.  
  2318.                     2   The shell will attempt to map the Netware error code
  2319.                         to a DOS error code and return it.
  2320.  
  2321.           int SetNWErrorMode(int NewMode);
  2322.  
  2323.           Input:
  2324.              NewMode:    New error mode.
  2325.  
  2326.           Returns:       Original error mode.
  2327.                                                                                 
  2328. Netware C LibraryChapter Four - Connection/Workstation Services       Page: 4-10
  2329. ────────────────────────────────────────────────────────────────────────────────
  2330.  
  2331.     4.4.17 SetPreferredConnectionID
  2332.  
  2333.           This sets the preferred file server.
  2334.  
  2335.           void SetPreferredConnectionID(int connection_id);
  2336.  
  2337.           Input:
  2338.              connection_id:  The connection ID (1-8) of the preferred server.
  2339.  
  2340.     4.4.18 SetPrimaryConnectionID
  2341.  
  2342.           This sets the primary file server.
  2343.  
  2344.           void SetPrimaryConnectionID(int connection_id);
  2345.  
  2346.           Input:
  2347.              connection_id:  The connection ID (1-8) of the primary server.
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.                                                                                 
  2388. Netware C Library        Chapter Five - Queue Services                 Page: 5-1
  2389. ────────────────────────────────────────────────────────────────────────────────
  2390.  
  2391.                               5. Queue Services
  2392.  
  2393.     These services allow an application  to use Netware queues for controlling
  2394.     jobs and services on the network.
  2395.  
  2396.     A queue is a  bindery  object,  which  has several bindery properties that
  2397.     govern who can use the queue, who can service the queue, and who can alter
  2398.     the queue information.
  2399.  
  2400.     The properties associated with a queue are:
  2401.  
  2402.     Q_DIRECTORY
  2403.  
  2404.           Queues have a directory  in  which  the  queue  system files and job
  2405.           files are stored.  This property is an item property which  contains
  2406.           the  base  directory  name,  the full directory name can be found by
  2407.           concatenating the queues object  id  number.   The maximum number of
  2408.           characters allowed is 118, including the null terminator.
  2409.  
  2410.     Q_USERS
  2411.  
  2412.           This is a set property that contains all the object ids of users and
  2413.           groups that can place jobs in the queue.  If this property does  not
  2414.           exist,  then  any logged in object can place jobs in the queue.  The
  2415.           supervisor must be included in this property.
  2416.  
  2417.     Q_SERVERS
  2418.  
  2419.           This is a set property that contains all the  object  ids  that  are
  2420.           allowed to attach and service jobs in the queue.
  2421.  
  2422.     Q_OPERATORS
  2423.  
  2424.           This is a set property that contains all the  object  ids  that  are
  2425.           allowed  to  change  fields  in the job entry structure, reorder the
  2426.           jobs and change the status of the queue.
  2427.  
  2428. 5.1 Queue Functions
  2429.  
  2430.     5.1.1 AbortServicingQueueJobAndFile
  2431.  
  2432.           This call is used by a job server to  inform  the  Queue  Management
  2433.           System that it cannot complete a job that it had previous accepted.
  2434.  
  2435.           When  a  job is aborted, the QMS checks the service restart flag for
  2436.           the job to determie whether  the job can be automatically restarted.
  2437.           If it is set, the  entry  is  left  in  the  queue  in  its  current
  2438.           position.  If it is unset, the job is removed from the queue and its
  2439.           associated file is deleted.
  2440.  
  2441.           int AbortServicingQueueJobAndFile(long queueID,word jobNumber,
  2442.                                             int fileHandle);
  2443.  
  2444.           Input:
  2445.              queueID:     This is the id of the queue from which the job was
  2446.                           accepted for servicing.
  2447.                                                                                 
  2448. Netware C Library        Chapter Five - Queue Services                 Page: 5-2
  2449. ────────────────────────────────────────────────────────────────────────────────
  2450.  
  2451.              jobNumber:   This is the job entry number identifying the job to
  2452.                           be aborted.
  2453.              fileHandle:  The dos file handle of the job file.
  2454.  
  2455.           Returns:        Result code (see Appendix I)
  2456.  
  2457.     5.1.2 AttachQueueServerToQueue
  2458.  
  2459.           This call allows a job server to attach itself to a specified queue.
  2460.           A  job server must attach itself to a queue before it can accept any
  2461.           jobs for servicing.  A maximum  of  25  servers can be attached to a
  2462.           queue at any one time.
  2463.  
  2464.           The current logged in object must be security equivalent to  one  of
  2465.           the objects listed in the queue's Q_SERVERS property.
  2466.  
  2467.           int AttachQueueServerToQueue(long queueID);
  2468.  
  2469.           Input:
  2470.              queueID:     This is the id of the queue from which the job was
  2471.                           accepted for servicing.
  2472.  
  2473.           Returns:        Result code (see Appendix I)
  2474.  
  2475.     5.1.3 ChangeQueueJobEntry
  2476.  
  2477.           This call allows information in a job's entry record to be  changed.
  2478.           If  the job is currently being serviced, then no change will be made
  2479.           and an error will be returned.
  2480.  
  2481.           This call can be made by the user who originally created the job, or
  2482.           by an operator.
  2483.  
  2484.           int ChangeQueueJobEntry(long queueID,QUEUE_JOB_ENTRY *jobEntry);
  2485.  
  2486.           Input:
  2487.              queueID:     This is the id of the queue which contains the job.
  2488.              jobEntry:    Pointer to the job entry structure.
  2489.                           The structure is declared in "nwqueue.h",see App.III
  2490.                           Only the following fields are allowed to be changed,
  2491.  
  2492.                               ■ Target Server ID     ■ Target Execution Time
  2493.                               ■ Job Type             ■ Job Control Flags
  2494.                               ■ Text Job Description ■ Client Record Area
  2495.  
  2496.           Returns:        Result code (see Appendix I)
  2497.  
  2498.     5.1.4 ChangeQueueJobPosition                                    (Operator)
  2499.  
  2500.           This call changes the position of a job within a queue.
  2501.  
  2502.           int ChangeQueueJobPosition(long queueID,word jobNumber,
  2503.                                      byte newPosition);
  2504.  
  2505.           Input:
  2506.              queueID:     This is the id of the queue which contains the job.
  2507.                                                                                 
  2508. Netware C Library        Chapter Five - Queue Services                 Page: 5-3
  2509. ────────────────────────────────────────────────────────────────────────────────
  2510.  
  2511.              jobNumber:   This is the job entry number of the job which is to
  2512.                           be repositioned.
  2513.              NewPosition: This is the new position for the job. It can have a
  2514.                           value between 1 and 250.
  2515.  
  2516.           Returns:        Result code (see Appendix I)
  2517.  
  2518.     5.1.5 ChangeToClientRights
  2519.  
  2520.           This allows a job server to assume the identity of the  client  that
  2521.           placed the job into the queue.
  2522.  
  2523.           The job servers path mappings are not affected by this call, but the
  2524.           job servers rights  to  the  directories  will be recalculated.  The
  2525.           RestoreQueueServerRights function reverses the effects of this call.
  2526.  
  2527.           int ChangeToClientRights(long queueID,word jobNumber);
  2528.  
  2529.           Input:
  2530.              queueID:     This is the id of the queue which contains the job.
  2531.              jobNumber:   This is the job entry number of the job.
  2532.  
  2533.           Returns:        Result code (see Appendix I)
  2534.  
  2535.     5.1.6 CloseFileAndAbortQueueJob
  2536.  
  2537.           Removes  a job from the queue and deletes its associated file.  This
  2538.           call can only follow a call to CreateQueueJobAndFile.
  2539.  
  2540.           int CloseFileAndAbortQueueJob(long queueID,word jobNumber,
  2541.                                         int fileHandle);
  2542.  
  2543.           Input:
  2544.              queueID:     This is the id of the queue containing the job.
  2545.              jobNumber:   This is the job entry number identifying the job.
  2546.              fileHandle:  The dos file handle of the job file.
  2547.  
  2548.           Returns:        Result code (see Appendix I)
  2549.  
  2550.     5.1.7 CloseFileAndStartQueueJob
  2551.  
  2552.           This call closes a job file and marks the job ready for servicing by
  2553.           a job server.  After closing  the  job  file, the entry open flag in
  2554.           the job control flags field will be cleared.
  2555.  
  2556.           Only the station that created the job can make this call.
  2557.  
  2558.           int CloseFileAndStartQueueJob(long queueID,word jobNumber,
  2559.                                         int fileHandle);
  2560.  
  2561.           Input:
  2562.              queueID:     This is the id of the queue containing the job.
  2563.              jobNumber:   This is the job entry number identifying the job.
  2564.              fileHandle:  The dos file handle of the job file.
  2565.  
  2566.           Returns:        Result code (see Appendix I)
  2567.                                                                                 
  2568. Netware C Library        Chapter Five - Queue Services                 Page: 5-4
  2569. ────────────────────────────────────────────────────────────────────────────────
  2570.  
  2571.  
  2572.     5.1.8 CreateQueue                                             (Supervisor)
  2573.  
  2574.           This call creates a queue of the specified name and type.
  2575.  
  2576.           int CreateQueue(char *queueName,int queueType,
  2577.                  char directoryHandle,char *pathName,long *queueID);
  2578.  
  2579.           Input:
  2580.              queueName:       Name of the queue to create.
  2581.              queueType:       Bindery object type of the queue to create.
  2582.              directoryHandle: An optional directory handle, pointing to
  2583.                               an entry in the servers Directory Handle
  2584.                               Table. If "pathName" contains the full path
  2585.                               name then this must be 0x00.
  2586.              directoryPath:   256-byte null terminated directory path
  2587.                               name. This can either be a full path name,
  2588.                               i.e. VOLUME:DIR\..\DIR or a partial name
  2589.                               containing at least a directory name.
  2590.  
  2591.           Output:
  2592.              queueID:         Returns the bindery object id of the created
  2593.                               queue.
  2594.  
  2595.           Returns:            Result code (see Appendix I)
  2596.  
  2597.     5.1.9 CreateQueueJobAndFile
  2598.  
  2599.           This call enters a new job into a queue.
  2600.  
  2601.           Any station that is security equivalent to one of the objects in the
  2602.           queue's Q_USER property can make this call.
  2603.  
  2604.           int CreateQueueJobAndFile(long queueID,QUEUE_JOB_ENTRY *jobEntry,
  2605.                                     int *fileHandle);
  2606.  
  2607.           Input:
  2608.              queueID:    This is the id of the queue into which the job is to
  2609.                          be placed.
  2610.              jobEntry:   Pointer to the job entry structure.
  2611.                          The structure is declared in "nwqueue.h",see App III.
  2612.                          The following fields must be initialised:
  2613.  
  2614.                              ■ Target Server ID
  2615.                              ■ Target Execution Time
  2616.                              ■ Job Type
  2617.                              ■ Job Control Flags
  2618.                              ■ Text Job Description
  2619.                              ■ Client Record Area
  2620.  
  2621.                          And the following fields will be set after the call:
  2622.  
  2623.                              ■ Client Station
  2624.                              ■ Client Task Number
  2625.                              ■ Client ID
  2626.                              ■ Job Entry Time
  2627.                                                                                 
  2628. Netware C Library        Chapter Five - Queue Services                 Page: 5-5
  2629. ────────────────────────────────────────────────────────────────────────────────
  2630.  
  2631.                              ■ Job Position
  2632.                              ■ Job File Name and Job File Handle
  2633.  
  2634.           Output:
  2635.              fileHandle: Returns DOS file handle of the job file.
  2636.  
  2637.           Returns:       Result code (see Appendix I)
  2638.  
  2639.     5.1.10 DestroyQueue                                           (Supervisor)
  2640.  
  2641.           This call destroys the specified queue.
  2642.  
  2643.           int DestroyQueue(long queueID);
  2644.  
  2645.           Input:
  2646.              queueID:     This is the id of the queue to be destroyed.
  2647.  
  2648.           Returns:        Result code (see Appendix I)
  2649.  
  2650.     5.1.11 DetachQueueServerFromQueue
  2651.  
  2652.           This call removes the  caller  from  the  queues  list of active job
  2653.           servers.
  2654.  
  2655.           int DetachQueueServerFromQueue(long queueID);
  2656.  
  2657.           Input:
  2658.              queueID:     This is the id of the queue from which the calling
  2659.                           station is to be detached.
  2660.  
  2661.           Returns:        Result code (see Appendix I)
  2662.  
  2663.     5.1.12 FinishServicingQueueJobAndFile
  2664.  
  2665.            This  call  allows  a  job  server  to  signal that it has finished
  2666.            servicing a queue job.
  2667.  
  2668.           int FinishServicingQueueJobAndFile(long queueID,word jobNumber,
  2669.               long charge,int fileHandle);
  2670.  
  2671.           Input:
  2672.              queueID:     This is the id of the queue from which the job was
  2673.                           accepted for servicing.
  2674.              jobNumber:   This is the job entry number identifying the job.
  2675.              charge:      This is not used at in the current implementation
  2676.                           of QMS, but is provided for future releases that
  2677.                           will allow job servers to charge their customers
  2678.                           and to log accounting information.
  2679.              fileHandle:  The dos file handle of the job file.
  2680.  
  2681.           Returns:        Result code (see Appendix I)
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.                                                                                 
  2688. Netware C Library        Chapter Five - Queue Services                 Page: 5-6
  2689. ────────────────────────────────────────────────────────────────────────────────
  2690.  
  2691.     5.1.13 GetQueueJobList
  2692.  
  2693.           This call extracts all job numbers of jobs contained in a  specified
  2694.           queue.
  2695.  
  2696.           Any station that is security  equivalent  to an object listed in the
  2697.           queue's Q_USERS property or Q_OPERATORS property can make this call.
  2698.  
  2699.           int GetQueueJobList(long queueID,word *jobCount,word *jobNumbers);
  2700.  
  2701.           Input:
  2702.              queueID:     This is the id of the queue.
  2703.  
  2704.           Output:
  2705.              jobCount:    Returns the total number of jobs in the queue.
  2706.              jobNumbers:  Pointer to a row of 250 words which will contain
  2707.                           the job numbers of all jobs in the queue.
  2708.  
  2709.           Returns:        Result code (see Appendix I)
  2710.  
  2711.     5.1.14 GetQueueJobsFileSize
  2712.  
  2713.           This call returns the size of a jobs associated file.
  2714.  
  2715.           Any station that is security equivalent to an object listed  in  the
  2716.           queue's Q_USERS property, Q_OPERATORS property or Q_SERVERS property
  2717.           can make this call.
  2718.  
  2719.           int GetQueueJobsFileSize(long queueID,word jobNumber,
  2720.                                    long *fileSize);
  2721.  
  2722.           Input:
  2723.              queueID:     This is the id of the queue which contains the job.
  2724.              jobNumber:   This is the job entry number identifying the job.
  2725.  
  2726.           Output:
  2727.              fileSize:    Returns the size of the job file.
  2728.  
  2729.           Returns:        Result code (see Appendix I)
  2730.  
  2731.     5.1.15 ReadQueueCurrentStatus
  2732.  
  2733.           This call retrieves the current status of a queue.
  2734.  
  2735.           int ReadQueueCurrentStatus(long queueID,byte *queueStatus,
  2736.               byte *numberOfJobs,byte *numberOfServers,long *serverIDList,
  2737.               word *serverStationList);
  2738.  
  2739.           Input:
  2740.              queueID:           This is the id of the queue.
  2741.  
  2742.           Output:
  2743.              queueStatus:       Returns the current status of the queue.
  2744.                                 This can take any of the following values or'd
  2745.                                 together:
  2746.                                    0x01 New jobs cannot be added to the queue.
  2747.                                                                                 
  2748. Netware C Library        Chapter Five - Queue Services                 Page: 5-7
  2749. ────────────────────────────────────────────────────────────────────────────────
  2750.  
  2751.                                    0x02 New job servers cannot attach to the
  2752.                                         queue.
  2753.                                    0x04 Job servers cannot service entries in
  2754.                                         the queue.
  2755.  
  2756.              numberOfJobs:      Returns the number of jobs in the queue.
  2757.              numberOfServers:   Returns the number of servers attached.
  2758.              serverIDList:      Returns up to 25 object IDs of attached
  2759.                                 servers.
  2760.              serverStationList: Returns up to 25 station numbers of attached
  2761.                                 servers.
  2762.  
  2763.           Returns:              Result code (see Appendix I)
  2764.  
  2765.     5.1.16 ReadQueueJobEntry
  2766.  
  2767.           This call returns information about a specified job in a queue.
  2768.  
  2769.           int ReadQueueJobEntry(long queueID,word jobNumber,
  2770.                                  QUEUE_JOB_ENTRY *jobEntry);
  2771.  
  2772.           Input:
  2773.              queueID:     This is the id of the queue which contains the job.
  2774.              jobNumber:   This is the job number for which information is to
  2775.                           be returned.
  2776.  
  2777.           Output:
  2778.              jobEntry:    Pointer to the jobs's job entry structure.
  2779.                           The structure is declared in "nwqueue.h".
  2780.                           see Appendix III for details.
  2781.  
  2782.           Returns:        Result code (see Appendix I)
  2783.  
  2784.     5.1.17 ReadQueueServerCurrentStatus
  2785.  
  2786.           This call returns the status of a job queue server.
  2787.  
  2788.           int ReadQueueServerCurrentStatus(long queueID,long serverID,
  2789.               byte serverStation,byte *serverStatusRecord);
  2790.  
  2791.           Input:
  2792.              queueID:            This is the id of the queue.
  2793.              serverID:           This is the ID of the job server.
  2794.              serverStation:      This is the station number of the job server.
  2795.  
  2796.           Output:
  2797.              serverStatusRecord: This is the 64 byte server status record
  2798.                                  that has been set by the call to the function
  2799.                                  SetQueueServerCurrentStatus.
  2800.  
  2801.           Returns:               Result code (see Appendix I)
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.                                                                                 
  2808. Netware C Library        Chapter Five - Queue Services                 Page: 5-8
  2809. ────────────────────────────────────────────────────────────────────────────────
  2810.  
  2811.     5.1.18 RemoveJobFromQueue
  2812.  
  2813.           This call removes a job from a job queue.
  2814.  
  2815.           int RemoveJobFromQueue(long queueID,word jobNumber);
  2816.  
  2817.           Input:
  2818.              queueID:     This is the id of the queue which contains the job.
  2819.              jobNumber:   This is the job number which is to be removed.
  2820.  
  2821.           Returns:        Result code (see Appendix I)
  2822.  
  2823.     5.1.19 RestoreQueueServerRights
  2824.  
  2825.           This call restores a job  servers  own  identity following a call to
  2826.           ChageToClientRights.
  2827.  
  2828.           int RestoreQueueServerRights(void);
  2829.  
  2830.           Returns:        Result code (see Appendix I)
  2831.  
  2832.     5.1.20 ServiceQueueJobAndOpenFile
  2833.  
  2834.           This call allows a job server to accept a new job for servicing.
  2835.  
  2836.           int ServiceQueueJobAndOpenFile(long queueID,word targetJobType,
  2837.               QUEUE_JOB_ENTRY *jobEntry,int *fileHandle);
  2838.  
  2839.           Input:
  2840.              queueID:       This is the id of the queue.
  2841.              targetJobType: Contains a number specifying the job type that
  2842.                             will be accepted for services, a value of -1
  2843.                             indicates that the server will accept any job type
  2844.                             from the queue.
  2845.  
  2846.           Output:
  2847.              jobEntry:      Returs the selected jobs's job entry structure.
  2848.                             The structure is declared in "nwqueue.h".
  2849.                             see Appendix III for details.
  2850.              fileHandle:    Returns a dos file hanndle to the jobs job file.
  2851.  
  2852.           Returns:          Result code (see Appendix I)
  2853.  
  2854.     5.1.21 SetQueueCurrentStatus                                    (Operator)
  2855.  
  2856.           This  call  allows  a operator to control the adding of jobs and job
  2857.           servers to a queue, or the preventing of current jobs being serviced
  2858.           by setting or clearing bits in the queue status byte.
  2859.  
  2860.           int SetQueueCurrentStatus(long queueID,byte queueStatus);
  2861.  
  2862.           Input:
  2863.              queueID:       This is the id of the queue.
  2864.              queueStatus:   The queue status to be set.
  2865.                             This can take any of the following values or'd
  2866.                             together:
  2867.                                                                                 
  2868. Netware C Library        Chapter Five - Queue Services                 Page: 5-9
  2869. ────────────────────────────────────────────────────────────────────────────────
  2870.  
  2871.  
  2872.                                0x01 New jobs cannot be added to the queue.
  2873.                                0x02 New job servers cannot attach to the
  2874.                                     queue.
  2875.                                0x04 Job servers cannot service entries in
  2876.                                     the queue.
  2877.  
  2878.           Returns:          Result code (see Appendix I)
  2879.  
  2880.     5.1.22 SetQueueServerCurrentStatus
  2881.  
  2882.           This call updates the current job servers status record.
  2883.  
  2884.           int SetQueueServerCurrentStatus(long queueID,
  2885.                                           byte *serverStatusRecord);
  2886.  
  2887.           Input:
  2888.              queueID:            This is the id of the queue to which the job
  2889.                                  server is attached.
  2890.              serverStatusRecord: This is the 64-byte status field that is to
  2891.                                  be associated with the job server. QMS does
  2892.                                  not interpret this field, except the first 4
  2893.                                  bytes which should contain an estimated price
  2894.                                  for the job server to complete an average
  2895.                                  job.
  2896.  
  2897.           Returns:          Result code (see Appendix I)
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.                                                                                 
  2928. Netware C Library        Chapter Six - Message Services                Page: 6-1
  2929. ────────────────────────────────────────────────────────────────────────────────
  2930.  
  2931.                                6. Message Services
  2932.  
  2933.     These calls enable applications to send messages to specified connections.
  2934.     The  sending  and  destination  stations must both be attached to the same
  2935.     server.   The messages can either  be broadcast messages or pipe messages.
  2936.     Each connection on a file server has a 55-byte  message  buffer  which  is
  2937.     used  for  broadcast  messages,   and  a  six  slot message queue for pipe
  2938.     messages where  each  slot  can  hold  a  126-byte  message.   Before pipe
  2939.     messages can be used,  the sending and receiving connections must  open  a
  2940.     message pipe with the OpenMessagePipe function.
  2941.  
  2942. 6.1 Message Functions
  2943.  
  2944.     6.1.1 BroadcastToConsole
  2945.  
  2946.           Broadcast a message to the default file servers system console.
  2947.  
  2948.           int BroadcastToConsole(char *message);
  2949.  
  2950.           Input:
  2951.              message:    60-byte null terminated message which is to be
  2952.                          broadcast on the servers console.
  2953.  
  2954.           Returns:       Result code (see Appendix I)
  2955.  
  2956.     6.1.2 CheckPipeStatus
  2957.  
  2958.           This call enables the  status  of  one  or  more message pipes to be
  2959.           checked.
  2960.  
  2961.           int CheckPipeStatus(byte connectionCount,byte *connections,
  2962.               byte *pipeStatus);
  2963.  
  2964.           Input:
  2965.              connectionCount: Number of message pipes (1-100) that are to be
  2966.                               checked.
  2967.              connections:     List of the connections whose message pipe is
  2968.                               to be checked. There must be "connectionCount"
  2969.                               entries, and each entry has a corresponding
  2970.                               entry in the "pipeStatus" below.
  2971.  
  2972.           Output:
  2973.              pipeStatus:      Returns a code for each specified connection.
  2974.  
  2975.                                  0x00    OPEN. The message pipe is complete
  2976.                                          at both ends.
  2977.                                  0xfe    INCOMPLETE. The target connections
  2978.                                          half of the message pipe does not
  2979.                                          exist.
  2980.                                  0xff    CLOSED. The callers half of the
  2981.                                          message pipe does not exist, or the
  2982.                                          connection number is not in use or is
  2983.                                          invalid.
  2984.  
  2985.           Returns:            Result code (see Appendix I)
  2986.  
  2987.                                                                                 
  2988. Netware C Library        Chapter Six - Message Services                Page: 6-2
  2989. ────────────────────────────────────────────────────────────────────────────────
  2990.  
  2991.     6.1.3 CloseMessagePipe
  2992.  
  2993.           This call closes this workstations  half  of  one  or  more  message
  2994.           pipes.
  2995.  
  2996.           int CloseMessagePipe(byte connectionCount,byte *connections,
  2997.               byte *resultCodes);
  2998.  
  2999.           Input:
  3000.              connectionCount: Number of message pipes (1-100) that are to be
  3001.                               closed.
  3002.              connections:     List of the connections whose message pipe is
  3003.                               to be closed. There must be "connectionCount"
  3004.                               entries, and each entry has a corresponding
  3005.                               entry in the "resultCodes" below.
  3006.  
  3007.           Output:
  3008.              resultCodes:     This contains a code for each specified
  3009.                               connection.
  3010.  
  3011.                                  0x00    Successful. The message pipe was
  3012.                                          successfully closed.
  3013.                                  0xfd    Failure. The target connection is no
  3014.                                          longer valid.
  3015.                                  0xff    No Pipe. There is no pipe to close.
  3016.  
  3017.           Returns:            Result code (see Appendix I)
  3018.  
  3019.     6.1.4 GetBroadcastMessage
  3020.  
  3021.           This  is  used to poll for and retrieve a broadcast message from the
  3022.           default file server.
  3023.  
  3024.           int GetBroadcastMessage(char *message)
  3025.  
  3026.           Output:
  3027.              message:    56-byte null terminated retrieved message. If the
  3028.                          returned message has a length of zero then there was
  3029.                          no message waiting.
  3030.  
  3031.           Returns:       Result code (see Appendix I)
  3032.  
  3033.     6.1.5 GetBroadcastMode
  3034.  
  3035.           Returns the message mode of the requesting workstation.
  3036.  
  3037.           int GetBroadcastMode(void);
  3038.  
  3039.           Returns: Message mode which can be one of the following :-
  3040.  
  3041.                     0x00 Attached servers will store both user and server
  3042.                          messages intended for this workstation. The
  3043.                          workstation shell will automatically retrieve and
  3044.                          display these messages.
  3045.  
  3046.  
  3047.                                                                                 
  3048. Netware C Library        Chapter Six - Message Services                Page: 6-3
  3049. ────────────────────────────────────────────────────────────────────────────────
  3050.  
  3051.                     0x01 Attached servers will store server messages intended
  3052.                          for this workstation, but all user messages will be
  3053.                          discarded. The workstation shell will automatically
  3054.                          retrieve and display these messages.
  3055.                     0x02 Attached servers will store server messages intended
  3056.                          for this workstation, but all user messages will be
  3057.                          discarded. The workstation shell will not retrieve
  3058.                          these messages automatically, but a program can call
  3059.                          GetBroadcastMessage to poll for and retrieve the
  3060.                          most recently stored message.
  3061.                     0x03 Attached servers will store both user and server
  3062.                          messages intended for this workstation. The
  3063.                          workstation shell will not retrieve these messages
  3064.                          automatically, but a program can  poll for and
  3065.                          retrieve the most recently stored message by making
  3066.                          a call to GetBroadcastMessage.
  3067.  
  3068.     6.1.6 GetPersonalMessage
  3069.  
  3070.           This retrieves the oldest  message  from this connections pipe queue
  3071.           on the default file server.
  3072.  
  3073.           int GetPersonalMessage(char *message,byte *sourceConnection);
  3074.  
  3075.           Output:
  3076.              message:          126-byte null terminated retrieved message. If
  3077.                                the returned message has a length of zero then
  3078.                                there was no message in the pipe queue.
  3079.              sourceConnection: This is the connection number of the sending
  3080.                                station. If this is zero then there was no
  3081.                                message in the pipe queue.
  3082.  
  3083.           Returns:             Result code (see Appendix I)
  3084.  
  3085.     6.1.7 LogNetworkMessage
  3086.  
  3087.           This logs a message in the default  file  servers  NET$LOG.MSG  file
  3088.           which   is  held  in  the  SYS:SYSTEM  directory.   The  message  is
  3089.           automatically prefixed with the date and time and logical connection
  3090.           number.
  3091.  
  3092.           This function is not supported in Netware 386.
  3093.  
  3094.           void LogNetworkMessage(char *message);
  3095.  
  3096.           Input:
  3097.              message:    80-byte  null  terminated message to write to the log
  3098.                          file.  The  message  cannot  contain  characters with
  3099.                          ASCII values less than 20h or greater than 7eh.
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.                                                                                 
  3108. Netware C Library        Chapter Six - Message Services                Page: 6-4
  3109. ────────────────────────────────────────────────────────────────────────────────
  3110.  
  3111.     6.1.8 OpenMessagePipe
  3112.  
  3113.           This creates the calling  connections  half  of  one or more message
  3114.           pipes.  Before 2 connections can exchange pipe messages,  both  must
  3115.           establish a connection by calling this function.
  3116.  
  3117.           int OpenMessagePipe(byte connectionCount,byte *connections,
  3118.               byte *resultCodes);
  3119.  
  3120.           Input:
  3121.              connectionCount:Number of connections (1-100) to which this
  3122.                              workstation opens a pipe.
  3123.              connections:    List of the connections to which this workstation
  3124.                              opens a pipe.
  3125.  
  3126.           Output:
  3127.              resultCodes:    Returns a result code for each connection
  3128.                              specified in the "connections" field:
  3129.  
  3130.                                 0x00    Successful. The message pipe is
  3131.                                         complete at both ends.
  3132.                                 0xfe    Incomplete Pipe. The connections has
  3133.                                         not yet created its half of the pipe.
  3134.                                 0xff    Failure. The connection is not valid,
  3135.                                         or the connection is not in use.
  3136.  
  3137.           Returns:           Result code (see Appendix I)
  3138.  
  3139.     6.1.9 SendBroadcastMessage
  3140.  
  3141.           This  sends  a broadcast message to the specified connections on the
  3142.           default file server.
  3143.  
  3144.           int SendBroadcastMessage(byte connectionCount,byte *connections,
  3145.               char *message,byte *resultCodes);
  3146.  
  3147.           Input:
  3148.              connectionCount:Number of connections (1-100) that are to be
  3149.                              broadcast.
  3150.              connections:    List of the connections who are to receive the
  3151.                              broadcast message.
  3152.              message:        55-byte null terminated message to be broadcast.
  3153.  
  3154.           Output:
  3155.              resultCodes:    Returns a result code for each connection
  3156.                              specified in the "connections" field:
  3157.  
  3158.                                 0x00    Successful. The message was stored in
  3159.                                         the connections message buffer.
  3160.                                 0xfc    Rejected. The connections message
  3161.                                         buffer already contains a message.
  3162.                                 0xfd    Invalid Connection. The connection
  3163.                                         number is not known.
  3164.                                 0xff    Blocked. The connections message mode
  3165.                                         is set to block messages, or the
  3166.                                         connection is not in use.
  3167.                                                                                 
  3168. Netware C Library        Chapter Six - Message Services                Page: 6-5
  3169. ────────────────────────────────────────────────────────────────────────────────
  3170.  
  3171.  
  3172.           Returns:           Result code (see Appendix I)
  3173.  
  3174.     6.1.10 SendPersonalMessage
  3175.  
  3176.           This sends  a  pipe  message  to  the  specified  connections on the
  3177.           default file server.  Before  this  can  be  called,  the  procedure
  3178.           OpenPipeMessage  must  have  been  called  by  both  the sending and
  3179.           receiving workstations.
  3180.  
  3181.           int SendPersonalMessage(byte connectionCount,byte *connections,
  3182.               char *message,byte *resultCodes);
  3183.  
  3184.           Input:
  3185.              connectionCount:Number of connections (1-100) that are to receive
  3186.                              the message.
  3187.              connections:    List of the connections who are to receive the
  3188.                              message.
  3189.              message:        126-byte null terminated message to be sent.
  3190.  
  3191.           Output:
  3192.              resultCodes:    Returns a result code for each connection
  3193.                              specified in the "connections" field:
  3194.  
  3195.                                 0x00    Successful. The message was stored in
  3196.                                         the connections pipe queue.
  3197.                                 0xfc    Rejected. The connections pipe queue
  3198.                                         is full (six slots already in use).
  3199.                                 0xfe    Incomplete Pipe. The connections pipe
  3200.                                         half does not exist.
  3201.                                 0xff    Failure. The source connectiosn pipe
  3202.                                         half does not exist, or the connection
  3203.                                         number is not in use.
  3204.  
  3205.           Returns:           Result code (see Appendix I)
  3206.  
  3207.     6.1.11 SetBroadcastMode
  3208.  
  3209.           Set the message mode for the requesting workstation.
  3210.  
  3211.           int SetBroadcastMode(int messageMode);
  3212.  
  3213.           Input:
  3214.              messageMode:    Message mode to set :-
  3215.  
  3216.                     0x00 Attached servers will store both user and server
  3217.                          messages intended for this workstation. The
  3218.                          workstation shell will automatically retrieve and
  3219.                          display these messages.
  3220.                     0x01 Attached servers will store server messages intended
  3221.                          for this workstation, but all user messages will be
  3222.                          discarded. The workstation shell will automatically
  3223.                          retrieve and display these messages.
  3224.                     0x02 Attached servers will store server messages intended
  3225.                          for this workstation, but all user messages will be
  3226.                          discarded. The workstation shell will not retrieve
  3227.                                                                                 
  3228. Netware C Library        Chapter Six - Message Services                Page: 6-6
  3229. ────────────────────────────────────────────────────────────────────────────────
  3230.  
  3231.                          these messages automatically, but a program can call
  3232.                          GetBroadcastMessage to poll for and retrieve the
  3233.                          most recently stored message.
  3234.                     0x03 Attached servers will store both user and server
  3235.                          messages intended for this workstation. The
  3236.                          workstation shell will not retrieve these messages
  3237.                          automatically, but a program can  poll for and
  3238.                          retrieve the most recently stored message by making
  3239.                          a call to GetBroadcastMessage.
  3240.  
  3241.           Returns:           Message mode that was set.
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.                                                                                 
  3288. Netware C Library        Chapter Seven - File Services                 Page: 7-1
  3289. ────────────────────────────────────────────────────────────────────────────────
  3290.  
  3291.                                7. File Services
  3292.  
  3293.     The file services include calls that  enable  applications  to  manipulate
  3294.     extended file attributes,  restore erased files,  permanently delete files
  3295.     and  set  file  information.
  3296.  
  3297. 7. 1 Directory Handles
  3298.  
  3299.     Most of the calls in the File services identify files by specifying a file
  3300.     path and a directory handle.   A directory handle is a value from 1 to 255
  3301.     which references a  volume  or  directory.    For  the function calls that
  3302.     require a directory handle then zero can be supplied,  but the volume name
  3303.     must be specified in the file path.
  3304.  
  3305.     For  more  information  about  directory handles and where they are stored
  3306.     then see the section on Directory Services.
  3307.  
  3308. 7.2 Search Attributes
  3309.  
  3310.     Some functions within the File services can act on  normal,   hidden,   or
  3311.     system  files.    These  depend  on  the  value  of  the search attributes
  3312.     parameter.
  3313.  
  3314.     The following values can be supplied :-
  3315.  
  3316.             0  -  Normal files only
  3317.             2  -  Normal and Hidden files
  3318.             4  -  Normal and System files
  3319.             6  -  Normal, Hidden and System files
  3320.  
  3321. 7.3 File Attributes
  3322.  
  3323.     These are held as 1 byte, and contain the following settings:
  3324.  
  3325.         Bits    7 6 5 4 3 2 1 0
  3326.                 - - - - - - - x Read only
  3327.                 - - - - - - x - Hidden File (not shown on directory listing)
  3328.                 - - - - - x - - System File (not shown on directory listing)
  3329.                 - - - - x - - - Execute only (cannot be cleared, once set)
  3330.                 - - - x - - - - Entry is a subdirectory
  3331.                 - - x - - - - - Needs to be archived
  3332.                 - x - - - - - - Not used
  3333.                 x - - - - - - - File is shareable
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.                                                                                 
  3348. Netware C Library        Chapter Seven - File Services                 Page: 7-2
  3349. ────────────────────────────────────────────────────────────────────────────────
  3350.  
  3351. 7.4 Extended File Attributes
  3352.  
  3353.     These,   like  the  file attributes,  are held as 1 byte,  and contain the
  3354.     following settings:
  3355.  
  3356.         Bits    7 6 5 4 3 2 1 0
  3357.                 - - - - - x x x Search mode bits (see below)
  3358.                 - - - - x - - - Reserved
  3359.                 - - - x - - - - Transaction bit ( used by TTS )
  3360.                 - - x - - - - - Index bit (file allocation table is indexed
  3361.                                 for faster access, should be set if the file
  3362.                                 is larger than 2 MB)
  3363.                 - x - - - - - - Read audit bit ( not used currently )
  3364.                 x - - - - - - - Write audit bit ( not used currently )
  3365.  
  3366.         The  search  mode bits are only applicable for executable files,  they
  3367.         specify how the Netware shell  should  search  for any files that this
  3368.         file opens whilst it is running.  The following values are defined:
  3369.  
  3370.                 0   No mode, use the shell's default search mode.
  3371.                 1   Search for files in the current directory and then in the
  3372.                     current search drives, only if no path is specified.
  3373.                 2   Search for files in the current directory only.
  3374.                 3   Search current directory and then in the current search
  3375.                     drives, only if the file is being opened in read-only
  3376.                     mode and no path has been specified.
  3377.                 5   Search for files in the current directory and then in the
  3378.                     current search drives regardless of whether a drive or
  3379.                     directory is specified.
  3380.                 7   Search for files in the current directory and then in the
  3381.                     current search drives regardless of whether a drive or
  3382.                     directory is specified, but only if the file is being
  3383.                     opened in read-only mode.
  3384.  
  3385. 7.5 File Functions
  3386.  
  3387.     7.5.1 EraseFiles
  3388.  
  3389.           This marks the specified file for deletion.
  3390.  
  3391.           int EraseFiles(byte searchAttributes,byte directoryHandle,
  3392.               char *filePath);
  3393.  
  3394.           Input:
  3395.              searchAttributes: This is the type of file to be deleted.
  3396.              directoryHandle:  An optional directory handle, pointing to an
  3397.                                entry in the servers Directory Handle Table.
  3398.              filePath:         256-byte null terminated directory path name.
  3399.                                This can either be a full path name,
  3400.                                i.e. VOLUME:DIR\..\DIR in which case the
  3401.                                directory handle must be 0x00, or a partial
  3402.                                directory name which will be used in
  3403.                                conjunction with the directory handle.
  3404.  
  3405.           Returns:             Result code (see Appendix I)
  3406.  
  3407.                                                                                 
  3408. Netware C Library        Chapter Seven - File Services                 Page: 7-3
  3409. ────────────────────────────────────────────────────────────────────────────────
  3410.  
  3411.     7.5.2 FileServerFileCopy
  3412.  
  3413.           This functions copies files within a server.   No  data  is  brought
  3414.           back to the workstation, so network traffic is reduced.  The file to
  3415.           be copied and the target file must both be on the same server.
  3416.  
  3417.           int FileServerFileCopy(int sourceFileHandle,
  3418.               int destinationFileHandle,long sourceFileOffset,
  3419.               long destinationFileOffset,long numberOfBytesToCopy,
  3420.               long *numberOfBytesCopied);
  3421.  
  3422.           Input:
  3423.              sourceFileHandle:      A dos file handle of the source file.
  3424.              destinationFileHandle: A dos file handle of the destination
  3425.                                     file.
  3426.              sourceFileOffset:      The offset within the source file from
  3427.                                     which copying is to start, specify 0 for
  3428.                                     the start of the file.
  3429.              destinationFileOffset: The offset within the target file which
  3430.                                     is to start receiving data.
  3431.              numberOfBytesToCopy:   The total number of bytes to copy. Specify
  3432.                                     0 to copy the whole file.
  3433.  
  3434.           Output:
  3435.              numberOfBytesCopied:   The total number of bytes copied to the
  3436.                                     target file.
  3437.  
  3438.           Returns:                  Result code (see Appendix I)
  3439.  
  3440.     7.5.3 PurgeAllErasedFiles                                       (Operator)
  3441.  
  3442.           This permanently  deletes  all  files  marked  for  deletion  by all
  3443.           workstations on the network.
  3444.  
  3445.           int PurgeAllErasedFiles(void);
  3446.  
  3447.           Returns:    Result code (see Appendix I)
  3448.  
  3449.     7.5.4 PurgeErasedFiles
  3450.  
  3451.           This permanently deletes all  files  marked  for  deletion  by  this
  3452.           workstation.
  3453.  
  3454.           int PurgeErasedFiles(void);
  3455.  
  3456.           Returns:    Result code (see Appendix I)
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.                                                                                 
  3468. Netware C Library        Chapter Seven - File Services                 Page: 7-4
  3469. ────────────────────────────────────────────────────────────────────────────────
  3470.  
  3471.     7.5.5 ScanFileInformation
  3472.  
  3473.           Return  information about the specified file.  This call can be made
  3474.           iteratively  to  return  information  about  a  group  of  files  by
  3475.           including wildcards in the filepath.
  3476.  
  3477.           See chapter 1 for the nw_date and nw_time structure formats.
  3478.  
  3479.           int ScanFileInformation(byte directoryHandle,char *filePath,
  3480.                 byte searchAttributes,int *sequenceNumber,
  3481.                 char *fileName,byte *fileAttributes,
  3482.                 byte *extendedFileAttributes,long *fileSize,
  3483.                 nw_date *creationDate,nw_date *lastAccessDate,
  3484.                 nw_date *lastUpdateDate,nw_time *lastUpdateTime,
  3485.                 nw_date *lastArchiveDate,nw_time *lastArchieTime,
  3486.                 long *fileOwnerId);
  3487.  
  3488.           Input:
  3489.              directoryHandle:        An optional directory handle, pointing to
  3490.                                      an entry in the servers Directory Handle
  3491.                                      Table. If "filePath" contains the full
  3492.                                      path name then this must be 0x00.
  3493.              filePath:               256-byte null terminated directory path
  3494.                                      name. This can either be a full path name,
  3495.                                      i.e. VOLUME:DIR\..\DIR in which case
  3496.                                      source directory handle must be 0x00, or
  3497.                                      a partial directory name which will be
  3498.                                      used in conjunction with the directory
  3499.                                      handle.
  3500.              searchAttributes:       This is the type of file to be scanned
  3501.                                      for. (see section 7.2)
  3502.  
  3503.           Output:
  3504.              sequenceNumber:         On the first call this must contain -1.
  3505.                                      Do not alter for subsequent calls.
  3506.              fileName:               15-byte null terminated file name.
  3507.              fileAttributes:         Files attributes (see section 7.3)
  3508.              extendedFileAttributes: Extended attributes (see section 7.4)
  3509.              fileSize:               This is the size of the file in bytes.
  3510.              creationDate:           Date the file was created:
  3511.              lastAccessDate:         Date the file was last accessed.
  3512.              lastUpdateDate          Date the file was last updated.
  3513.              lastUpdateTime:         Time the file was last updated.
  3514.              lastArchiveDate:        Date the file was last archived.
  3515.              lastArchiveTime:        Time the file was last archived.
  3516.              fileOwnerId:            The bindery object ID of the user who
  3517.                                      created the file.
  3518.  
  3519.           Returns:                   Result code (see Appendix I)
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.                                                                                 
  3528. Netware C Library        Chapter Seven - File Services                 Page: 7-5
  3529. ────────────────────────────────────────────────────────────────────────────────
  3530.  
  3531.     7.5.6 SetFileInformation
  3532.  
  3533.           Return  information about the specified file.  This call can be made
  3534.           iteratively  to  return  information  about  a  group  of  files  by
  3535.           including wildcards in the filepath.
  3536.  
  3537.           See chapter 1 for the nw_date and nw_time structure formats.
  3538.  
  3539.           int SetFileInformation(byte directoryHandle,char *filePath,
  3540.               byte searchAttributes,byte *fileAttributes,
  3541.               byte *extendedFileAttributes,nw_date *creationDate,
  3542.               nw_date *lastAccessDate,nw_date *lastUpdateDate,
  3543.               nw_time *lastUpdateTime,nw_date *lastArchiveDate,
  3544.               nw_time *lastArchiveTime,long *fileOwnerId);
  3545.  
  3546.           Input:
  3547.              directoryHandle:        An optional directory handle, pointing to
  3548.                                      an entry in the servers Directory Handle
  3549.                                      Table. If "filePath" contains the full
  3550.                                      path name then this must be 0x00.
  3551.              filePath:               256-byte null terminated directory path
  3552.                                      name. This can either be a full path name,
  3553.                                      i.e. VOLUME:DIR\..\DIR in which case
  3554.                                      source directory handle must be 0x00, or
  3555.                                      a partial directory name which will be
  3556.                                      used in conjunction with the directory
  3557.                                      handle.
  3558.              searchAttributes:       This is the search attributes for the
  3559.                                      file. (see section 7.2)
  3560.              fileAttributes:         New file attributes (see section 7.3).
  3561.                                      Specify NULL if this isn't to be changed.
  3562.              extendedFileAttributes: New extended attributes (see section 7.4)
  3563.                                      Specify NULL if this isn't to be changed.
  3564.              creationDate:           New creation date.
  3565.                                      Specify NULL if this isn't to be changed.
  3566.              lastAccessDate:         New last accessed date.
  3567.                                      Specify NULL if this isn't to be changed.
  3568.              lastUpdateDate          New last updated date.
  3569.                                      Specify NULL if this isn't to be changed.
  3570.              lastUpdateTime:         New last updated time.
  3571.                                      Specify NULL if this isn't to be changed.
  3572.              lastArchiveDate:        New last archived date.
  3573.                                      Specify NULL if this isn't to be changed.
  3574.              lastArchiveTime:        New last archived time.
  3575.                                      Specify NULL if this isn't to be changed.
  3576.              fileOwnerId:            New file owners bindery object ID.
  3577.                                      Specify NULL if this isn't to be changed.
  3578.  
  3579.           Returns:                   Result code (see Appendix I)
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.                                                                                 
  3588. Netware C Library      Chapter Eight - Directory Services              Page: 8-1
  3589. ────────────────────────────────────────────────────────────────────────────────
  3590.  
  3591.                             8. Directory Services
  3592.  
  3593.     These calls can allocate and deallocate directory handles; create,  rename
  3594.     and destroy  directories;   add  and  delete  directory  trustees;  return
  3595.     information about volumes  and  directories;   and  modify  a  directories
  3596.     maximum rights mask.
  3597.  
  3598. 8.1 Directory Handle Table
  3599.  
  3600.     Every  connection  on  a  file  server  has  the ability to have up to 256
  3601.     directory handles,  these are held  on  the server in the Directory Handle
  3602.     Table,  one table for each connection, each table contains 256 slots where
  3603.     each slot represents a directory handle.   A directory handle is a number,
  3604.     1 to 255,  that points to a volume or a directory path.   Once a directory
  3605.     handle has been set this can be used when a volume or directory path needs
  3606.     to be specified.
  3607.  
  3608. 8.2 Drive Handle Table
  3609.  
  3610.     This  is  maintained  by  the workstations shell program.   It contains 32
  3611.     1-byte entries.   The first 26 slots represent the permanent drive letters
  3612.     A-Z, the last six slots represent the temporary drive letters:-
  3613.  
  3614.                 [   (left square bracket)
  3615.                 \   (backslash)
  3616.                 ]   (right square bracket)
  3617.                 ^   (caret)
  3618.                 _   (underline)
  3619.                 '   (apostrophe)
  3620.  
  3621.     Each slot in the table contains a directory handle number.
  3622.  
  3623. 8.3 Drive Flag Table
  3624.  
  3625.     This  is  maintained  by  the workstations shell program.   It contains 32
  3626.     1-byte entries.   The first 26 slots represent the permanent drive letters
  3627.     A-Z, the last six slots represent the temporary drive letters:-
  3628.  
  3629.                 [   (left square bracket)
  3630.                 \   (backslash)
  3631.                 ]   (right square bracket)
  3632.                 ^   (caret)
  3633.                 _   (underline)
  3634.                 '   (apostrophe)
  3635.  
  3636.     Each slot in the table contains a value which defines the type of drive:
  3637.  
  3638.                 0x00    Not allocated
  3639.                 0x01    Permanent Network drive
  3640.                 0x02    Temporary Network drive
  3641.                 0x80    Local drive
  3642.                 0x81    Local drive allocated as a permanent network drive
  3643.                 0x82    Local drive allocated as a temporary network drive
  3644.  
  3645.  
  3646.  
  3647.                                                                                 
  3648. Netware C Library      Chapter Eight - Directory Services              Page: 8-2
  3649. ────────────────────────────────────────────────────────────────────────────────
  3650.  
  3651. 8.4 Drive Connection ID Table
  3652.  
  3653.     This  is  maintained  by  the workstations shell program.   It contains 32
  3654.     1-byte entries.   The first 26 slots represent the permanent drive letters
  3655.     A-Z, the last six slots represent the temporary drive letters:-
  3656.  
  3657.                 [   (left square bracket)
  3658.                 \   (backslash)
  3659.                 ]   (right square bracket)
  3660.                 ^   (caret)
  3661.                 _   (underline)
  3662.                 '   (apostrophe)
  3663.  
  3664.     Each slot contains a value,  0 to 8, identifying the server to  which  the
  3665.     drive  letter  is  mapped.    A value of 0 indicates that the drive is not
  3666.     mapped,  a value of  1-8  represents  the  position  of  the server in the
  3667.     workstations Server Name Table.
  3668.  
  3669. 8.5 Trustee Rights
  3670.  
  3671.     A users trustee rights and a directories maximum rights are held as 1 byte
  3672.     consisting of the following settings:-
  3673.  
  3674.             (MSB)   Bit 7:  Modify (file attributes can be modified)
  3675.                         6:  Search (directory can be searched)
  3676.                         5:  Parental (subdirectories can be created/deleted
  3677.                                       & trustee rights granted/revoked)
  3678.                         4:  Delete (files can be deleted)
  3679.                         3:  Create (files can be created)
  3680.                         2:  Open (files can be opened)
  3681.                         1:  Write (file writes allowed)
  3682.             (LSB)       0:  Read (file reads allowed)
  3683.  
  3684.     When a users trustee  rights  and  a  directories  maximum rights mask are
  3685.     logically anded together,  they produce a users effective  rights  in  the
  3686.     specified directory.
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.                                                                                 
  3708. Netware C Library      Chapter Eight - Directory Services              Page: 8-3
  3709. ────────────────────────────────────────────────────────────────────────────────
  3710.  
  3711. 8.6 Directory Functions
  3712.  
  3713.     8.6.1 AddTrusteeToDirectory
  3714.  
  3715.           Add  a  trustee  to  a  directories  trustee  list.   The requesting
  3716.           workstation must have parental rights to the target directory, or to
  3717.           a parent directory.
  3718.  
  3719.           int AddTrusteeToDirectory(byte directoryHandle,char *directoryPath,
  3720.               long trusteeObjectID,byte trusteeRightsMask);
  3721.  
  3722.           Input:
  3723.              directoryHandle:   An optional directory handle, pointing to an
  3724.                                 entry in the servers Directory Handle Table.
  3725.                                 If "directoryPath" contains the full pathname
  3726.                                 then this must be 0x00.
  3727.              directoryPath:     256-byte null terminated directory path name.
  3728.                                 This can either be a full path name, i.e.
  3729.                                 VOLUME:DIR\..\DIR or a partial name containing
  3730.                                 at least a directory name.
  3731.              trusteeObjectID:   Bindery object ID of user name to add to
  3732.                                 the specified directories trustee list.
  3733.              trusteeRightsMask: The rights mask to be given to the user.
  3734.                                 If the user is already a trustee in the
  3735.                                 specified directory, then this replaces the
  3736.                                 existing rights.
  3737.  
  3738.           Returns:              Result code (see Appendix I)
  3739.  
  3740.     8.6.2 AddUserDiskSpaceRestriction
  3741.  
  3742.           Sets an object's volume disk space restriction. All restrictions are
  3743.           in 4k blocks.
  3744.  
  3745.           int AddUserDiskSpaceRestriction(byte volumeNumber,
  3746.               long objectID, long volumeLimit);
  3747.  
  3748.           Input:
  3749.              volumeNumber:   This identifies the volume in the file servers
  3750.                              Volume Table.
  3751.              objectID:       Bindery object ID of the user to which disk space
  3752.                              restriction is to be added.
  3753.              volumeLimit:    Disk space limit. Valid value is from 0 to
  3754.                              0x40000000.
  3755.  
  3756.           Returns:              Result code (see Appendix I)
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.                                                                                 
  3768. Netware C Library      Chapter Eight - Directory Services              Page: 8-4
  3769. ────────────────────────────────────────────────────────────────────────────────
  3770.  
  3771.     8.6.3 AllocPermanentDirectoryHandle
  3772.  
  3773.           Permanently assign a workstation drive to a network directory.
  3774.  
  3775.           int AllocPermanentDirectoryHandle(byte directoryHandle,
  3776.               char *directoryPath,char driveLetter,byte *newDirectoryHandle,
  3777.               byte *effectiveRightsMask);
  3778.  
  3779.           Input:
  3780.              directoryHandle:     An optional directory handle, pointing to
  3781.                                   an entry in the servers Directory Handle
  3782.                                   Table. If "directoryPath" contains the
  3783.                                   full path name then this must be 0x00.
  3784.              directoryPath:       256-byte null terminated directory path
  3785.                                   name. This can either be a full path name,
  3786.                                   i.e. VOLUME:DIR\..\DIR or a partial name
  3787.                                   containing at least a directory name.
  3788.              driveLetter:         Drive letter to assign to the directory.
  3789.  
  3790.           Output:
  3791.              newDirectoryHandle:  The new directory handle pointing to the
  3792.                                   specified directory.
  3793.              effectiveRightsMask: This is the result of logically anding
  3794.                                   the users trustee rights with the
  3795.                                   directories maximum rights.
  3796.  
  3797.           Returns:                Result code (see Appendix I)
  3798.  
  3799.     8.6.4 AllocTemporaryDirectoryHandle
  3800.  
  3801.           Temporarily assign a workstation drive to a network directory.   The
  3802.           allocation is only valid until the application executes an EndOfJob,
  3803.           or     until     the     job     deallocates    the    drive    with
  3804.           DeallocateDirectoryHandle.
  3805.  
  3806.           int AllocTemporaryDirectoryHandle(byte directoryHandle,
  3807.               char *directoryPath,char driveLetter,byte *newDirectoryHandle,
  3808.               byte *effectiveRightsMask);
  3809.  
  3810.           Input:
  3811.              directoryHandle:     An optional directory handle, pointing to
  3812.                                   an entry in the servers Directory Handle
  3813.                                   Table. If "directoryPath" contains the
  3814.                                   full path name then this must be 0x00.
  3815.              directoryPath:       256-byte null terminated directory path
  3816.                                   name. This can either be a full path name,
  3817.                                   i.e. VOLUME:DIR\..\DIR or a partial name
  3818.                                   containing at least a directory name.
  3819.              driveLetter:         Drive letter to assign to the specified
  3820.                                   directory.
  3821.  
  3822.           Output:
  3823.              newDirectoryHandle:  The new directory handle pointing to the
  3824.                                   specified directory.
  3825.  
  3826.  
  3827.                                                                                 
  3828. Netware C Library      Chapter Eight - Directory Services              Page: 8-5
  3829. ────────────────────────────────────────────────────────────────────────────────
  3830.  
  3831.              effectiveRightsMask: This is the result of logically anding
  3832.                                   the users trustee rights with the
  3833.                                   directories maximum rights.
  3834.  
  3835.           Returns:                Result code (see Appendix I)
  3836.  
  3837.     8.6.5 CreateDirectory
  3838.  
  3839.           This creates a subdirectory under  the directory which is pointed to
  3840.           by "directoryHandle".
  3841.  
  3842.           int CreateDirectory(byte directoryHandle,byte maximumRightsMask,
  3843.               char *directoryPath);
  3844.  
  3845.           Input:
  3846.              directoryHandle:   An optional directory handle, pointing to
  3847.                                 an entry in the servers Directory Handle
  3848.                                 Table. If "directoryPath" contains the
  3849.                                 full path name then this must be 0x00.
  3850.              maximumRightsMask: This indicates the maximu rights that a
  3851.                                 user can have in this directory.
  3852.              directoryPath:     256-byte null terminated directory path
  3853.                                 name. This can either be a full path name,
  3854.                                 i.e. VOLUME:DIR\..\DIR or a partial name
  3855.                                 containing at least a directory name.
  3856.  
  3857.           Returns:              Result code (see Appendix I)
  3858.  
  3859.     8.6.6 DeallocateDirectoryHandle
  3860.  
  3861.           Deallocate a permanent or temporary directory handle.
  3862.  
  3863.           int DeallocateDirectoryHandle(byte directoryHandle);
  3864.  
  3865.           Input:
  3866.              directoryHandle:    Directory handle to deallocate.
  3867.  
  3868.           Returns:               Result code (see Appendix I)
  3869.  
  3870.     8.6.7 DeleteDirectory
  3871.  
  3872.           int DeleteDirectory(byte directoryHandle,char *directoryPath);
  3873.  
  3874.           Input:
  3875.              directoryHandle:   An optional directory handle, pointing to
  3876.                                 an entry in the servers Directory Handle
  3877.                                 Table. If "directoryPath" contains the
  3878.                                 full path name then this must be 0x00.
  3879.              directoryPath:     256-byte null terminated directory path
  3880.                                 name. This can either be a full path name,
  3881.                                 i.e. VOLUME:DIR\..\DIR or a partial name
  3882.                                 containing at least a directory name.
  3883.  
  3884.           Returns:              Result code (see Appendix I)
  3885.  
  3886.  
  3887.                                                                                 
  3888. Netware C Library      Chapter Eight - Directory Services              Page: 8-6
  3889. ────────────────────────────────────────────────────────────────────────────────
  3890.  
  3891.     8.6.8 DeleteFakeRoot
  3892.  
  3893.           This call deletes a fake root, that was created using MapFakeRoot.
  3894.  
  3895.           void DeleteFakeRoot(byte drive);
  3896.  
  3897.           Input:
  3898.              drive:   Drive number to remove   ( 0=current, 1=A, 2=B etc. )
  3899.  
  3900.     8.6.9 DeleteTrusteeFromDirectory
  3901.  
  3902.           This removes a trustee form a directorys trustee list.
  3903.  
  3904.           int DeleteTrusteeFromDirectory(byte directoryHandle,
  3905.               char *directoryPath,long trusteeObjectID);
  3906.  
  3907.           Input:
  3908.              directoryHandle: An optional directory handle, pointing to an
  3909.                               entry in the servers Directory Handle Table.
  3910.                               If "directoryPath" contains the full path name
  3911.                               then this must be 0x00.
  3912.              directoryPath:   256-byte null terminated directory path name.
  3913.                               This can either be a full path name, i.e.
  3914.                               VOLUME:DIR\..\DIR or a partial name containing
  3915.                               at least a directory name.
  3916.              trusteeObjectID: Bindery object ID of user name to remove
  3917.                               from the specified directories trustee list.
  3918.  
  3919.           Returns:            Result code (see Appendix I)
  3920.  
  3921.     8.6.10 GetCurrentDirectory
  3922.  
  3923.           This returns the current directory for the given drive.
  3924.  
  3925.           int GetCurrentDirectory(char driveNumber,char *directoryPath);
  3926.  
  3927.           Input:
  3928.              driveNumber:    Drive number whose current directory is to be
  3929.                              returned. (0 to 25 = A-Z, 26 to 31 = [\]^_')
  3930.  
  3931.           Output:
  3932.              directoryPath:  256-byte null terminated current path of
  3933.                              specified drive.
  3934.  
  3935.           Returns:           Result code (see Appendix I)
  3936.  
  3937.     8.6.11 GetDirectoryHandle
  3938.  
  3939.           Returns the directory handle of the given drive.
  3940.  
  3941.           int GetDirectoryHandle(char driveNumber,byte *statusFlags);
  3942.  
  3943.           Input:
  3944.              driveNumber:    Drive number whose handle is to be returned.
  3945.                              (0 to 25 = A-Z, 26 to 31 = [\]^_' )
  3946.  
  3947.                                                                                 
  3948. Netware C Library      Chapter Eight - Directory Services              Page: 8-7
  3949. ────────────────────────────────────────────────────────────────────────────────
  3950.  
  3951.           Output:
  3952.              statusFlags:    This is 1-byte with the following bits defined:-
  3953.                                 (MSB)   Bit 7:    Mapped to a local drive
  3954.                                             6-2:  Unused
  3955.                                             1:    Temporary directory handle
  3956.                                 (LSB)       0:    Permanent directory handle
  3957.  
  3958.           Returns:           Directory Handle (1 to 255), or zero if invalid.
  3959.  
  3960.     8.6.12 GetDirectoryPath
  3961.  
  3962.           Returns the directory path of the specified handle.
  3963.  
  3964.           int GetDirectoryPath(byte directoryHandle,char *directoryPath);
  3965.  
  3966.           Input:
  3967.              directoryHandle: Directory handle whose path is to be returned.
  3968.  
  3969.           Output:
  3970.              directoryPath:   256-byte null terminated full path name.
  3971.  
  3972.           Returns:            Result code (see Appendix I)
  3973.  
  3974.     8.6.13 GetEffectiveDirectoryRights
  3975.  
  3976.           Returns the current users effective rights to the directory.
  3977.  
  3978.           int GetEffectiveDirectoryRights(byte directoryHandle,
  3979.               char *directoryPath,byte *effectiveRights);
  3980.  
  3981.           Input:
  3982.              directoryHandle: An optional directory handle, pointing to an
  3983.                               entry in the servers Directory Handle Table.
  3984.                               If "directoryPath" contains the full path name
  3985.                               then this must be 0x00.
  3986.              directoryPath:   256-byte null terminated directory path name.
  3987.                               This can either be a full path name, i.e.
  3988.                               VOLUME:DIR\..\DIR or a partial name containing
  3989.                               at least a directory name.
  3990.  
  3991.           Output:
  3992.              effectiveRights: Users effective rights in this directory.
  3993.  
  3994.           Returns:            Result code (see Appendix I)
  3995.  
  3996.     8.6.14 GetVolumeInformation
  3997.  
  3998.           This  returns information about the specified volume.  The structure
  3999.           VolumeStatistics is defined in the header file "NWDirect.h"
  4000.  
  4001.           int GetVolumeInformation(byte volumeNumber,
  4002.                                    VOLUME_STATISTICS *replyBuffer);
  4003.  
  4004.           Input:
  4005.              volumeNumber:   This identifies the volume in the file servers
  4006.                              Volume Table.
  4007.                                                                                 
  4008. Netware C Library      Chapter Eight - Directory Services              Page: 8-8
  4009. ────────────────────────────────────────────────────────────────────────────────
  4010.  
  4011.  
  4012.           Output:
  4013.              replyBuffer:    Structure containing the volume statistics.
  4014.                              It is declared in the header file "NWDirect.h".
  4015.                              See Appendix III.
  4016.  
  4017.           Returns:           Result code (see Appendix I)
  4018.  
  4019.     8.6.15 GetVolumeInfoWithHandle
  4020.  
  4021.           This returns information about a volume using a directory handle.
  4022.  
  4023.           int GetVolumeInfoWithHandle(byte directoryHandle,
  4024.               char *volumeName,word *sectorsPerBlock,word *totalBlocks,
  4025.               word *availableBlocks,word *totalDirectorySlots,
  4026.               word *availableDirectorySlots,int *volumeIsRemovable);
  4027.  
  4028.           Input:
  4029.              directoryHandle:         Directory handle pointing to an entry
  4030.                                       in the servers Directory Handle Table.
  4031.  
  4032.           Output:
  4033.              volumeName:              17-byte null terminated volume name
  4034.              sectorsPerBlock:         This is the number of 512-byte
  4035.                                       sectors contained in each block of
  4036.                                       the specified volume.
  4037.              totalBlocks:             This is the total number of blocks
  4038.                                       on the specified volume.
  4039.              availableBlocks:         This is the total number of unused
  4040.                                       blocks on the specified volume.
  4041.              totalDirectorySlots:     This is the number of directory slots
  4042.                                       that the installer allocated.
  4043.              availableDirectorySlots: This is the total number of unused
  4044.                                       directory slots.
  4045.              volumeIsRemovable:       A value of zero indicates that the
  4046.                                       volume cannot be removed.
  4047.  
  4048.           Returns:                    Result code (see Appendix I)
  4049.  
  4050.     8.6.16 GetVolumeInfoWithNumber
  4051.  
  4052.           This returns information about a volume using a volume number.
  4053.  
  4054.           int GetVolumeInfoWithNumber(byte volumeNumber,char *volumeName,
  4055.               word *sectorsPerBlock,word *totalBlocks,word *availableBlocks,
  4056.               word *totalDirectorySlots,word *availableDirectorySlots,
  4057.               int *volumeIsRemovable);
  4058.  
  4059.           Input:
  4060.              volumeNumber:            Number of the volume in the servers
  4061.                                       Volume Name Table.
  4062.  
  4063.           Output:
  4064.              volumeName:              17-byte null terminated volume name
  4065.  
  4066.  
  4067.                                                                                 
  4068. Netware C Library      Chapter Eight - Directory Services              Page: 8-9
  4069. ────────────────────────────────────────────────────────────────────────────────
  4070.  
  4071.              sectorsPerBlock:         This is the number of 512-byte
  4072.                                       sectors contained in each block of
  4073.                                       the specified volume.
  4074.              totalBlocks:             This is the total number of blocks
  4075.                                       on the specified volume.
  4076.              availableBlocks:         This is the total number of unused
  4077.                                       blocks on the specified volume.
  4078.              totalDirectorySlots:     This is the number of directory slots
  4079.                                       that the installer allocated.
  4080.              availableDirectorySlots: This is the total number of unused
  4081.                                       directory slots.
  4082.              volumeIsRemovable:       A value of zero indicates that the
  4083.                                       volume cannot be removed.
  4084.  
  4085.           Returns:                    Result code (see Appendix I)
  4086.  
  4087.     8.6.17 GetVolumeName
  4088.  
  4089.           This call returns the volume name of the specified volume.
  4090.  
  4091.           int GetVolumeName(int volumeNumber,char *volumeName);
  4092.  
  4093.           Input:
  4094.              volumeNumber:   This identifies the volume in the servers volume
  4095.                              table, it is an integer in the range 0-31.
  4096.  
  4097.           Output:
  4098.              volumeName:     17-byte null terminated name of the volume.
  4099.  
  4100.           Returns:           Result code (see Appendix I)
  4101.  
  4102.     8.6.18 GetVolumeNumber
  4103.  
  4104.           This call returns the volume number of the specified volume.
  4105.  
  4106.           int GetVolumeNumber(char *volumeName,int *volumeNumber);
  4107.  
  4108.           Input:
  4109.              volumeName:     17-byte null terminated Volume name.
  4110.  
  4111.           Output:
  4112.              volumeNumber:   Returned internal number of the specified volume.
  4113.  
  4114.           Returns:           Result code (see Appendix I)
  4115.  
  4116.     8.6.19 MapFakeRoot
  4117.  
  4118.           This call allows you to map any  drive as a fake root.  If the drive
  4119.           is not currently mapped then this will create the  mapping  and  set
  4120.           the  fake  root.
  4121.  
  4122.           int MapFakeRoot(byte drive,char *path);
  4123.  
  4124.           Input:
  4125.              drive:   Drive number to map ( 0 = current, 1 = A ,
  4126.                                             2 = B etc. )
  4127.                                                                                 
  4128. Netware C Library      Chapter Eight - Directory Services             Page: 8-10
  4129. ────────────────────────────────────────────────────────────────────────────────
  4130.  
  4131.              path:    The full path for the fake root.
  4132.  
  4133.           Returns:    Result code (see Appendix I)
  4134.  
  4135.     8.6.20 ModifyMaximumRightsMask
  4136.  
  4137.           Modify the maximum rights mask of a specific directory.
  4138.  
  4139.           int ModifyMaximumRightsMask(byte directoryHandle,
  4140.               char *directoryPath,byte revokeRightsMask,byte grantRightsMask);
  4141.  
  4142.           Input:
  4143.              directoryHandle:  An optional directory handle, pointing to an
  4144.                                entry in the servers Directory Handle Table.
  4145.                                If "directoryPath" contains the full path name
  4146.                                then this must be 0x00.
  4147.              directoryPath:    256-byte null terminated directory path name.
  4148.                                This can either be a full path name, i.e.
  4149.                                VOLUME:DIR\..\DIR or a partial name containing
  4150.                                at least a directory name.
  4151.              revokeRightsMask: The rights to be removed.
  4152.              grantRightsMask:  The rights to be added
  4153.  
  4154.           Returns:             Result code (see Appendix I)
  4155.  
  4156.     8.6.21 RenameDirectory
  4157.  
  4158.           Renames the specified server directory.
  4159.  
  4160.           int RenameDirectory(byte directoryHandle,char *directoryPath,
  4161.               char *newDirectoryName);
  4162.  
  4163.           Input:
  4164.              directoryHandle:  An optional directory handle, pointing to an
  4165.                                entry in the servers Directory Handle Table.
  4166.                                If "directoryPath" contains the full path name
  4167.                                then this must be 0x00.
  4168.              directoryPath:    256-byte null terminated directory path name.
  4169.                                This can either be a full path name, i.e.
  4170.                                VOLUME:DIR\..\DIR or a partial name containing
  4171.                                at least a directory name.
  4172.              newDirectoryName: 15-byte null terminated new directory name.
  4173.  
  4174.           Returns:             Result code (see Appendix I)
  4175.  
  4176.     8.6.22 RestoreDirectoryHandle
  4177.  
  4178.           Restores a previously saved directory handle
  4179.  
  4180.           int RestoreDirectoryHandle(char *saveBuffer,
  4181.               byte *newDirectoryHandle,byte *effectiveRightsMask);
  4182.  
  4183.           Input:
  4184.              saveBuffer:          16-byte save buffer.
  4185.  
  4186.  
  4187.                                                                                 
  4188. Netware C Library      Chapter Eight - Directory Services             Page: 8-11
  4189. ────────────────────────────────────────────────────────────────────────────────
  4190.  
  4191.           Output:
  4192.              newDirectoryHandle:  The directory handle that has been restored.
  4193.              effectiveRightsMask: The users current effective rights here.
  4194.  
  4195.           Returns:                Result code (see Appendix I)
  4196.  
  4197.     8.6.23 SaveDirectoryHandle
  4198.  
  4199.           Saves a specific directory handle.
  4200.  
  4201.           int SaveDirectoryHandle(byte directoryHandle,char *saveBuffer);
  4202.  
  4203.           Input:
  4204.              directoryHandle:    Directory handle to be saved.
  4205.  
  4206.           Output:
  4207.              saveBuffer:         16-byte buffer which contains the saved
  4208.                                  information.
  4209.  
  4210.           Returns:               Result code (see Appendix I)
  4211.  
  4212.     8.6.24 ScanBinderyObjectTrusteePaths
  4213.  
  4214.           This  returns  the directory paths to which the specified object has
  4215.           trustee rights.  This call  must  be  made  repeatedly to obtain all
  4216.           paths.
  4217.  
  4218.           int ScanBinderyObjectTrusteePaths(long objectID,byte volumeNumber,
  4219.               int *sequenceNumber,char *trusteeAccessMask,
  4220.               char *trusteePathName);
  4221.  
  4222.           Input:
  4223.              objectID:           Bindery object ID to scan for.
  4224.              volumeNumber:       Server volume number to scan (0-31)
  4225.              sequenceNumber:     On the first call this must contain zero.
  4226.                                  Do not alter for subsequent calls.
  4227.  
  4228.           Output:
  4229.              sequenceNumber:     Returns the sequence number of the next path.
  4230.              trusteeAccessMask:  The rights the object has in this directory.
  4231.              trusteePathName:    256-byte null terminated path name.
  4232.  
  4233.           Returns:               Result code (see Appendix I)
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.                                                                                 
  4248. Netware C Library      Chapter Eight - Directory Services             Page: 8-12
  4249. ────────────────────────────────────────────────────────────────────────────────
  4250.  
  4251.     8.6.25 ScanDirectoryForTrustees
  4252.  
  4253.           This returns the  trustees  of  the  specified directory.  This call
  4254.           must be made repeatedly in order to obtain all the trustees  of  the
  4255.           specified directory.
  4256.  
  4257.           See chapter 1 for the nw_date and nw_time structure formats.
  4258.  
  4259.           int ScanDirectoryForTrustees(byte directoryHandle,
  4260.               char *directoryPath,int *sequenceNumber,char *directoryName,
  4261.               nw_date *creationDate,nw_time *creationTime,long *ownerID,
  4262.               long *trusteeID,byte *trusteeRightsMask);
  4263.  
  4264.           Input:
  4265.              directoryHandle:  An optional directory handle, pointing to an
  4266.                                entry in the servers Directory Handle Table.
  4267.                                If "directoryPath" contains the full path name
  4268.                                then this must be 0x00.
  4269.              directoryPath:    256-byte null terminated directory path name.
  4270.                                This can either be a full path name, i.e.
  4271.                                VOLUME:DIR\..\DIR or a partial name containing
  4272.                                at least a directory name.
  4273.              sequenceNumber:   On the first call this must contain zero.
  4274.                                Do not alter for subsequent calls.
  4275.  
  4276.           Output:
  4277.              sequenceNumber:   Returns the sequence number of the next trustee
  4278.              directoryName:    16-byte name of the directory.
  4279.              creationDate:     Date the directory was created.
  4280.              creationTime:     Time the directory was created.
  4281.              ownerID:          The bindery object ID of the user that created
  4282.                                this directory.
  4283.              trusteeID:        The bindery object ID of a trustee of the
  4284.                                directory.
  4285.              trusteeRightsMask:The trustees effective rights in this
  4286.                                directory.
  4287.  
  4288.           Returns:               Result code (see Appendix I)
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.                                                                                 
  4308. Netware C Library      Chapter Eight - Directory Services             Page: 8-13
  4309. ────────────────────────────────────────────────────────────────────────────────
  4310.  
  4311.     8.6.26 ScanDirectoryInformation
  4312.  
  4313.           This returns information about the first or next subdirectory of the
  4314.           specified directory.
  4315.  
  4316.           See chapter 1 for the nw_date and nw_time structure formats.
  4317.  
  4318.           int ScanDirectoryInformation(byte searchDirectoryHandle,
  4319.               char *searchDirectoryPath,int *subdirNumber,char *directoryName,
  4320.               nw_date *creationDate,nw_time *creationTime,long *ownerObjectID,
  4321.               byte *maximumRightsMask);
  4322.  
  4323.           Input:
  4324.              searchDirectoryHandle:  An optional directory handle, pointing to
  4325.                                      an entry in  the servers Directory Handle
  4326.                                      Table.  If "searchDirectoryPath" contains
  4327.                                      the full path  name  then  this  must  be
  4328.                                      0x00.
  4329.              searchDirectoryPath:    256-byte null terminated directory path
  4330.                                      name. This can either be a full path name
  4331.                                      i.e. VOLUME:DIR\..\DIR or a partial name
  4332.                                      containing at least a directory name. The
  4333.                                      path can contain wildcard characters.
  4334.              subdirNumber:           On the first call this must contain zero.
  4335.                                      Do not alter for subsequent calls.
  4336.  
  4337.           Output:
  4338.              subdirNumber:           Returns the directory number of the next
  4339.                                      sub directory.
  4340.              directoryName:          16-byte name of the directory.
  4341.              creationDate:           Date the directory was created.
  4342.              creationTime:           Time the directory was created.
  4343.              ownerObjectID:          The bindery object ID of the user that
  4344.                                      created this directory.
  4345.              maximumRightsMask:      This is the maximum rights that any user
  4346.                                      will have in this subdirectory. See
  4347.                                      section 8.5 for possible settings.
  4348.  
  4349.           Returns:                   Result code (see Appendix I)
  4350.  
  4351.     8.6.27 SetDirectoryHandle
  4352.  
  4353.           Assigns a directory handle to a given path.
  4354.  
  4355.           int SetDirectoryHandle(byte sourceDirectoryHandle,
  4356.               char *sourceDirectoryPath,byte targetDirectoryHandle);
  4357.  
  4358.           Input:
  4359.              sourceDirectoryHandle:  An optional directory handle, pointing to
  4360.                                      an entry in the servers Directory Handle
  4361.                                      Table. If "sourceDirectoryPath" contains
  4362.                                      the full path name then this must be 0x00
  4363.  
  4364.  
  4365.  
  4366.  
  4367.                                                                                 
  4368. Netware C Library      Chapter Eight - Directory Services             Page: 8-14
  4369. ────────────────────────────────────────────────────────────────────────────────
  4370.  
  4371.              sourceDirectoryPath:    256-byte null terminated directory path
  4372.                                      name. This can either be a full path name
  4373.                                      i.e. VOLUME:DIR\..\DIR in which case
  4374.                                      source directory handle must be 0x00, or
  4375.                                      a partial directory name which will be
  4376.                                      used in conjunction with the source
  4377.                                      directory handle.
  4378.              targetDirectoryHandle:  The directory handle which is to point
  4379.                                      to the above specified directory. If the
  4380.                                      call fails, then this will point to its
  4381.                                      original directory.
  4382.  
  4383.           Returns:                   Result code (see Appendix I)
  4384.  
  4385.     8.6.28 SetDirectoryInformation
  4386.  
  4387.           This functions sets information for a specified directory.
  4388.  
  4389.           See chapter 1 for the nw_date and nw_time structure formats.
  4390.  
  4391.           int SetDirectoryInformation(byte directoryHandle,
  4392.               char *directoryPath,nw_date *creationDate,nw_time *creationTime,
  4393.               long *ownerObjectID,byte *maximumRightsMask);
  4394.  
  4395.           Input:
  4396.              directoryHandle:   An optional directory handle, pointing to an
  4397.                                 entry in the servers Directory Handle Table.
  4398.                                 If "directoryPath" contains the full path name
  4399.                                 then this must be 0x00.
  4400.              directoryPath:     256-byte null terminated directory path name.
  4401.                                 This can either be a full path name, i.e.
  4402.                                 VOLUME:DIR\..\DIR or a partial name containing
  4403.                                 at least a directory name.
  4404.              creationDate:      New directory creation date.
  4405.                                 Specify NULL if this isn't to be changed.
  4406.              creationTime:      New directory creation time.
  4407.                                 Specify NULL if this isn't to be changed.
  4408.              ownerObjectID:     New owner of the directory.
  4409.                                 Specify NULL if this isn't to be changed.
  4410.              maximumRightsMask: New maximum rights mask for the directory.
  4411.                                 Specify NULL if this isn't to be changed.
  4412.  
  4413.           Returns:                   Result code (see Appendix I)
  4414.  
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.                                                                                 
  4428. Netware C Library        Chapter Nine - Print Services                 Page: 9-1
  4429. ────────────────────────────────────────────────────────────────────────────────
  4430.  
  4431.                               9. Print Services
  4432.  
  4433.     These services allow data that is sent to a LPT device, to be captured and
  4434.     redirected to a specific file server.
  4435.  
  4436. 9.1 Print Functions
  4437.  
  4438.     9.1.1 CancelLPTCapture
  4439.  
  4440.           This cancels the capture of the default LPT device.  The print queue
  4441.           job entry is removed and the capture  file is deleted unless it is a
  4442.           permanent file.  The LPT device is then returned to  local  printing
  4443.           mode.
  4444.  
  4445.           int CancelLPTCapture(void);
  4446.  
  4447.           Returns:    Result code (see Appendix I)
  4448.  
  4449.     9.1.2 CancelSpecificLPTCapture
  4450.  
  4451.           This  cancels the capture of a specific LPT device.  The print queue
  4452.           job entry is removed and the capture  file is deleted unless it is a
  4453.           permanent file.  The LPT device is then returned to  local  printing
  4454.           mode.
  4455.  
  4456.           int CancelSpecificLPTCapture(int prnNo);
  4457.  
  4458.           Input:
  4459.              prnNo:  LPT device number (0-2,0=LPT1)
  4460.  
  4461.           Returns:   Result code (see Appendix I)
  4462.  
  4463.     9.1.3 EndLPTCapture
  4464.  
  4465.           This  call  ends the capture of the default LPT device.  The capture
  4466.           file will be closed and the queue job entry will be released so that
  4467.           a print service may process it.   The LPT device is then returned to
  4468.           local printing mode.
  4469.  
  4470.           int EndLPTCapture(void);
  4471.  
  4472.           Returns:    Result code (see Appendix I)
  4473.  
  4474.     9.1.4 EndSpecificLPTCapture
  4475.  
  4476.           This call ends the capture of a specific LPT  device.   The  capture
  4477.           file will be closed and the queue job entry will be released so that
  4478.           a  print service may process it.  The LPT device is then returned to
  4479.           local printing mode.
  4480.  
  4481.           int EndSpecificLPTCapture(int prnNo);
  4482.  
  4483.           Input:
  4484.              prnNo:  LPT device number (0-2,0=LPT1)
  4485.  
  4486.           Returns:   Result code (see Appendix I)
  4487.                                                                                 
  4488. Netware C Library        Chapter Nine - Print Services                 Page: 9-2
  4489. ────────────────────────────────────────────────────────────────────────────────
  4490.  
  4491.  
  4492.     9.1.5 FlushLPTCapture
  4493.  
  4494.           This closes the  current  capture  file  of  the default LPT device.
  4495.           After this call is  made,  the  default  LPT  device  remains  in  a
  4496.           captured state.
  4497.  
  4498.           int FlushLPTCapture(void);
  4499.  
  4500.           Returns:    Result code (see Appendix I)
  4501.  
  4502.     9.1.6 FlushSpecificLPTCapture
  4503.  
  4504.           This  closes  the  current  capture  file  of a specific LPT device.
  4505.           After this call is  made,  the  specificied  LPT device remains in a
  4506.           captured state.
  4507.  
  4508.           int FlushSpecificLPTCapture(int prnNo);
  4509.  
  4510.           Input:
  4511.              prnNo:  LPT device number (0-2, 0=LPT1)
  4512.  
  4513.           Returns:   Result code (see Appendix I)
  4514.  
  4515.     9.1.7 GetBannerUserName
  4516.  
  4517.           Returns the user name that is printed on the banner page.
  4518.  
  4519.           int GetBannerUserName(char *pointer);
  4520.  
  4521.           Output:
  4522.              pointer:    13-byte null terminated user name
  4523.  
  4524.           Returns:       Result code (see Appendix I)
  4525.  
  4526.     9.1.8 GetLPTCaptureStatus
  4527.  
  4528.           This returns whether the default capture is active.
  4529.  
  4530.           int GetLPTCaptureStatus(void);
  4531.  
  4532.           Returns:    Capture Status.
  4533.                         0x00    Capture is not active
  4534.                         0xff    Capture is active
  4535.  
  4536.     9.1.9 GetDefaultLocalPrinter
  4537.  
  4538.           This returns the number of the default LPT device.
  4539.  
  4540.           int GetDefaultLocalPrinter(void);
  4541.  
  4542.           Returns:    Default LPT device number.
  4543.                         0x00    LPT1
  4544.                         0x01    LPT2
  4545.                         0x02    LPT3
  4546.  
  4547.                                                                                 
  4548. Netware C Library        Chapter Nine - Print Services                 Page: 9-3
  4549. ────────────────────────────────────────────────────────────────────────────────
  4550.  
  4551.     9.1.10 GetDefaultCaptureFlags
  4552.  
  4553.           Returns the print job flags for the default LPT device.
  4554.  
  4555.           int GetDefaultCaptureFlags(PRINT_CONTROL_DATA *reply);
  4556.  
  4557.           Output:
  4558.              reply:  Structure containing flags.
  4559.                      See Appendix III.
  4560.  
  4561.           Returns:   Result code (see Appendix I)
  4562.  
  4563.     9.1.11 GetPrinterStatus
  4564.  
  4565.           This returns the current status of the specified server printer.
  4566.  
  4567.           int GetPrinterStatus(int prnNo,byte *printerHalted,
  4568.               byte *printerOffline,byte *formType,byte *targetPrinterNumber);
  4569.  
  4570.           Input:
  4571.              prnNo:               Server printer number (0-4).
  4572.  
  4573.           Output:
  4574.              printerHalted:       A value of 0x00 indicates that the printer
  4575.                                   is active, and a value of 0xff if the
  4576.                                   printer is stopped.
  4577.              printerOffline:      A value of 0x01 indicates the printer is
  4578.                                   offline.
  4579.              formType:            This is the form type that is currently
  4580.                                   in use.
  4581.              targetPrinterNumber: This should be the same as the printer
  4582.                                   number specified in prnNo, unless the
  4583.                                   server console has rerouted the printer.
  4584.  
  4585.           Returns:                Result code (see Appendix I)
  4586.  
  4587.     9.1.12 GetSpecificCaptureFlags
  4588.  
  4589.           Returns the print job flags for the specified LPT device.
  4590.  
  4591.           int GetSpecificCaptureFlags(int device,PRINT_CONTROL_DATA *pData);
  4592.  
  4593.           Input:
  4594.              device: LPT device number (0-2, 0=LPT1)
  4595.  
  4596.           Output:
  4597.              pData:  Structure containing flags.
  4598.                      See Appendix III.
  4599.  
  4600.           Returns:   Result code (see Appendix I)
  4601.  
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607.                                                                                 
  4608. Netware C Library        Chapter Nine - Print Services                 Page: 9-4
  4609. ────────────────────────────────────────────────────────────────────────────────
  4610.  
  4611.     9.1.13 SetBannerUserName
  4612.  
  4613.           Sets the user name that is printed on the banner page.  This applies
  4614.           to local LPT devices.
  4615.  
  4616.           int SetBannerUserName(char *pointer);
  4617.  
  4618.           Input:
  4619.              pointer:    13-byte null terminated user name.
  4620.  
  4621.           Returns:       Result code (see Appendix I)
  4622.  
  4623.     9.1.14 SetCapturePrintQueue
  4624.  
  4625.           Sets the target print queue  for  the  next capture of the specified
  4626.           device.
  4627.  
  4628.           int SetCapturePrintQueue(int device,long queueID);
  4629.  
  4630.           Input:
  4631.              device:     LPT device number (0-2, 0=LPT1)
  4632.              queueID:    This is the bindery object ID of the queue where
  4633.                          print jobs are to be sent.
  4634.  
  4635.           Returns:       Result code (see Appendix I)
  4636.  
  4637.     9.1.15 SetDefaultLocalPrinter
  4638.  
  4639.           This sets  the  default  LPT  device,  for  all  default  local  LPT
  4640.           capturing.
  4641.  
  4642.           int SetDefaultLocalPrinter(int device);
  4643.  
  4644.           Input:
  4645.              device: LPT device number (0-2, 0=LPT1)
  4646.  
  4647.           Returns:   Result code (see Appendix I)
  4648.  
  4649.     9.1.16 SetDefaultCaptureFlags
  4650.  
  4651.           Sets the capture flags for the default LPT device.
  4652.  
  4653.           int SetDefaultCaptureFlags(PRINT_CONTROL_DATA *flags);
  4654.  
  4655.           Input:
  4656.              flags:  Structure containing flags.
  4657.                      See Appendix III.
  4658.  
  4659.           Returns:   Result code (see Appendix I)
  4660.  
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666.  
  4667.                                                                                 
  4668. Netware C Library        Chapter Nine - Print Services                 Page: 9-5
  4669. ────────────────────────────────────────────────────────────────────────────────
  4670.  
  4671.     9.1.17 SetSpecificCaptureFlags
  4672.  
  4673.           Sets the capture flags for the specified LPT device.
  4674.  
  4675.           int SetSpecificCaptureFlags(int device,PRINT_CONTROL_DATA *flags);
  4676.  
  4677.           Input:
  4678.              device: LPT device number (0-2, 0=LPT1)
  4679.              flags:  Structure containing flags.
  4680.                      See Appendix III.
  4681.  
  4682.           Returns:   Result code (see Appendix I)
  4683.  
  4684.     9.1.18 SpecifyCaptureFile
  4685.  
  4686.           This creates a capture file for the next capture process.
  4687.  
  4688.           int SpecifyCaptureFile(int directoryHandle,char *filename);
  4689.  
  4690.           Input:
  4691.              directoryHandle:    An optional directory handle, pointing to an
  4692.                                  entry in the servers Directory Handle Table.
  4693.                                  If "filename" contains the full path name
  4694.                                  then this must be 0x00.
  4695.              filename:           256-byte null terminated file name. This can
  4696.                                  either be a full path name, i.e.
  4697.                                  VOLUME:DIR\..\DIR\FILE or a partial name
  4698.                                  containing at least the terminal name of the
  4699.                                  file.
  4700.  
  4701.           Returns:               Result code (see Appendix I)
  4702.  
  4703.     9.1.19 StartLPTCapture
  4704.  
  4705.           This starts the capture of the default LPT device.
  4706.  
  4707.           int StartLPTCapture(void);
  4708.  
  4709.           Returns:    Result code (see Appendix I)
  4710.  
  4711.     9.1.20 StartSpecificLPTCapture
  4712.  
  4713.           This starts the capture of the specified LPT device.
  4714.  
  4715.           int StartSpecificLPTCapture(int device);
  4716.  
  4717.           Input:
  4718.              device: LPT device number (0-2, 0=LPT1)
  4719.  
  4720.           Returns:   Result code (see Appendix I)
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.                                                                                 
  4728. Netware C Library    Chapter Ten - Synchronisation Services           Page: 10-1
  4729. ────────────────────────────────────────────────────────────────────────────────
  4730.  
  4731.                          10. Synchronisation Services
  4732.  
  4733.     These services allow applications  to  control  access  to files and other
  4734.     network resources.  These  are  split  into  two  categories:  file/record
  4735.     locking  and  semaphores.   This document and associated library currently
  4736.     only covers semaphores, file/record locking  functions will be provided in
  4737.     a future release.
  4738.  
  4739. 10.1 Semaphores
  4740.  
  4741.     A semaphore is a named location that has a value associated with it.   The
  4742.     name can be up to 127 bytes long and the value can be in the range -127 to
  4743.     127.   Semaphores  are  generally used to control access to resources on a
  4744.     network.
  4745.  
  4746.     Before an application can access  a  semaphore,  it  must first open it by
  4747.     calling OpenSemaphore, if the semaphore does not  already  exist  then  it
  4748.     will  be automatically created by this call.  OpenSemaphore must be passed
  4749.     an initial  value  for  the  semaphore  which  will  only  be  used if the
  4750.     semaphore is to be created, this value is the number of processes that can
  4751.     access the network resource at any one time and must be in the range 1  to
  4752.     127.   After  opening  the  specified semaphore, the associated open count
  4753.     will be incremented and the value returned to the caller.
  4754.  
  4755.     When the application wishes to access the  resource  associated  with  the
  4756.     semaphore,  it  must  first call WaitOnSemaphore.  When WaitOnSemaphore is
  4757.     called, the value associated with  the  semaphore is decremented.  If this
  4758.     value is still positive, i.e.  greater than or equal to zero, then a  zero
  4759.     response  is  returned indicating that the resource is available otherwise
  4760.     the application will be placed in a queue and a wait will be performed for
  4761.     the specified  period.   If  the  semaphore  value  should become positive
  4762.     during the wait, i.e.  another application has released it, then the  wait
  4763.     will be terminated and a zero response will be returned.  If the semaphore
  4764.     value  is  still  negative at the end of the wait, then the application is
  4765.     removed from the queue,  the  semaphore  value  will  be incremented and a
  4766.     failing response will be returned indicating  that  the  resource  is  not
  4767.     available.
  4768.  
  4769.     After an  application  has  finished  with  the  resource,  it  must  call
  4770.     SignalSemaphore in order to increment the semaphore value.
  4771.  
  4772.     Before  the application terminates it must call CloseSemaphore in order to
  4773.     decrement the open count  associated  with  the  semaphore.  If this count
  4774.     should become zero then the semaphore will be automatically deleted.
  4775.  
  4776.     The current value and open count of a semaphore can be obtained by calling
  4777.     ExamineSemaphore.   The  semaphore  does  not  need  to  be  opened by the
  4778.     application in order to call this.
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.                                                                                 
  4788. Netware C Library    Chapter Ten - Synchronisation Services           Page: 10-2
  4789. ────────────────────────────────────────────────────────────────────────────────
  4790.  
  4791. 10.2 Synchronisation Functions
  4792.  
  4793.     10.2.1 CloseSemaphore
  4794.  
  4795.           This decrements the  semaphore's  open  count,  if the count becomes
  4796.           zero then the semaphore will be deleted.
  4797.  
  4798.           int CloseSemaphore( long semaphoreHandle );
  4799.  
  4800.           Input:
  4801.              semaphoreHandle:  Handle returned from the call to OpenSemaphore.
  4802.  
  4803.           Returns:             Result code (see Appendix I)
  4804.  
  4805.     10.2.2 ExamineSemaphore
  4806.  
  4807.           Returns the current open count and value of the specified semaphore.
  4808.  
  4809.           int ExamineSemaphore( long semaphoreHandle,int *semaphoreValue,
  4810.               word *openCount);
  4811.  
  4812.           Input:
  4813.              semaphoreHandle:  Handle returned from the call to OpenSemaphore.
  4814.  
  4815.           Output:
  4816.              semaphoreValue:   Current semaphore value, in the range -127 to
  4817.                                127.  A positive value indicates that
  4818.                                applications can access the resource associated
  4819.                                with this semaphore, a negative value indicates
  4820.                                that there is currently a queue of processes
  4821.                                waiting for the semaphore to become free.
  4822.              openCount:        The current number of processes that have this
  4823.                                semaphore open.
  4824.  
  4825.           Returns:             Result code (see Appendix I)
  4826.  
  4827.     10.2.3 OpenSemaphore
  4828.  
  4829.           This opens/creates the specified semaphore.
  4830.  
  4831.           int OpenSemaphore( char *semaphoreName,int initialValue,
  4832.               long *semaphoreHandle,word *openCount);
  4833.  
  4834.           Input:
  4835.              semaphoreName:    Name of the semaphore to be opened.
  4836.              initialValue:     The value to be given to the semaphore if it is
  4837.                                created. i.e. the number of applications that
  4838.                                can simultaneously access the resource that is
  4839.                                associated with the named semaphore.
  4840.  
  4841.           Output:
  4842.              semaphoreHandle:  A handle to the semaphore.
  4843.              openCount:        The current number of processes that have this
  4844.                                semaphore open.
  4845.  
  4846.           Returns:             Result code (see Appendix I)
  4847.                                                                                 
  4848. Netware C Library    Chapter Ten - Synchronisation Services           Page: 10-3
  4849. ────────────────────────────────────────────────────────────────────────────────
  4850.  
  4851.  
  4852.     10.2.4 SignalSemaphore
  4853.  
  4854.           This increments the value of the specified semaphore.
  4855.  
  4856.           int SignalSemaphore( long semaphoreHandle );
  4857.  
  4858.           Input:
  4859.              semaphoreHandle:  Handle returned from the call to OpenSemaphore.
  4860.  
  4861.           Returns:             Result code (see Appendix I)
  4862.  
  4863.     10.2.5 WaitOnSemaphore
  4864.  
  4865.           This decrements the semaphore value.   If the value becomes negative
  4866.           then the call will wait for the specified length of time.
  4867.  
  4868.           int WaitOnSemaphore( long semaphoreHandle , int timeoutLimit );
  4869.  
  4870.           Input:
  4871.              semaphoreHandle:  Handle returned from the call to OpenSemaphore.
  4872.              timeoutLimit:     The length of time the process must wait if the
  4873.                                semaphore is not available. This is a number of
  4874.                                clock ticks, where 18.2 ticks =  1 second
  4875.                                approximately.
  4876.  
  4877.           Returns:             Result code (see Appendix I)
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.  
  4892.  
  4893.  
  4894.  
  4895.  
  4896.  
  4897.  
  4898.  
  4899.  
  4900.  
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.                                                                                 
  4908. Netware C Library   Chapter Eleven - Communication Services           Page: 11-1
  4909. ────────────────────────────────────────────────────────────────────────────────
  4910.  
  4911.                          11. Communication Services
  4912.  
  4913.     These services allow applications  to  use the Netware Internetwork Packet
  4914.     Exchange (IPX) and the Netware Sequenced Packet Exchange (SPX)  protocols.
  4915.     These  protocols  are  based  on  the Xerox Network Systems (XNS) Internet
  4916.     Transport Protocols.
  4917.  
  4918.     Both IPX and SPX  allow  peer-to-peer  communication.  This means that all
  4919.     communication is done directly between two or  more  workstations  on  the
  4920.     internet, bypassing the file server.
  4921.  
  4922.     Because  nodes  on  an  internet  can  communicate  in  various  ways, the
  4923.     International  Standards  Organisation  (ISO)  proposed  a  standard model
  4924.     called the Open  Systems  Interconnection  (OSI)  model.   The  OSI  model
  4925.     basically  consists  of  seven  layers,  which  are:  Physical, Data Link,
  4926.     Network, Transport,  Session,  Presentation  and  Application.  Each layer
  4927.     provides services to the next higher layer.  The IPX  protocol  maps  onto
  4928.     layer  three  (Network),  which  is  concerned  with packet addressing and
  4929.     routing, and the SPX protocol  maps  onto layer four (Transport), which is
  4930.     concerned with the guaranteed and sequenced  delivery  of  packets.
  4931.  
  4932. 11.1 IPX Protocol
  4933.  
  4934.     IPX is known as a connectionless or datagram  protocol,  this  means  that
  4935.     when  IPX  is  used  to  communicate  between two nodes on the network, no
  4936.     connection is established.  Therefore there is no guarantee that data sent
  4937.     from one node will be received by the destination node.
  4938.  
  4939.     There  are  two  structures that are needed in order to use IPX, these are
  4940.     the IPX packet and the  Event  Control  Block (ECB).  For every IPX packet
  4941.     there is an associated ECB.
  4942.  
  4943. 11.1.1 IPX Packet Structure
  4944.  
  4945.     An IPX packet consists of  a  30-byte  header  plus  any  number  of  data
  4946.     fragments  as  long  as the total length of the packet does not exceed 576
  4947.     bytes.  IPX  does  not  use  the  data  fragments,  and  so  these  can be
  4948.     application defined, but the header, as defined in the file  "nwipxspx.h",
  4949.     is as follows:
  4950.  
  4951.              typedef struct { byte          network_number[4];
  4952.                               byte          node_address[6];
  4953.                               nw_int        socket_number;
  4954.                             } NETWORK_ADDR;
  4955.  
  4956.              typedef struct { nw_int        checksum;
  4957.                               nw_int        length;
  4958.                               byte          transport_control;
  4959.                               byte          packet_type;
  4960.                               NETWORK_ADDR  dest_addr;
  4961.                               NETWORK_ADDR  srce_addr;
  4962.                             } IPX_HEADER;
  4963.  
  4964.     All the fields with the exception of "packet_type" and "dest_addr" are set
  4965.     automatically  by IPX.
  4966.  
  4967.                                                                                 
  4968. Netware C Library   Chapter Eleven - Communication Services           Page: 11-2
  4969. ────────────────────────────────────────────────────────────────────────────────
  4970.  
  4971.     For IPX "packet_type" should be set to either  0 or 4, but it can take the
  4972.     following values:
  4973.  
  4974.                        0      Unknown packet type
  4975.                        1      Routing information packet
  4976.                        2      Echo packet
  4977.                        3      Error packet
  4978.                        4      Packet exchange packet
  4979.                        5      Sequenced packet protocol packet
  4980.                        16     Experimental protocol
  4981.                        17     Netware core protocol
  4982.                        18-31  Experimental protocols
  4983.  
  4984.     The "dest_addr" field contains the network number and node address of  the
  4985.     destination  node,  along  with  the socket number that the destination is
  4986.     listening  on  for  this  communication,  see  the   definition   of   the
  4987.     function IPX_OPEN_SOCKET for more information about sockets.
  4988.  
  4989. 11.2 SPX Protocol
  4990.  
  4991.     SPX  is  known as a connection-oriented protocol, this means that before a
  4992.     packet can be sent a connection must be established between the source and
  4993.     destination nodes.  SPX automatically  performs  the tasks of guaranteeing
  4994.     delivery  of  packets,  sequencing  of  packets  and  the  detection   and
  4995.     correction of errors.
  4996.  
  4997.     Like IPX there are two  structures  that  are  needed in order to use SPX,
  4998.     these are the SPX packet and the Event Control Block (ECB).  For every SPX
  4999.     packet there is an associated ECB.
  5000.  
  5001. 11.2.1 SPX Packet Structure
  5002.  
  5003.     An  SPX  packet  consists  of  a  42-byte  header  plus any number of data
  5004.     fragments as long as the total  length  of  the packet does not exceed 576
  5005.     bytes.  SPX does  not  use  the  data  fragments,  and  so  these  can  be
  5006.     application  defined, but the header, as defined in the file "nwipxspx.h",
  5007.     is as follows:
  5008.  
  5009.              typedef struct { IPX_HEADER  ipx;
  5010.                               byte        connection_control;
  5011.                               byte        datastream_type;
  5012.                               nw_int      source_connection_id;
  5013.                               nw_int      dest_connection_id;
  5014.                               nw_int      sequence_number;
  5015.                               nw_int      acknowledge_number;
  5016.                               nw_int      allocation_number;
  5017.                             } SPX_HEADER;
  5018.  
  5019.     The first 30 bytes have the  same  meaning  as the IPX header, except that
  5020.     the packet type field must be set to 5  to  signify  that  it  is  an  SPX
  5021.     packet. The additional fields for SPX are defined as follows:
  5022.  
  5023.     connection_control:
  5024.  
  5025.          This  field  contains  four flags that are used by SPX to control the
  5026.          flow of data across the connection:
  5027.                                                                                 
  5028. Netware C Library   Chapter Eleven - Communication Services           Page: 11-3
  5029. ────────────────────────────────────────────────────────────────────────────────
  5030.  
  5031.  
  5032.               Bits    7 6 5 4 3 2 1 0
  5033.                       - - - x - - - -   End-of-Message
  5034.                       - - x - - - - -   Attention
  5035.                       - x - - - - - -   Acknowledgement-Required
  5036.                       x - - - - - - -   System-Packet
  5037.  
  5038.               End-of-Message:
  5039.  
  5040.                      This  flag  is  set  to signal an end of connection.  SPX
  5041.                      ignores this  bit  and  passes  it  on  unchanged  to the
  5042.                      destination.
  5043.  
  5044.               Attention:
  5045.  
  5046.                      This  flag  is  set if the packet is an attention packet.
  5047.                      SPX ignores this bit  and  passes  it on unchanged to the
  5048.                      destination.
  5049.  
  5050.               Acknowledgement-Required:
  5051.  
  5052.                      This bit is set by SPX if an  acknowledgement  packet  is
  5053.                      required.    SPX  handles  acknowledgement  requests  and
  5054.                      responses automatically.
  5055.  
  5056.               System-Packet:
  5057.  
  5058.                      SPX sets this  bit  if  the  packet  is  a system packet.
  5059.                      These packets are used internally by SPX.
  5060.  
  5061.     datastream_type:
  5062.  
  5063.          This indicates the type of data that can be found in the packet.   It
  5064.          can take the following values:
  5065.  
  5066.               0 to 253     User defined ( SPX ignores these values ).
  5067.               254          End-of-Connection. This packet type is generated by
  5068.                            SPX when an SPXTerminateConnection call is issued.
  5069.               255          End-of-Connection-Acknowledgement. This is sent by
  5070.                            SPX   whenever   a    workstation    receives    an
  5071.                            End-of-Connection packet.
  5072.  
  5073.     source_connection_id:
  5074.  
  5075.          SPX  sets  this  field  to  the  SPX  connection  id  of  the  source
  5076.          workstation.
  5077.  
  5078.     dest_connection_id:
  5079.  
  5080.          SPX  sets  this  field  to  the  SPX connection id of the destination
  5081.          workstation.
  5082.  
  5083.     sequence_number:
  5084.  
  5085.          SPX uses this field to identify and discard duplicate packets.  It is
  5086.          set and maintained by SPX.
  5087.                                                                                 
  5088. Netware C Library   Chapter Eleven - Communication Services           Page: 11-4
  5089. ────────────────────────────────────────────────────────────────────────────────
  5090.  
  5091.  
  5092.     acknowledge_number:
  5093.  
  5094.          SPX uses this field to indicate  the  sequence  number  of  the  next
  5095.          packet SPX expects to receive.
  5096.  
  5097.     allocation_number:
  5098.  
  5099.          This is used internally  by  SPX,  it  contains the number of packets
  5100.          sent but not yet acknowledged by the destination workstation.
  5101.  
  5102. 11.3 Event Control Block (ECB)
  5103.  
  5104.     This  is  a  structure  that  contains  details  about the IPX/SPX packet,
  5105.     particularly the number of fragments and the size and address of each one.
  5106.     For a send ECB,  IPX  will  collect  together  all  the fragments that are
  5107.     specified in the ECB into one buffer before transmitting the  packet,  and
  5108.     for  a  receive  ECB,  IPX  will  distribute  the received packet into the
  5109.     appropriate addresses specified by  the  ECB.   The  ECB also contains the
  5110.     completion code of the send or receive process.
  5111.  
  5112. 11.3.1 ECB Structure
  5113.  
  5114.     The ECB structure declared  in  "nwipxspx.h"  contains only two fragments,
  5115.     the first is for the IPX/SPX header and the second is for the users  data.
  5116.     The structure definition is as follows:
  5117.  
  5118.              typedef struct { void _far  *address;
  5119.                               word       length;
  5120.                             } ECB_FRAGMENT;
  5121.  
  5122.              typedef struct { void _far     *link_address;
  5123.                               void          (_far *esr)(void);
  5124.                               byte          in_use;
  5125.                               byte          completion_code;
  5126.                               nw_int        socket_number;
  5127.                               byte          IPX_workspace[4];
  5128.                               byte          driver_workspace[12];
  5129.                               byte          immediate_address[6];
  5130.                               word          fragment_count;
  5131.                               ECB_FRAGMENT  fragment[2];
  5132.                             } EVENT_CONTROL_BLOCK;
  5133.  
  5134.     link_address:
  5135.  
  5136.          This is maintained by IPX whilst the ECB is in use.  When the ECB  is
  5137.          not in use then the application can use this field.
  5138.  
  5139.     esr:
  5140.  
  5141.          This  contains  the  address  of an application defined Event Service
  5142.          Routine (ESR) that  IPX  will  call  when  the  send or receive event
  5143.          finishes.  IPX also maintains the in_use and completion_code  fields,
  5144.          so  an application could simply poll these fields instead of using an
  5145.          ESR.  If no ESR is required then  this  field should be set to a null
  5146.          pointer.
  5147.                                                                                 
  5148. Netware C Library   Chapter Eleven - Communication Services           Page: 11-5
  5149. ────────────────────────────────────────────────────────────────────────────────
  5150.  
  5151.  
  5152.     in_use:
  5153.  
  5154.          Whilst the ECB is in use, this field will contain a  non-zero  value.
  5155.          Once  IPX  has  finished  with the ECB, i.e.  the send or receive has
  5156.          finished, then this value will be set to zero.
  5157.  
  5158.     completion_code:
  5159.  
  5160.          This field is set  by  IPX  to  indicate  the  result  of the send or
  5161.          receive event.  This field is undefined whilst  the  in_use  flag  is
  5162.          non-zero. The following completion codes can be reported:
  5163.  
  5164.              Send-ECB:   0x00  Successful - The request was sent
  5165.                          0xfc  Cancelled - The send request was cancelled
  5166.                          0xfd  Malformed - The packet was malformed
  5167.                          0xfe  Undelivered - The packet could not be delivered
  5168.                          0xff  Hardware Failure - There has been a physical
  5169.                                hardware or network failure.
  5170.  
  5171.              Listen-ECB: 0x00  Successful - A packet was received
  5172.                          0xfc  Cancelled - The listen request was cancelled
  5173.                          0xfd  Overflow - A packet was received, but the
  5174.                                fragment count in the ECB is zero, or the
  5175.                                available space specified in the ECB is not
  5176.                                large enough to hold the entire packet.
  5177.                          0xff  Closed - The listening socket is not open.
  5178.  
  5179.              Timer-ECB:  0x00  Successful
  5180.                          0xfc  Cancelled - The timer event was cancelled.
  5181.  
  5182.     socket_number:
  5183.  
  5184.          This  contains  the number of the previously opened socket that is to
  5185.          be  associated  with  this  ECB.  This is held in high-low format, so
  5186.          must be stored using the function NWintconvert, see section 1.7.
  5187.  
  5188.     IPX_workspace:
  5189.  
  5190.          This is reserved for use by IPX.
  5191.  
  5192.     driver_workspace:
  5193.  
  5194.          This is reserved for use by the network driver.
  5195.  
  5196.     immediate_address:
  5197.  
  5198.          This contains the address of the node to which the packet  is  to  be
  5199.          sent or from which it was received.   If the node is not on the local
  5200.          network then this will contain the address of an internetwork bridge.
  5201.  
  5202.     fragment_count:
  5203.  
  5204.          This contains the number of data fragments that are  associated  with
  5205.          this ECB.
  5206.  
  5207.                                                                                 
  5208. Netware C Library   Chapter Eleven - Communication Services           Page: 11-6
  5209. ────────────────────────────────────────────────────────────────────────────────
  5210.  
  5211.     fragment.address:
  5212.  
  5213.          This contains the address of this fragment.
  5214.  
  5215.     fragment.length:
  5216.  
  5217.          This contains the length of this fragment.
  5218.  
  5219.  
  5220.  
  5221.  
  5222.  
  5223.  
  5224.  
  5225.  
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.  
  5247.  
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253.  
  5254.  
  5255.  
  5256.  
  5257.  
  5258.  
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264.  
  5265.  
  5266.  
  5267.                                                                                 
  5268. Netware C Library   Chapter Eleven - Communication Services           Page: 11-7
  5269. ────────────────────────────────────────────────────────────────────────────────
  5270.  
  5271. 11.4 IPX Functions
  5272.  
  5273.     The following function calls use  two  structures that are declared in the
  5274.     header file "nwipxspx.h".  These are:
  5275.  
  5276.              typedef struct { byte   network_number[4];
  5277.                               byte   node_address[6];
  5278.                             } INTER_NETWORK_ADDR;
  5279.  
  5280.              typedef struct { INTER_NETWORK_ADDR ina;
  5281.                               nw_int             socket_number;
  5282.                             } NETWORK_ADDR;
  5283.  
  5284.     11.4.1 IPXCancelEvent
  5285.  
  5286.           This  cancels  an IPX/SPX event that is associated with a particular
  5287.           ECB.  A completion code will  be  returned in the cancelled ECB, but
  5288.           the ESR wil not be actioned.
  5289.  
  5290.           word IPXCancelEvent( EVENT_CONTROL_BLOCK *ecb );
  5291.  
  5292.           Input:
  5293.              ecb:    Address of the ECB that is to be cancelled.
  5294.  
  5295.           Returns:   Result code (see Appendix I)
  5296.  
  5297.     11.4.2 IPXCloseSocket
  5298.  
  5299.           This closes a socket that was previously  opened  by  IPXOpenSocket.
  5300.           Any events that are associated with the socket will be cancelled.
  5301.  
  5302.           void IPXCloseSocket( word socketNumber );
  5303.  
  5304.           Input:
  5305.              socketNumber:    Number of the socket to close.
  5306.  
  5307.     11.4.3 IPXDisconnectFromTarget
  5308.  
  5309.           An application uses this function to notify a listening node that no
  5310.           more IPX packets are going to be sent.
  5311.  
  5312.           void IPXDisconnectFromTarget( NETWORK_ADDR *networkAddress );
  5313.  
  5314.           Input:
  5315.              networkAddress:  Full network address of the node with which the
  5316.                               connection is being terminated.
  5317.  
  5318.  
  5319.  
  5320.  
  5321.  
  5322.  
  5323.  
  5324.  
  5325.  
  5326.  
  5327.                                                                                 
  5328. Netware C Library   Chapter Eleven - Communication Services           Page: 11-8
  5329. ────────────────────────────────────────────────────────────────────────────────
  5330.  
  5331.     11.4.4 IPXGetInternetworkAddress
  5332.  
  5333.           This returns the  network  number  and  node  address of the calling
  5334.           workstation.
  5335.  
  5336.           void IPXGetInternetworkAddress(INTER_NETWORK_ADDR *networkAddress);
  5337.  
  5338.           Output:
  5339.              networkAddress:  Network number and node address of the calling
  5340.                               workstation.
  5341.  
  5342.     11.4.5 IPXGetIntervalMarker
  5343.  
  5344.           This returns the number of clock ticks  that  have  occured  in  the
  5345.           requesting  workstation  since  IPX  was loaded.  Approximately 18.2
  5346.           clock ticks occur every second.
  5347.  
  5348.           word IPXGetIntervalMarker( void );
  5349.  
  5350.           Returns:    The number of clock ticks since IPX was loaded.
  5351.  
  5352.     11.4.6 IPXGetLocalTarget
  5353.  
  5354.           This   returns   the   information   that   is   required   for  the
  5355.           immediate_address field in an IPXSendPacket ECB.  The returned  node
  5356.           address  is  either the address of the nearest bridge, if the packet
  5357.           must cross a bridge, or the address of the destination workstation.
  5358.  
  5359.           word IPXGetLocalTarget( INTER_NETWORK_ADDR *networkAddress ,
  5360.                                   byte *immediateAddress,
  5361.                                   word *transportTime );
  5362.  
  5363.           Input:
  5364.              networkAddress:   The network number and node address of the
  5365.                                destination workstation.
  5366.  
  5367.           Output:
  5368.              immediateAddress: The routing address of the destination. This
  5369.                                must be placed in the immediate_address field
  5370.                                of a send ECB.
  5371.              transportTime:    This is the number of timer ticks that a packet
  5372.                                will take in order to get to the destination.
  5373.  
  5374.           Returns:             Result code (see Appendix I)
  5375.  
  5376.     11.4.7 IPXInitialise
  5377.  
  5378.           This initialises the areas  used  by  the IPX library functions.  It
  5379.           must be the first IPX function that is called.
  5380.  
  5381.           word IPXInitialise( void );
  5382.  
  5383.           Returns:    0     IPX is installed
  5384.                       -1    IPX is not installed
  5385.  
  5386.  
  5387.                                                                                 
  5388. Netware C Library   Chapter Eleven - Communication Services           Page: 11-9
  5389. ────────────────────────────────────────────────────────────────────────────────
  5390.  
  5391.     11.4.8 IPXListenForPacket
  5392.  
  5393.           One or more calls to this function must be made in order to give IPX
  5394.           the address of a buffer  in  which  the next incoming message packet
  5395.           must be placed.  Each call gives IPX an ECB that is then placed in a
  5396.           pool of listening ECBs.  An immediate return to the calling  program
  5397.           is made after each call.
  5398.  
  5399.           When  IPX  receives  a  packet  one of the listening ECBs that has a
  5400.           matching socket number  is  selected.   The  ECBs  are selected in a
  5401.           random order.
  5402.  
  5403.           word IPXListenForPacket( EVENT_CONTROL_BLOCK *ecb );
  5404.  
  5405.           Input:
  5406.              ecb:    Address of the listening ECB.
  5407.  
  5408.           Returns:   Result code (see Appendix I)
  5409.  
  5410.     11.4.9 IPXOpenSocket
  5411.  
  5412.           This function opens a socket that can then be used by either IPX  or
  5413.           SPX, but not by both simultaneously.
  5414.  
  5415.           word IPXOpenSocket( word *socketNumber, byte longevity );
  5416.  
  5417.           Input:
  5418.              socketNumber:  The number of the socket to open. A value of zero
  5419.                             will cause IPX to generate a socket number in the
  5420.                             range 0x4000 to 0x8000.
  5421.  
  5422.                             Socket numbers in the range 0x0000 to 0x0bb9 and
  5423.                             0x8001 to 0xffff are reserved and must not be
  5424.                             used.
  5425.  
  5426.              longevity:     This specifies whether the socket is short-lived
  5427.                             (0x00) or long-lived (0xff). A short-lived socket
  5428.                             is closed automatically when the application
  5429.                             terminates or when a call to IPXCloseSocket is
  5430.                             made, long-lived sockets must be closed explicitly
  5431.                             by calling IPXCloseSocket.
  5432.  
  5433.           Output:
  5434.              socketNumber:  Returns the actual socket number that was opened.
  5435.  
  5436.           Returns:          Result code (see Appendix I)
  5437.  
  5438.     11.4.10 IPXRelinquishControl
  5439.  
  5440.           This must be called at periodic  intervals in order to give IPX time
  5441.           to process events.
  5442.  
  5443.           void IPXRelinquishControl( void );
  5444.  
  5445.  
  5446.  
  5447.                                                                                 
  5448. Netware C Library   Chapter Eleven - Communication Services          Page: 11-10
  5449. ────────────────────────────────────────────────────────────────────────────────
  5450.  
  5451.     11.4.11 IPXScheduleIPXEvent
  5452.  
  5453.           This function passes an ECB to  IPX  for processing at a later time.
  5454.           IPX returns to the application immediately after this call and waits
  5455.           in the background until the delay period has expired.
  5456.  
  5457.           void IPXScheduleIPXEvent( EVENT_CONTROL_BLOCK *ecb ,
  5458.                                     word delayTicks );
  5459.  
  5460.           Input:
  5461.              ecb:         Address of the ECB to be processed.
  5462.              delayTicks:  Number of clock ticks that IPX must wait for before
  5463.                           processing the ECB.   Approximately 18.2 clock ticks
  5464.                           occur every second.
  5465.  
  5466.     11.4.12 IPXSendPacket
  5467.  
  5468.           This function instructs IPX to send a data packet.
  5469.  
  5470.           void IPXSendPacket( EVENT_CONTROL_BLOCK *ecb );
  5471.  
  5472.           Input:
  5473.              ecb:     Address of the ECB containing the routing information
  5474.                       and the data that is to be used in constructing the
  5475.                       packet.
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490.  
  5491.  
  5492.  
  5493.  
  5494.  
  5495.  
  5496.  
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.                                                                                 
  5508. Netware C Library   Chapter Eleven - Communication Services          Page: 11-11
  5509. ────────────────────────────────────────────────────────────────────────────────
  5510.  
  5511. 11.5 SPX Functions
  5512.  
  5513.     11.5.1 SPXAbortConnection
  5514.  
  5515.           This function aborts an SPX connection by abnormally terminating any
  5516.           outstanding SPX events.  No notification of the termination is  sent
  5517.           to the other station.
  5518.  
  5519.           void SPXAbortConnection( word connectionID );
  5520.  
  5521.           Input:
  5522.              connectionID:   SPX connection id of the connection to be broken.
  5523.  
  5524.     11.5.2 SPXEstablishConnection
  5525.  
  5526.           This  function  creates a connection between the calling station and
  5527.           the specified  destination  station.   The  destination station must
  5528.           have issued an SPXListenForConnection.
  5529.  
  5530.           Before issuing this call, the application must have created at least
  5531.           two listen ECBs and passed them  to  SPX  by  calling  the  function
  5532.           SPXListenForSequencedPacket.   Once  the establish connection packet
  5533.           has been sent, then SPX will  use  one of the listen ECBs to receive
  5534.           an acknowledgement packet from the destination station.
  5535.  
  5536.           word SPXEstablishConnection( word retryCount, word watchdogFlag ,
  5537.                              EVENT_CONTROL_BLOCK *ecb ,word *connectionID );
  5538.  
  5539.           Input:
  5540.              retryCount:    This specifies how many times SPX will resend an
  5541.                             unacknowledged packet before giving up. A value of
  5542.                             zero indicates that SPX should use its internal
  5543.                             default value.
  5544.              watchdogFlag:  This can have the value of 0 (watchdog disabled)
  5545.                             or 1 (watchdog enabled). If watchdog is enabled
  5546.                             then the SPX watchdog process will monitor the SPX
  5547.                             connection to ensure that it is functioning. If
  5548.                             watchdog process determines that a connection has
  5549.                             failed, then it will use one of the outstanding
  5550.                             listen ECBs to report the failure.
  5551.              ecb:           Address of the ECB containing the information that
  5552.                             is required in order to establish the connection.
  5553.  
  5554.                             The socket number,  fragment  count  and  fragment
  5555.                             descriptor fields in the  ECB  must be setup.  The
  5556.                             fragment count field must be 1, and  the  fragment
  5557.                             descriptor  field  msut  point  to  a  42-byte SPX
  5558.                             packet header. The SPX packet header's destination
  5559.                             network node and socket number must be initialised
  5560.                             to their relevant values.
  5561.  
  5562.           Output:
  5563.              connectionID:  The returned SPX connection id.
  5564.  
  5565.           Returns:          Result code (see Appendix I)
  5566.  
  5567.                                                                                 
  5568. Netware C Library   Chapter Eleven - Communication Services          Page: 11-12
  5569. ────────────────────────────────────────────────────────────────────────────────
  5570.  
  5571.     11.5.3 SPXGetConnectionStatus
  5572.  
  5573.           This function returns the status of the specified SPX connection.
  5574.  
  5575.           word SPXGetConnectionStatus( word connectionID ,
  5576.                              SPX_CONNECTION_STATUS *connectionStatus );
  5577.  
  5578.           Input:
  5579.              connectionID:      SPX connection id.
  5580.  
  5581.           Output:
  5582.              connectionStatus:  Structure containing the status of the SPX
  5583.                                 connection. It is declared in the header file
  5584.                                 "nwipxspx.h". See Appendix III.
  5585.  
  5586.           Returns:              Result code (see Appendix I)
  5587.  
  5588.     11.5.4 SPXInitialise
  5589.  
  5590.           This  function  determines  whether  SPX is installed.
  5591.  
  5592.           int SPXInitialise(byte *majorVersion,byte *minorVersion,
  5593.                             word *maxConnections,word *availableConnections );
  5594.  
  5595.           Output:
  5596.              majorVersion:          Major revision number of SPX.
  5597.              minorVersion:          Minor revision number of SPX.
  5598.              maxConnections:        Maximum number of SPX connections that
  5599.                                     are supported.
  5600.              availableConnections:  The number of SPX connections that are
  5601.                                     available.
  5602.  
  5603.           Returns:                  0     SPX is installed
  5604.                                     -1    SPX is not installed
  5605.  
  5606.     11.5.5 SPXListenForConnection
  5607.  
  5608.           This function instructs SPX to expect a request from another station
  5609.           to establish a connection.   SPX  returns immediately to the caller,
  5610.           and waits for the request packet in background.
  5611.  
  5612.           void SPXListenForConnection( word retryCount, word watchdogFlag ,
  5613.                                        EVENT_CONTROL_BLOCK *ecb );
  5614.  
  5615.           Input:
  5616.              retryCount:    This specifies how many times SPX will resend an
  5617.                             unacknowledged packet before giving up. A value of
  5618.                             zero indicates that SPX should use its internal
  5619.                             default value.
  5620.              watchdogFlag:  This can have the value of 0 (watchdog disabled)
  5621.                             or 1 (watchdog enabled). If watchdog is enabled
  5622.                             then the SPX watchdog process will monitor the SPX
  5623.                             connection to ensure that it is functioning. If
  5624.                             watchdog process determines that a connection has
  5625.                             failed, then it will use one of the outstanding
  5626.                             listen ECBs to report the failure.
  5627.                                                                                 
  5628. Netware C Library   Chapter Eleven - Communication Services          Page: 11-13
  5629. ────────────────────────────────────────────────────────────────────────────────
  5630.  
  5631.              ecb:           Address of the ECB containing the information that
  5632.                             is required in order to establish the connection.
  5633.  
  5634.                             The socket number,  fragment  count  and  fragment
  5635.                             descriptor fields in the  ECB  must be setup.  The
  5636.                             fragment count field must be 1, and  the  fragment
  5637.                             descriptor  field  msut  point  to  a  42-byte SPX
  5638.                             packet header.
  5639.  
  5640.                             When a connection is made, then SPX will return  a
  5641.                             connection  ID  in  the  first  two  bytes  of the
  5642.                             IPX_workspace field of the ECB associated with the
  5643.                             SPXListenForConnection call,  the driver_workspace
  5644.                             field will also contain the address of the partner
  5645.                             node.
  5646.  
  5647.     11.5.6 SPXListenForSequencedPacket
  5648.  
  5649.           This function gives SPX an ECB and a packet buffer it can  use  when
  5650.           it  receives  an  incoming data packet.  SPX will place each ECB and
  5651.           buffer in a pool and will then return immediately to the caller.  On
  5652.           receiving a  data  packet,  SPX  will  select  one  of the available
  5653.           listening ECBs for the relevant socket number.
  5654.  
  5655.           void SPXListenForSequencedPacket( EVENT_CONTROL_BLOCK *ecb );
  5656.  
  5657.           Input:
  5658.              ecb:    Address of the listening ECB.
  5659.  
  5660.                      The ecb should be initialised as follows:
  5661.  
  5662.                          fragment_count      = 2
  5663.  
  5664.                          fragment[0].address = Address of SPX header
  5665.                          fragment[0].length  = 42
  5666.  
  5667.                          fragment[1].address = Address of data buffer
  5668.                          fragment[1].length  = Length of data buffer
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.                                                                                 
  5688. Netware C Library   Chapter Eleven - Communication Services          Page: 11-14
  5689. ────────────────────────────────────────────────────────────────────────────────
  5690.  
  5691.     11.5.7 SPXSendSequencedPacket
  5692.  
  5693.           This function instructs SPX to send  a  data  packet  to  the  other
  5694.           station  associated  with the connection.  The actual send operation
  5695.           is performed in the background.
  5696.  
  5697.           void SPXSendSequencedPacket( word connectionID,
  5698.                                        EVENT_CONTROL_BLOCK *ecb );
  5699.  
  5700.           Input:
  5701.              connectionID:   SPX connection id.
  5702.              ecb:            Address of the send ecb.
  5703.  
  5704.                              The ecb should be initialised as follows:
  5705.  
  5706.                                  fragment_count      = 2
  5707.  
  5708.                                  fragment[0].address = Address of SPX header
  5709.                                  fragment[0].length  = 42
  5710.  
  5711.                                  fragment[1].address = Address of data buffer
  5712.                                  fragment[1].length  = Length of data buffer
  5713.  
  5714.     11.5.8 SPXTerminateConnection
  5715.  
  5716.           This  function  terminates  an   SPX  connection.   The  termination
  5717.           operation is performed in the background.  A termination packet will
  5718.           be sent to the partner station.
  5719.  
  5720.           void SPXTerminateConnection( word connectionID ,
  5721.                                        EVENT_CONTROL_BLOCK *ecb );
  5722.  
  5723.           Input:
  5724.              connectionID:   SPX connection id.
  5725.              ecb:            Address of the ecb.
  5726.  
  5727.                              The ecb should be initialised as follows:
  5728.  
  5729.                                  fragment_count      = 1
  5730.  
  5731.                                  fragment[0].address = Address of SPX header
  5732.                                  fragment[0].length  = 42
  5733.  
  5734.  
  5735.  
  5736.  
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.                                                                                 
  5748. Netware C Library      Appendix I - Netware Result Codes              Page: A1-1
  5749. ────────────────────────────────────────────────────────────────────────────────
  5750.  
  5751. ╔════╤═════════════════════════════════╦═════╤═══════════════════════════════╗
  5752. ║Hex │Meaning                          ║ Hex │Meaning                        ║
  5753. ╠════╪═════════════════════════════════╬═════╪═══════════════════════════════╣
  5754. ║00h │Action Successful                ║ 9Ah │Renaming Across Volumes        ║
  5755. ║    │Server Not In Use                ║ 9Bh │Bad Directory Handle           ║
  5756. ║    │TTS Not Available                ║ 9Ch │Invalid Path                   ║
  5757. ║01h │Server In Use                    ║     │No more Trustees               ║
  5758. ║    │Semaphore Overflow               ║ 9Dh │No More Directory Handles      ║
  5759. ║    │TTS Available                    ║ 9Eh │Invalid Filename               ║
  5760. ║02h │DOS File Not Found               ║ 9Fh │Directory Active               ║
  5761. ║03h │DOS Path Not Found               ║ A0h │Directory Not Empty            ║
  5762. ║04h │DOS Too Many Open Files          ║ A1h │Directory IO Error             ║
  5763. ║05h │DOS Access Denied                ║ A2h │Read File With Record Locked   ║
  5764. ║06h │DOS Invalid File Handle          ║ BBh │No Netware shell loaded        ║
  5765. ║07h │DOS Memory Blocks Destroyed      ║ C0h │No Account Privileges          ║
  5766. ║08h │DOS Insufficient Memory          ║ C1h │Login Denied -                 ║
  5767. ║09h │DOS Invalid Memory Block Address ║     │No Account Balance             ║
  5768. ║0Ah │DOS Invalid Environment          ║ C2h │Account Credit limit Exceeded  ║
  5769. ║0Bh │DOS Invalid Format               ║     │Login Denied - No credit       ║
  5770. ║0Ch │DOS Invalid Access Code          ║ C3h │Account - Too many Holds       ║
  5771. ║0Dh │DOS Invalid Data                 ║ C5h │Intruder Detection Lock        ║
  5772. ║0Fh │DOS Invalid Drive Specified      ║ C6h │Not Console Operator           ║
  5773. ║10h │DOS Attempt To Delete Current Dir║ D0h │Queue Error                    ║
  5774. ║11h │DOS Not Same Device              ║ D1h │No Queue                       ║
  5775. ║12h │DOS No More Files                ║ D2h │No Queue Server                ║
  5776. ║20h │DOS Sharing Violation            ║ D3h │No Queue Rights                ║
  5777. ║21h │DOS Lock Violation               ║ D4h │Queue Full                     ║
  5778. ║80h │File In User Error               ║ D5h │No Queue Job                   ║
  5779. ║81h │No More File Handles             ║ D6h │No Job Rights                  ║
  5780. ║82h │No Open Privileges               ║ D7h │Password Not Unique            ║
  5781. ║83h │IO Error Network Disk            ║     │Queue Servicing                ║
  5782. ║84h │No Create Privileges             ║ D8h │Password Too Short             ║
  5783. ║85h │No Delete Privileges             ║     │Queue Not Active               ║
  5784. ║86h │Create File Exists Read Only     ║ D9h │Login Denied - No connection   ║
  5785. ║87h │Wild Cards in Create File Name   ║     │Station Not Server             ║
  5786. ║88h │Invalid File Handle              ║ DAh │Unauthorized login time -      ║
  5787. ║89h │No Search Privileges             ║     │Queue Halted                   ║
  5788. ║8Ah │No Delete Privileges             ║ DBh │Unauthorized login station -   ║
  5789. ║8Bh │No Rename Privileges             ║     │Max Queue Servers              ║
  5790. ║8Ch │No Modify Privileges             ║ DCh │Account Disabled               ║
  5791. ║8Dh │Some Files Affected In Use       ║ DEh │Password has expired - No Grace║
  5792. ║8Eh │No Files Affected In Use         ║ DFh │Password has expired           ║
  5793. ║8Fh │Some Files Affected Read Only    ║ E8h │Not Item Property -            ║
  5794. ║90h │No Files Affected Read Only      ║     │Write Property to Group        ║
  5795. ║91h │Some Files Renamed - Name Exists ║ E9h │Member Already Exists          ║
  5796. ║92h │No Files Renamed - Name Exists   ║ EAh │No Such Member                 ║
  5797. ║93h │No Read Privileges               ║ EBh │Not Group Property             ║
  5798. ║94h │No Write Privileges or Read Only ║ ECh │No Such Segment                ║
  5799. ║95h │File Detached                    ║ EDh │Property Already Exists        ║
  5800. ║96h │Server Out Of Memory             ║ EEh │Object Already Exists          ║
  5801. ║    │Out Of Dynamic Workspace         ║ EFh │Invalid Name                   ║
  5802. ║97h │No Disk Space for Spool File     ║ F0h │Wild Card Not Allowed          ║
  5803. ║98h │Volume Does Not Exist            ║ F1h │Invalid Bindery Security       ║
  5804. ║99h │Directory Full                   ║ F2h │No Object Read Privilege       ║
  5805. ╚════╧═════════════════════════════════╩═════╧═══════════════════════════════╝
  5806.  
  5807.                                                                                 
  5808. Netware C Library      Appendix I - Netware Result Codes              Page: A1-2
  5809. ────────────────────────────────────────────────────────────────────────────────
  5810.  
  5811. ╔════╤═════════════════════════════════╦═════╤═══════════════════════════════╗
  5812. ║Hex │Meaning                          ║ Hex │Meaning                        ║
  5813. ╠════╪═════════════════════════════════╬═════╪═══════════════════════════════╣
  5814. ║F3h │No Object Rename Privilege       ║ FFh │Bad Printer Error              ║
  5815. ║F4h │No Object Delete Privilege       ║     │Bad Record Offset              ║
  5816. ║F5h │No Object Create Privilege       ║     │Close FCB Error                ║
  5817. ║F6h │No Property Delete Privilege     ║     │File Extension Error           ║
  5818. ║    │Not Same Local Drive             ║     │File Name Error                ║
  5819. ║F7h │No Property Create Privilege     ║     │Hardware Failure               ║
  5820. ║    │Target Drive Not Local           ║     │Invalid Drive Number           ║
  5821. ║F8h │Already Attached To Server       ║     │Invalid Initial Semaphore Value║
  5822. ║    │No Property Write Privilege      ║     │Invalid Semaphore Handle       ║
  5823. ║    │Not Attached To Server           ║     │IO Bound Error                 ║
  5824. ║F9h │No Free Connection Slots         ║     │No Files Found Error           ║
  5825. ║    │No Property Read Privilege       ║     │No Response From Server        ║
  5826. ║FAh │No More Server Slots             ║     │No Such Object                 ║
  5827. ║    │Temporary Remap Error            ║     │Bad Password                   ║
  5828. ║FBh │Invalid Parameters               ║     │Path Not Locatable             ║
  5829. ║    │No Such Property                 ║     │Queue Full Error               ║
  5830. ║    │Unknown Request                  ║     │Request Not Outstanding        ║
  5831. ║FCh │Unknown File Server              ║     │Transaction Not Yet Written    ║
  5832. ║    │Message Queue Full               ║     │No More Matching Files         ║
  5833. ║    │No Such Object                   ║     │Bindery Failure                ║
  5834. ║FDh │Bad Station Number               ║     │Explicit Transaction Active    ║
  5835. ║    │Unknown Request                  ║     │No Explicit Transaction Active ║
  5836. ║    │Field Already Locked             ║     │No Record Found                ║
  5837. ║    │TTS Disabled                     ║     │Output Buffer Full             ║
  5838. ║FEh │Bindery Locked                   ║     │                               ║
  5839. ║    │Directory Locked                 ║     │                               ║
  5840. ║    │Invalid Semaphore Name Length    ║     │                               ║
  5841. ║    │Server Bindery Locked            ║     │                               ║
  5842. ║    │Spool Directory Error            ║     │                               ║
  5843. ║    │Supervisor has disabled login    ║     │                               ║
  5844. ║    │Timeout Failure                  ║     │                               ║
  5845. ║    │Transaction ends Record Lock     ║     │                               ║
  5846. ║    │Implicit Transaction Active      ║     │                               ║
  5847. ╚════╧═════════════════════════════════╩═════╧═══════════════════════════════╝
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.  
  5857.  
  5858.  
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865.  
  5866.  
  5867.                                                                                 
  5868. Netware C Library         Appendix II - Function List                 Page: A2-1
  5869. ────────────────────────────────────────────────────────────────────────────────
  5870.  
  5871.     AbortServicingQueueJobAndFile      Queue Management Services    5.1.1
  5872.     AddBinderyObjectToSet              Bindery Services             2.3.1
  5873.     AddTrusteeToDirectory              Directory Services           8.6.1
  5874.     AddUserDiskSpaceRestriction        Directory Services           8.6.2
  5875.     AllocPermanentDirectoryHandle      Directory Services           8.6.3
  5876.     AllocTemporaryDirectoryHandle      Directory Services           8.6.4
  5877.     AttachQueueServerToQueue           Queue Management Services    5.1.2
  5878.     AttachToFileServer                 Connection Services          4.3.1
  5879.     BroadcastToConsole                 Message Services             6.1.1
  5880.     CancelLPTCapture                   Print Services               9.1.1
  5881.     CancelSpecificLPTCapture           Print Services               9.1.2
  5882.     ChangeBinderyObjectPassword        Bindery Services             2.3.2
  5883.     ChangeBinderyObjectSecurity        Bindery Services             2.3.3
  5884.     ChangePropertySecurity             Bindery Services             2.3.4
  5885.     ChangeQueueJobEntry                Queue Management Services    5.1.3
  5886.     ChangeQueueJobPosition             Queue Management Services    5.1.4
  5887.     ChangeToClientRights               Queue Management Services    5.1.5
  5888.     CheckConsolePrivileges             File Server Services         3.1.1
  5889.     CheckPipeStatus                    Message Services             6.1.2
  5890.     ClearConnectionNumber              File Server Services         3.1.2
  5891.     CloseBindery                       Bindery Services             2.3.5
  5892.     CloseFileAndAbortQueueJob          Queue Management Services    5.1.7
  5893.     CloseFileAndStartQueueJob          Queue Management Services    5.1.8
  5894.     CloseMessagePipe                   Message Services             6.1.3
  5895.     CloseSemaphore                     Synchronisation Services     10.2.1
  5896.     ConvertPathToDirectoryEntry        File Server Services         3.1.3
  5897.     CreateBinderyObject                Bindery Services             2.3.6
  5898.     CreateDirectory                    Directory Services           8.6.5
  5899.     CreateProperty                     Bindery Services             2.3.7
  5900.     CreateQueue                        Queue Management Services    5.1.6
  5901.     CreateQueueJobAndFile              Queue Management Services    5.1.9
  5902.     DeallocateDirectoryHandle          Directory Services           8.6.6
  5903.     DeleteBinderyObject                Bindery Services             2.3.9
  5904.     DeleteBinderyObjectFromSet         Bindery Services             2.3.8
  5905.     DeleteDirectory                    Directory Services           8.6.7
  5906.     DeleteFakeRoot                     Directory Services           8.6.8
  5907.     DeleteProperty                     Bindery Services             2.3.10
  5908.     DeleteTrusteeFromDirectory         Directory Services           8.6.9
  5909.     DestroyQueue                       Queue Management Services    5.1.10
  5910.     DetachFromFileServer               Connection Services          4.3.2
  5911.     DetachQueueServerFromQueue         Queue Management Services    5.1.11
  5912.     DisableFileServerLogin             File Server Services         3.1.4
  5913.     DisableTransactionTracking         File Server Services         3.1.5
  5914.     DownFileServer                     File Server Services         3.1.6
  5915.     EnableFileServerLogin              File Server Services         3.1.7
  5916.     EnableTransactionTracking          File Server Services         3.1.8
  5917.     EndLPTCapture                      Print Services               9.1.3
  5918.     EndOfJob                           Workstation Services         4.4.1
  5919.     EndSpecificLPTCapture              Print Services               9.1.4
  5920.     EnterLoginArea                     Connection Services          4.3.3
  5921.     EraseFiles                         File Services                7.5.1
  5922.     ExamineSemaphore                   Synchronisation Services     10.2.2
  5923.     FileServerFileCopy                 File Services                7.5.2
  5924.     FinishServicingQueueJobAndFile     Queue Management Services    5.1.12
  5925.     FlushLPTCapture                    Print Services               9.1.5
  5926.     FlushSpecificLPTCapture            Print Services               9.1.6
  5927.                                                                                 
  5928. Netware C Library         Appendix II - Function List                 Page: A2-2
  5929. ────────────────────────────────────────────────────────────────────────────────
  5930.  
  5931.     GetBannerUserName                  Print Services               9.1.7
  5932.     GetBinderyAccessLevel              Bindery Services             2.3.11
  5933.     GetBinderyObjectDiskSpaceLeft      File Server Services         3.1.9
  5934.     GetBinderyObjectID                 Bindery Services             2.3.12
  5935.     GetBinderyObjectName               Bindery Services             2.3.13
  5936.     GetBroadcastMessage                Message Services             6.1.4
  5937.     GetBroadcastMode                   Message Services             6.1.5
  5938.     GetConnectionIDTable               Workstation Services         4.4.2
  5939.     GetConnectionInformation           Connection Services          4.3.4
  5940.     GetConnectionNumber                Connection Services          4.3.5
  5941.     GetConnectionsOpenFiles            File Server Services         3.1.10
  5942.     GetConnectionsUsageStatistics      File Server Services         3.1.11
  5943.     GetCurrentDirectory                Directory Services           8.6.10
  5944.     GetDefaultCaptureFlags             Print Services               9.1.10
  5945.     GetDefaultConnectionID             Workstation Services         4.4.3
  5946.     GetDefaultLocalPrinter             Print Services               9.1.9
  5947.     GetDirectoryHandle                 Directory Services           8.6.11
  5948.     GetDirectoryPath                   Directory Services           8.6.12
  5949.     GetDiskCacheStatistics             File Server Services         3.1.12
  5950.     GetDiskUtilisation                 File Server Services         3.1.13
  5951.     GetDriveConnectionID               Workstation Services         4.4.4
  5952.     GetDriveFlagTable                  Workstation Services         4.4.5
  5953.     GetDriveHandleTable                Workstation Services         4.4.6
  5954.     GetEffectiveDirectoryRights        Directory Services           8.6.13
  5955.     GetFileServerDateTime              File Server Services         3.1.14
  5956.     GetFileServerInformation           File Server Services         3.1.15
  5957.     GetFileServerLoginStatus           File Server Services         3.1.16
  5958.     GetFileServerName                  Workstation Services         4.4.7
  5959.     GetFileServerTable                 Workstation Services         4.4.7
  5960.     GetInternetAddress                 Connection Services          4.3.6
  5961.     GetLPTCaptureStatus                Print Services               9.1.8
  5962.     GetNetwareShellVersion             Workstation Services         4.4.8
  5963.     GetNetworkSerialNumber             File Server Services         3.1.17
  5964.     GetNumberOfLocalDrives             Workstation Services         4.4.9
  5965.     GetObjectConnectionNumbers         Connection Services          4.3.7
  5966.     GetPathFromDirectoryEntry          File Server Services         3.1.18
  5967.     GetPersonalMessage                 Message Services             6.1.6
  5968.     GetPhysicalDiskStatistics          File Server Services         3.1.19
  5969.     GetPreferredConnectionID           Workstation Services         4.4.10
  5970.     GetPrimaryConnectionID             Workstation Services         4.4.11
  5971.     GetPrinterStatus                   Print Services               9.1.11
  5972.     GetQueueJobList                    Queue Management Services    5.1.13
  5973.     GetQueueJobsFileSize               Queue Management Services    5.1.14
  5974.     GetSemaphoreInformation            File Server Services         3.1.20
  5975.     GetServerConnectionID              Workstation Services         4.4.12
  5976.     GetSpecificCaptureFlags            Print Services               9.1.12
  5977.     GetStationAddress                  Connection Services          4.3.8
  5978.     GetVolumeInformation               Directory Services           8.6.14
  5979.     GetVolumeInfoWithHandle            Directory Services           8.6.15
  5980.     GetVolumeInfoWithNumber            Directory Services           8.6.16
  5981.     GetVolumeName                      Directory Services           8.6.17
  5982.     GetVolumeNumber                    Directory Services           8.6.18
  5983.     IPXCancelEvent                     Communication Services       11.4.1
  5984.     IPXCloseSocket                     Communication Services       11.4.2
  5985.     IPXDisconnectFromTarget            Communication Services       11.4.3
  5986.     IPXGetInternetworkAddress          Communication Services       11.4.4
  5987.                                                                                 
  5988. Netware C Library         Appendix II - Function List                 Page: A2-3
  5989. ────────────────────────────────────────────────────────────────────────────────
  5990.  
  5991.     IPXGetIntervalMarker               Communication Services       11.4.5
  5992.     IPXGetLocalTarget                  Communication Services       11.4.6
  5993.     IPXInitialise                      Communication Services       11.4.7
  5994.     IPXListenForPacket                 Communication Services       11.4.8
  5995.     IPXOpenSocket                      Communication Services       11.4.9
  5996.     IPXRelinquishControl               Communication Services       11.4.10
  5997.     IPXScheduleIPXEvent                Communication Services       11.4.11
  5998.     IPXSendPacket                      Communication Services       11.4.12
  5999.     IsBinderyObjectInSet               Bindery Services             2.3.14
  6000.     IsShellLoaded                      Workstation Services         4.4.13
  6001.     LoginToFileServer                  Connection Services          4.3.9
  6002.     LogNetworkMessage                  Message Services             6.1.7
  6003.     Logout                             Connection Services          4.3.11
  6004.     LogoutFromFileServer               Connection Services          4.3.10
  6005.     MapFakeRoot                        Directory Services           8.6.19
  6006.     ModifyMaximumRightsMask            Directory Services           8.6.20
  6007.     OpenBindery                        Bindery Services             2.3.15
  6008.     OpenMessagePipe                    Message Services             6.1.8
  6009.     OpenSemaphore                      Synchronisation Services     10.2.3
  6010.     PurgeAllErasedFiles                File Services                7.5.3
  6011.     PurgeErasedFiles                   File Services                7.5.4
  6012.     ReadPropertyValue                  Bindery Services             2.3.16
  6013.     ReadQueueCurrentStatus             Queue Management Services    5.1.15
  6014.     ReadQueueJobEntry                  Queue Management Services    5.1.16
  6015.     ReadQueueServerCurrentStatus       Queue Management Services    5.1.17
  6016.     RemoveJobFromQueue                 Queue Management Services    5.1.18
  6017.     RenameBinderyObject                Bindery Services             2.3.17
  6018.     RenameDirectory                    Directory Services           8.6.21
  6019.     RestoreDirectoryHandle             Directory Services           8.6.22
  6020.     RestoreQueueServerRights           Queue Management Services    5.1.19
  6021.     SaveDirectoryHandle                Directory Services           8.6.23
  6022.     ScanBinderyObject                  Bindery Services             2.3.18
  6023.     ScanBinderyObjectTrusteePaths      Directory Services           8.6.24
  6024.     ScanDirectoryForTrustees           Directory Services           8.6.25
  6025.     ScanDirectoryInformation           Directory Services           8.6.26
  6026.     ScanFileInformation                File Services                7.5.5
  6027.     ScanProperty                       Bindery Services             2.3.19
  6028.     SendBroadcastMessage               Message Services             6.1.9
  6029.     SendConsoleBroadcast               File Server Services         3.1.21
  6030.     SendPersonalMessage                Message Services             6.1.10
  6031.     ServiceQueueJobAndOpenFile         Queue Management Services    5.1.20
  6032.     SetBannerUserName                  Print Services               9.1.13
  6033.     SetBroadcastMode                   Message Services             6.1.11
  6034.     SetCapturePrintQueue               Print Services               9.1.14
  6035.     SetDefaultCaptureFlags             Print Services               9.1.16
  6036.     SetDefaultLocalPrinter             Print Services               9.1.15
  6037.     SetDirectoryHandle                 Directory Services           8.6.27
  6038.     SetDirectoryInformation            Directory Services           8.6.28
  6039.     SetEndofJobStatus                  Workstation Services         4.4.14
  6040.     SetFileInformation                 File Services                7.5.6
  6041.     SetNWErrorMode                     Workstation Services         4.4.15
  6042.     SetPreferredConnectionID           Workstation Services         4.4.16
  6043.     SetPrimaryConnectionID             Workstation Services         4.4.17
  6044.     SetQueueCurrentStatus              Queue Management Services    5.1.21
  6045.     SetQueueServerCurrentStatus        Queue Management Services    5.1.22
  6046.     SetSpecificCaptureFlags            Print Services               9.1.17
  6047.                                                                                 
  6048. Netware C Library         Appendix II - Function List                 Page: A2-4
  6049. ────────────────────────────────────────────────────────────────────────────────
  6050.  
  6051.     SignalSemaphore                    Synchronisation Services     10.2.4
  6052.     SpecifyCaptureFile                 Print Services               9.1.18
  6053.     SPXAbortConnection                 Communication Services       11.5.1
  6054.     SPXEstablishConnection             Communication Services       11.5.2
  6055.     SPXGetConnectionStatus             Communication Services       11.5.3
  6056.     SPXInitialise                      Communication Services       11.5.4
  6057.     SPXListenForConnection             Communication Services       11.5.5
  6058.     SPXListenForSequencedPacket        Communication Services       11.5.6
  6059.     SPXSendSequencedPacket             Communication Services       11.5.7
  6060.     SPXTerminateConnection             Communication Services       11.5.8
  6061.     StartLPTCapture                    Print Services               9.1.19
  6062.     StartSpecificLPTCapture            Print Services               9.1.20
  6063.     VerifyBinderyObjectPassword        Bindery Services             2.3.20
  6064.     WaitOnSemaphore                    Synchronisation Services     10.2.5
  6065.     WritePropertyValue                 Bindery Services             2.3.21
  6066.  
  6067.  
  6068.  
  6069.  
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.  
  6105.  
  6106.  
  6107.                                                                                 
  6108. Netware C Library        Appendix III - Data Structures               Page: A3-1
  6109. ────────────────────────────────────────────────────────────────────────────────
  6110.  
  6111.     These are the structures  that  are  used  by  some  of the Netware calls.
  6112.  
  6113.     All the structures are declared in the  header  files  provided  with  the
  6114.     libraries.
  6115.  
  6116. A3.1 CONNECTION_ID_TABLE
  6117.  
  6118.     This is used by GetConnectionIDTable in the Workstation Services.
  6119.  
  6120.     typedef struct {   byte    slot_in_use;
  6121.                        byte    servers_order_number;
  6122.                        byte    servers_network_number[4];
  6123.                        byte    physical_node_address[6];
  6124.                        int     socket_number;
  6125.                        word    receive_timeout;
  6126.                        byte    routers_physical_node_address[6];
  6127.                        byte    packet_sequence_number;
  6128.                        byte    connection_number;
  6129.                        byte    connection_status;
  6130.                        word    maximum_time_out;
  6131.                        word    connection_word;
  6132.                        byte    major_server_version;
  6133.                        byte    server_flags;
  6134.                        byte    minor_server_version;  } CONNECTION_ID_TABLE;
  6135.  
  6136.     slot_in_use:                   A zero value indicates that this slot is
  6137.                                    not in use, possible non-zero values are:
  6138.                                           0xe0 = AES Temporary Indicator
  6139.                                           0xf8 = IPX in critical process
  6140.                                           0xfa = Processing
  6141.                                           0xfb = Holding (in processing after
  6142.                                                           an event occurred)
  6143.                                           0xfc = AES Waiting
  6144.                                           0xfd = Waiting
  6145.                                           0xfe = Receiving
  6146.                                           0xff = Sending
  6147.     servers_order_number:          This is the order number assigned to the
  6148.                                    corresponding server. The server with the
  6149.                                    lowest network/node address has the lowest
  6150.                                    order number. This will be a value 1 - 8.
  6151.     servers_network_number:        This identifies the network which the file
  6152.                                    server is attached. If the server is
  6153.                                    attached to more than one LAN then this
  6154.                                    will always be for the servers LAN A.
  6155.     physical_node_address:         This is the address of the servers LAN
  6156.                                    board.
  6157.     socket_number:                 The socket the shell uses for communicating
  6158.                                    with the server.
  6159.     receive_timeout:               How long the shell should wait before
  6160.                                    resending an unanswered request. This is
  6161.                                    adjusted dynamically by the shell, but will
  6162.                                    never exceed the value in maximum_time_out.
  6163.     routers_physical_node_address: This is the address of the preferred bridge
  6164.                                    to route requests through, if it is not a
  6165.                                    direct connection.
  6166.     packet_sequence_number:        This is used as a packet ID to check that
  6167.                                                                                 
  6168. Netware C Library        Appendix III - Data Structures               Page: A3-2
  6169. ────────────────────────────────────────────────────────────────────────────────
  6170.  
  6171.                                    the reply received is answering the last
  6172.                                    request.
  6173.     connection_number:             This corresponds to the entry in the file
  6174.                                    servers connection table.
  6175.                                           0xff = No Connection.
  6176.     connection_status:             This is the status of the connection.
  6177.                                           0x00 = Connection functioning
  6178.     maximum_time_out:              This is the maximum length of time that
  6179.                                    the shell should wait before resending
  6180.                                    an unanswered request.
  6181.     connection_word:               2-byte connection number, use this instead
  6182.                                    of connection_number.
  6183.     major_server_version:          Major version number, less 2, of the
  6184.                                    corresponding server.
  6185.     server_flags:                  Low order bit will be set if burst mode is
  6186.                                    enabled.
  6187.     minor_server_version:          Minor version number of the corresponding
  6188.                                    server.
  6189.  
  6190.  
  6191.  
  6192.  
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219.  
  6220.  
  6221.  
  6222.  
  6223.  
  6224.  
  6225.  
  6226.  
  6227.                                                                                 
  6228. Netware C Library        Appendix III - Data Structures               Page: A3-3
  6229. ────────────────────────────────────────────────────────────────────────────────
  6230.  
  6231. A3.2 DISK_CACHE_STATISTICS
  6232.  
  6233.     This is used  by  GetDiskCacheStatistics  in  the  File Server Environment
  6234.     Services.
  6235.  
  6236.     typedef struct {   long system_elapsed_time;
  6237.                        int  cache_buffer_count;
  6238.                        int  cache_buffer_size;
  6239.                        int  dirty_cache_buffers;
  6240.                        long cache_read_requests;
  6241.                        long cache_write_requests;
  6242.                        long cache_hits;
  6243.                        long cache_misses;
  6244.                        long physical_read_requests;
  6245.                        long physical_write_requests;
  6246.                        int  physical_read_errors;
  6247.                        int  physical_write_errors;
  6248.                        long cache_get_requests;
  6249.                        long cache_full_write_requests;
  6250.                        long cache_partial_write_requests;
  6251.                        long background_dirty_writes;
  6252.                        long background_aged_writes;
  6253.                        long total_cache_writes;
  6254.                        long cache_allocations;
  6255.                        int  thrashing_count;
  6256.                        int  LRU_block_was_dirty;
  6257.                        int  read_beyond_write;
  6258.                        int  fragmented_write_occurred;
  6259.                        int  cache_hit_unavail_block;
  6260.                        int  cache_block_scrapped;  } DISK_CACHE_STATISTICS;
  6261.  
  6262.     system_elapsed_time:        This is the number of clock ticks, since the
  6263.                                 server was loaded. Where 18.2 clock ticks =
  6264.                                 1 second approximately. When this reaches
  6265.                                 0xffffffff it wraps back to zero.
  6266.     cache_buffer_count:         The number of cache buffers in the server.
  6267.     cache_buffer_size:          Number of bytes in a cache buffer.
  6268.     dirty_cache_buffers:        Number of buffers containing data that has
  6269.                                 not yet been written to disk.
  6270.     cache_read_requests:        Number of times the cache software was asked
  6271.                                 to read some data.
  6272.     cache_write_requests:       Number of times the cache software was asked
  6273.                                 to write some data.
  6274.     cache_hits:                 Number of times cache requests were available
  6275.                                 in existing cache blocks.
  6276.     cache_misses:               Number of times cache requests were not
  6277.                                 available in cache blocks.
  6278.     physical_read_requests:     Number of actual reads on the disk the cache
  6279.                                 software actioned.
  6280.     physical_write_requests:    Number of actual writes to the disk the cache
  6281.                                 software actioned.
  6282.     physical_read_errors:       Number of errors the cache software received
  6283.                                 whilst reading from the disk.
  6284.     physical_write_errors:      Number of errors the cache software received
  6285.                                 whilst writing to the disk.
  6286.     cache_get_requests:         The number of times the cache software was
  6287.                                                                                 
  6288. Netware C Library        Appendix III - Data Structures               Page: A3-4
  6289. ────────────────────────────────────────────────────────────────────────────────
  6290.  
  6291.                                 asked to read information from the disk.
  6292.     cache_full_write_requests:  The number of times the cache software was
  6293.                                 told to write information that exactly
  6294.                                 filled one or more sectors.
  6295.     cache_partial_write_requests:
  6296.                                 The number of times the cache software was
  6297.                                 told to write information that didn't exactly
  6298.                                 fill one or more sectors, this requires a
  6299.                                 disk pre-read.
  6300.     background_dirty_writes:    The number of times that a whole cache block
  6301.                                 was completely written to a disk.
  6302.     background_aged_writes:     Number of times a partially filled cache
  6303.                                 block was written to a disk, because it had
  6304.                                 not been accessed for a period of time.
  6305.     total_cache_writes:         Total number of cache buffers written to disk.
  6306.     cache_allocations:          Number of times a cache block was allocated
  6307.                                 for use.
  6308.     thrashing_count:            Number of times a cache block was not
  6309.                                 available when a block allocation was
  6310.                                 requested.
  6311.     LRU_block_was_dirty:        Number of times the least recently used (LRU)
  6312.                                 cache block algorithm reclaimed a dirty cache
  6313.                                 block.
  6314.     read_beyond_write:          Number of times a file read request was made
  6315.                                 when file writes had not yet filled the cache
  6316.                                 block.
  6317.     fragmented_write_occurred:  Number of dirty cache blocks that contained
  6318.                                 non-contiguous sectors of information were
  6319.                                 written, and the skipped sectors were not
  6320.                                 pre-read from the disk, this requires
  6321.                                 multiple disk writes.
  6322.     cache_hit_unavail_block:    Number of cache requests that could be
  6323.                                 serviced from an available cache block, but
  6324.                                 the cache buffer could not be used, because
  6325.                                 it was in the process of being written to or
  6326.                                 read from the disk.
  6327.     cache_block_scrapped:       The number of times a cache blocked is
  6328.                                 scrapped. This is due to the process going to
  6329.                                 sleep whilst it is waiting for a spare cache
  6330.                                 block, but when it wakes the data it was
  6331.                                 requesting has been read into another cache
  6332.                                 block by another process. This process has
  6333.                                 to then scrap the cache block it was waiting
  6334.                                 for and use the block that already contains
  6335.                                 the data.
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  
  6341.  
  6342.  
  6343.  
  6344.  
  6345.  
  6346.  
  6347.                                                                                 
  6348. Netware C Library        Appendix III - Data Structures               Page: A3-5
  6349. ────────────────────────────────────────────────────────────────────────────────
  6350.  
  6351. A3.3 FILE_SERVER_INFO
  6352.  
  6353.     This is used by GetFileServerInformation in the  File  Server  Environment
  6354.     Services.
  6355.  
  6356.     typedef struct {   char server_name[48];
  6357.                        byte netware_version;
  6358.                        byte netware_subversion;
  6359.                        int  connections_supported;
  6360.                        int  connections_in_use;
  6361.                        int  max_connected_volumes;
  6362.                        byte os_revision;
  6363.                        byte SFT_level;
  6364.                        byte TTS_level;
  6365.                        int  peak_connections_used;
  6366.                        byte accounting_version;
  6367.                        byte VAP_version;
  6368.                        byte queuing_version;
  6369.                        byte print_server_version;
  6370.                        byte virtual_console_version;
  6371.                        byte security_restrictions_level;
  6372.                        byte internet_bridge_version;
  6373.                        byte reserved[60];           } FILE_SERVER_INFO;
  6374.  
  6375.     server_name[48]:            48-byte null terminated name of the server.
  6376.     netware_version:            Version of Netware (1-255).
  6377.     netware_subversion:         Sub-version of Netware (0-99).
  6378.     connections_supported:      Number of connections supported.
  6379.     connections_in_use:         Number of connections currently in use.
  6380.     max_connected_volumes:      Maximum number of volumes on the server.
  6381.     os_revision:                The revision number of the Operating System.
  6382.     SFT_level:                  System Fault Tolerance level.
  6383.     TTS_level:                  Transaction Tracking System level.
  6384.     peak_connections_used:      Maximum number of connections that have been
  6385.                                 made since the server was loaded.
  6386.     accounting_version:         The accounting version that is being used.
  6387.     VAP_version:                The Value Added Process version number.
  6388.     queuing_version:            The Queuing version number.
  6389.     print_server_version:       The Print Server version number.
  6390.     virtual_console_version:    The Virtual Console version number.
  6391.     security_restrictions_level:
  6392.                                 The security restrictions level.
  6393.     internet_bridge_version:    The Internetwork Bridge version number.
  6394.     reserved[60]:               Currently undefined.
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.                                                                                 
  6408. Netware C Library        Appendix III - Data Structures               Page: A3-6
  6409. ────────────────────────────────────────────────────────────────────────────────
  6410.  
  6411. A3.4 OPEN_FILES_INFO
  6412.  
  6413.     typedef struct {   word  task_number;
  6414.                        dword parent_dir_entry;
  6415.                        dword directory_entry;
  6416.                        byte  lock_flag;
  6417.                        byte  access_flag;
  6418.                        byte  lock_type;
  6419.                        byte  name_space;
  6420.                        byte  volume_number;
  6421.                        byte  reserved;
  6422.                        char  file_name[14];        } OPEN_FILES_INFO;
  6423.  
  6424.     taskNumber:     The task number within the workstation that has the file
  6425.                     open.
  6426.     lockFlag:       Bit settings indicating the file's locks.
  6427.  
  6428.                         (MSB) Bit 7:   Transaction flag set
  6429.                                   6:   TTS Holding lock
  6430.                                   5-4: Not Used
  6431.                                   3:   Open Normal
  6432.                                   2:   Logged
  6433.                                   1:   Open Shareable
  6434.                         (LSB)     0:   Locked
  6435.  
  6436.     accessFlag:     Bit settings indicating the connection's access rights to
  6437.                     the file :-
  6438.  
  6439.                         (MSB) Bit 7:  Not Used
  6440.                                   6:  TTS Holding Open
  6441.                                   5:  TTS Holding Detach
  6442.                                   4:  File Detached
  6443.                                   3:  Deny Write Requests from
  6444.                                       Other Stations
  6445.                                   2:  Deny Read Requests from
  6446.                                       Other Stations
  6447.                                   1:  Open For Write by this Station
  6448.                         (LSB)     0:  Open For Read by this Station
  6449.  
  6450.     lockType:       A flag indicating the type of lock.
  6451.  
  6452.                         0x00 Not Locked
  6453.                         0xFE Locked by a File Lock
  6454.                         0xFF Locked by Begin Share File Set
  6455.  
  6456.     nameSpace:      The name space used by this entry.
  6457.                     This is only returned on Netware 3.xx, a value of zero
  6458.                     will be returned on Netware 2.xx.
  6459.     volumeNumber:   The volume number within the servers volume table that
  6460.                     holds this file.
  6461.     parentDirEntry: An offset in the servers directory entry table for the
  6462.                     parent directory of this file.
  6463.                     Use GetPathFromDirectoryEntry to get the path name this
  6464.                     points to.
  6465.  
  6466.  
  6467.                                                                                 
  6468. Netware C Library        Appendix III - Data Structures               Page: A3-7
  6469. ────────────────────────────────────────────────────────────────────────────────
  6470.  
  6471.     directoryEntry: An offset in the servers directory entry table for the
  6472.                     file.
  6473.                     Use GetPathFromDirectoryEntry to get the path name this
  6474.                     points to. This will always be zero on Netware 2.xx.
  6475.     fileName[14]:   Returns a 14-byte null terminated string containing the
  6476.                     terminal file name.
  6477.  
  6478.  
  6479.  
  6480.  
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495.  
  6496.  
  6497.  
  6498.  
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504.  
  6505.  
  6506.  
  6507.  
  6508.  
  6509.  
  6510.  
  6511.  
  6512.  
  6513.  
  6514.  
  6515.  
  6516.  
  6517.  
  6518.  
  6519.  
  6520.  
  6521.  
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.                                                                                 
  6528. Netware C Library        Appendix III - Data Structures               Page: A3-8
  6529. ────────────────────────────────────────────────────────────────────────────────
  6530.  
  6531. A3.5 PHYSICAL_DISK_STATISTICS
  6532.  
  6533.     This is used by  GetPhysicalDiskStatistics  in the File Server Environment
  6534.     Services.
  6535.  
  6536.     typedef struct {   long system_elapsed_time;
  6537.                        byte physical_disk_channel;
  6538.                        byte drive_removable_flag;
  6539.                        byte physical_drive_type;
  6540.                        byte controller_drive_number;
  6541.                        byte controller_number;
  6542.                        byte controller_type;
  6543.                        long drive_size;
  6544.                        int  drive_cylinders;
  6545.                        byte drive_heads;
  6546.                        byte sectors_per_track;
  6547.                        char drive_definition_string[64];
  6548.                        int  io_error_count;
  6549.                        long hot_fix_table_start;
  6550.                        int  hot_fix_table_size;
  6551.                        int  hot_fix_blocks_available;
  6552.                        byte hot_fix_disabled;   } PHYSICAL_DISK_STATISTICS;
  6553.  
  6554.     system_elapsed_time:        This is the number of clock ticks, since the
  6555.                                 server was loaded. Where 18.2 clock ticks =
  6556.                                 1 second approximately. When this reaches
  6557.                                 0xffffffff it wraps back to zero.
  6558.     physical_disk_channel:      The disk channel the disk is attached to.
  6559.     drive_removable_flag:       A non-zero value indicates this drive is
  6560.                                 removable.
  6561.     physical_drive_type:        The type of drive:
  6562.                                         1=XT, 2=AT, 3=SCSI,
  6563.                                         4=disk coprocessor,
  6564.                                         5=PS/2 MFM controller,
  6565.                                         6=PS/2 ESDI controller,
  6566.                                         7=Convergent Technology SBIC,
  6567.                                         50 to 255=Value-added disk drive.
  6568.     controller_drive_number:    Drive number of the disk relative to the
  6569.                                 controller number.
  6570.     controller_number:          The address on the physical disk channel of
  6571.                                 the disk's controller.
  6572.     controller_type:            Contains a number indicating the type,
  6573.                                 make and model of the controller.
  6574.     drive_size:                 Size of the disk in blocks, 1 block = 4096
  6575.                                 bytes. This does not include the area of the
  6576.                                 disk reserved for Hot Fix.
  6577.     drive_cylinders:            Number of cylinders on the drive.
  6578.     drive_heads:                Number of heads on the drive.
  6579.     sectors_per_track:          The number of sectors on each track.
  6580.                                 1 sector = 512 bytes.
  6581.     drive_definition_string:    64-byte null terminated string holding
  6582.                                 the make and model of the drive.
  6583.     io_error_count:             This is the number of I/O errors on the disk
  6584.                                 since the server was loaded.
  6585.     hot_fix_table_start:        This is the first block of the Hot Fix area
  6586.                                 on the disk.
  6587.                                                                                 
  6588. Netware C Library        Appendix III - Data Structures               Page: A3-9
  6589. ────────────────────────────────────────────────────────────────────────────────
  6590.  
  6591.     hot_fix_table_size:         Number of blocks in the Hot Fix area.
  6592.     hot_fix_blocks_available:   Number of unused blocks in the Hot Fix area.
  6593.     hot_fix_disabled:           A non-zero value indicates that Hot Fix
  6594.                                 redirection is disabled.
  6595.  
  6596.  
  6597.  
  6598.  
  6599.  
  6600.  
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607.  
  6608.  
  6609.  
  6610.  
  6611.  
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632.  
  6633.  
  6634.  
  6635.  
  6636.  
  6637.  
  6638.  
  6639.  
  6640.  
  6641.  
  6642.  
  6643.  
  6644.  
  6645.  
  6646.  
  6647.                                                                                 
  6648. Netware C Library        Appendix III - Data Structures              Page: A3-10
  6649. ────────────────────────────────────────────────────────────────────────────────
  6650.  
  6651. A3.6 PRINT_CONTROL_DATA
  6652.  
  6653.     This is used by the Print Services: GetDefaultCaptureFlags,
  6654.                                         GetSpecificCaptureFlags,
  6655.                                         SetDefaultCaptureFlags,
  6656.                                         SetSpecificCaptureFlags.
  6657.  
  6658.     typedef struct {   byte  Status;
  6659.                        byte  PrintFlags;
  6660.                        byte  TabSize;
  6661.                        byte  ServerPrinter;
  6662.                        byte  NumberCopies;
  6663.                        byte  FormType;
  6664.                        byte  Reserved1;
  6665.                        byte  BannerText[13];
  6666.                        byte  Reserved2;
  6667.                        byte  LocalLPTDevice;
  6668.                        int   FlushTimeoutCounter;
  6669.                        byte  FlushOnClose;
  6670.                        int   MaximumLines;
  6671.                        int   MaximumChars;
  6672.                        byte  FormName[13];
  6673.                        byte  LPTFlag;
  6674.                        byte  FileFlag;
  6675.                        byte  TimeoutFlag;
  6676.                        long  SetupBufferAddress;
  6677.                        long  ResetBufferAddress;
  6678.                        byte  ConnectIdQPrintJob;
  6679.                        byte  InProgress;
  6680.                        byte  PrintQFlag;
  6681.                        byte  PrintJobValid;
  6682.                        long  PrintQID;
  6683.                        int   PrintJobNumber;  } PRINT_CONTROL_DATA;
  6684.  
  6685.     Status:             This is always set to 0x00
  6686.     PrintFlags:         This includes the following bits:
  6687.  
  6688.                           (MSB) Bit   7: The banner page is printed
  6689.                                       6: Tab size plus other print control
  6690.                                          sequences, will be interpreted by the
  6691.                                          server's print process.
  6692.                                     5-4: Not specified
  6693.                                       3: The server's print service will
  6694.                                          suppress the automatic form feed at
  6695.                                          the end of the print job
  6696.                                       2: The print job is released for
  6697.                                          printing if the capture is broken by
  6698.                                          the connection to the server being
  6699.                                          lost.
  6700.                                       1: Not specified
  6701.                           (LSB)       0: Not specified
  6702.  
  6703.     TabSize:             Current tab size (1-18)
  6704.     ServerPrinter:       Printer number on which the captured file will be
  6705.                          printed (0-4).
  6706.  
  6707.                                                                                 
  6708. Netware C Library        Appendix III - Data Structures              Page: A3-11
  6709. ────────────────────────────────────────────────────────────────────────────────
  6710.  
  6711.     NumberCopies:        Number of copies to print (0-255)
  6712.     FormType:            The type of form that must be mounted in the printer
  6713.                          for this file to be printed (0-255).
  6714.     Reserved1:           Undefined
  6715.     BannerText[13]:      13-byte string that will be printed on the bottom
  6716.                          half of a banner page. If this is null then the
  6717.                          capture file name will be printed.
  6718.     Reserved2:           Undefined
  6719.     LocalLPTDevice:      The default LPT device (0-2,0=LPT1)
  6720.     FlushTimeoutCounter: This starts counting down every time an INT 17h is
  6721.                          executed. When the timeout expires the capture file
  6722.                          is flushed (0-65535).
  6723.     FlushOnClose:        If this is zero (enabled) then the server will flush
  6724.                          the capture file when the program ends the capture of
  6725.                          the default LPT device. A non-zero value indicates
  6726.                          this is disabled.
  6727.     MaximumLines:        The maximum lines per page.
  6728.     MaximumChars:        The maximum characters per line.
  6729.     FormName[13]:        The name of the form that must be mounted in the
  6730.                          printer for this file to print.
  6731.     LPTFlag:             This is set (0xff) when the capture of the default
  6732.                          LPT device is started, and cleared (0x00) when it is
  6733.                          ended.
  6734.     FileFlag:            This is et (0xff) when a capture filename is
  6735.                          specified, but cleared (0x00) when one has not been
  6736.                          specified.
  6737.     TimeoutFlag:         This is set (0xff) when the timeout counter is
  6738.                          counting down, and cleared (0x00) when it isn't.
  6739.     SetupBufferAddress:  This points to a buffer containing the printer setup
  6740.                          string. The buffer size is stored in the first word.
  6741.     ResetBufferAddress:  This points to a buffer containing the printer reset
  6742.                          string. The buffer size is stored in the first word.
  6743.     ConnectIdQPrintJob:  This is the connection ID of the server queuing the
  6744.                          print job.
  6745.     InProgress:          This is set (0xff) when the first character of the
  6746.                          print job is sent to the default LPT device. It is
  6747.                          cleared (0x00) when then capture is ended,flushed or
  6748.                          cancelled.
  6749.     PrintQFlag:          This is set (0xff) when the print queue job entry is
  6750.                          placed in the print queue. It is cleared (0x00) when
  6751.                          the capture is ended, or cancelled.
  6752.     PrintJobValid:       This is set (0xff) whilst the capture file is open,
  6753.                          and cleared (0x00) when the capture is ended,
  6754.                          cancelled or flushed.
  6755.     PrintQID:            This is the bindery object ID of the print queue on
  6756.                          the target server.
  6757.     PrintJobNumber:      This is the job number the Queue Management System
  6758.                          assigns to a print queue job entry.
  6759.  
  6760.  
  6761.  
  6762.  
  6763.  
  6764.  
  6765.  
  6766.  
  6767.                                                                                 
  6768. Netware C Library        Appendix III - Data Structures              Page: A3-12
  6769. ────────────────────────────────────────────────────────────────────────────────
  6770.  
  6771. A3.7 QUEUE_JOB_ENTRY
  6772.  
  6773.     This is a queue job's job entry structure used  by  the  Queue  Management
  6774.     Services.
  6775.  
  6776.     typedef struct {   byte client_station;
  6777.                        byte client_task_number;
  6778.                        long client_id_number;
  6779.                        long target_server_id_number;
  6780.                        byte target_execution_time[6];
  6781.                        byte job_entry_time[6];
  6782.                        word job_number;
  6783.                        word job_type;
  6784.                        byte job_position;
  6785.                        byte job_control_flags;
  6786.                        byte job_file_name[14];
  6787.                        byte job_file_handle[6];
  6788.                        byte server_station;
  6789.                        byte server_task_number;
  6790.                        long server_id_number;
  6791.                        char text_job_description[50];
  6792.                        byte client_record_area[152];   } QUEUE_JOB_ENTRY;
  6793.  
  6794.     client_station:           Provided by the Queue Management System, it is
  6795.                               the connection number of the station that placed
  6796.                               the job into the queue.
  6797.     client_task_number:       Provided by the Queue Management System, it is
  6798.                               the number of the task that was  active  on  the
  6799.                               workstation  when  the  job  was placed into the
  6800.                               queue.
  6801.     client_id_number:         Provided by the Queue Management System, it is
  6802.                               the object id number of the station that placed
  6803.                               the job into the queue.
  6804.     target_server_id_number:  Provided by the client that placed the job into
  6805.                               the queue, it is the bindery object id of the
  6806.                               queue server that can service the job.
  6807.     target_execution_time[6]: Provided by the client that placed the job into
  6808.                               the queue, it is the earliest time that the job
  6809.                               can be serviced, if this field is set to all
  6810.                               0xff, then the job can be serviced at the
  6811.                               earliest oportunity.
  6812.                               (Byte 0=year,1=month,2=day,3=hour,4=minutes,
  6813.                                     5=seconds)
  6814.     job_entry_time[6]:        Provided by the Queue Management System, it is
  6815.                               the date and time when the job entered the queue
  6816.                               according to the system clock of the server.
  6817.                               (Byte 0=year,1=month,2=day,3=hour,4=minutes,
  6818.                                     5=seconds)
  6819.     job_number:               Provided by the Queue Management System, it is
  6820.                               the job number allocated to the job.
  6821.     job_type:                 Provided by the client that placed the job into
  6822.                               the queue, it is the type of job represented by
  6823.                               this job entry. A job server can request only
  6824.                               jobs of a specific type, it should be set to
  6825.                               zero if it is not used, and must never be set
  6826.                               to -1.
  6827.                                                                                 
  6828. Netware C Library        Appendix III - Data Structures              Page: A3-13
  6829. ────────────────────────────────────────────────────────────────────────────────
  6830.  
  6831.     job_position:             Provided by the Queue Management System, it is
  6832.                               the position of the job within the queue.
  6833.     job_control_flags:        Provided by the client that placed the job into
  6834.                               the queue, bits in this field are set as
  6835.  
  6836.                               (MSB) Bit   7: Operator hold
  6837.                                              Prevents the job from being
  6838.                                              serviced, can only be set by
  6839.                                              an operator.
  6840.                                           6: User hold flag
  6841.                                              Prevents the job from being
  6842.                                              serviced, can be set by an
  6843.                                              operator, or the user that
  6844.                                              placed the job in the queue.
  6845.                                           5: Entry open flag
  6846.                                              Set by the client to indicate
  6847.                                              that the job is not yet ready
  6848.                                              for service, i.e. the job file
  6849.                                              has not yet been written. This
  6850.                                              bit is cleared by Close File And
  6851.                                              Start Queue Job.
  6852.                                           4: Service restart flag
  6853.                                              If set, the job will remain in
  6854.                                              the queue if a job server aborts
  6855.                                              the job.
  6856.                                           3: Service auto-start flag
  6857.                                              The job will be automatically
  6858.                                              serviced, if a server connection
  6859.                                              is lost and the client has not
  6860.                                              yet released the job.
  6861.                                           2: Not specified
  6862.                                           1: Not specified
  6863.                               (LSB)       0: Not specified
  6864.  
  6865.     job_file_name[14]:        Provided by the Queue Management System, it
  6866.                               specifies the name of the job file associated
  6867.                               with this job.
  6868.     job_file_handle[6]:       Provided by the Queue Management System, it
  6869.                               specifies the netware file handle of the job
  6870.                               file associated with this job.
  6871.     server_station:           Provided by the Queue Management System, it
  6872.                               specifies the station number of the job server
  6873.                               servicing the job.
  6874.     server_task_number:       Provided by the Queue Management System, it
  6875.                               specifies the task number within the job server
  6876.                               that is servicing the job.
  6877.     server_id_number:         Provided by the Queue Management System, it
  6878.                               specifies the bindery object id of the job
  6879.                               server that is servicing the job.
  6880.     text_job_description[50]: Set by the client that placed the job into the
  6881.                               queue, it is a null-terminated ASCII text
  6882.                               description of the purpose of the job.
  6883.     client_record_area[152]:  Set by the client that placed the job into the
  6884.                               queue, it provides additional information for
  6885.                               the job server.
  6886.  
  6887.                                                                                 
  6888. Netware C Library        Appendix III - Data Structures              Page: A3-14
  6889. ────────────────────────────────────────────────────────────────────────────────
  6890.  
  6891. A3.8 SPX_CONNECTION_STATUS
  6892.  
  6893.     This is used by SPXGetConnectionStatus in the Communication Services.
  6894.  
  6895.     typedef struct { byte connection_state;
  6896.                      byte watchdog_is_on;
  6897.                      int  local_connection_id;
  6898.                      int  remote_connection_id;
  6899.                      int  sequence_number;
  6900.                      int  local_acknowledge_number;
  6901.                      int  local_allocation_number;
  6902.                      int  remote_acknowledge_number;
  6903.                      int  remote_allocation_number;
  6904.                      int  local_socket;
  6905.                      byte immediate_address[6];
  6906.                      byte network_number[4];
  6907.                      byte node_address[6];
  6908.                      int  socket;
  6909.                      int  retransmission_count;
  6910.                      int  est_roundtrip_delay;
  6911.                      int  retransmitted_packets;
  6912.                      int  suppressed_packets;      } SPX_CONNECTION_STATUS;
  6913.  
  6914.     connection_state:           Current state of the connection.
  6915.  
  6916.                                         0x01  Waiting. SPX is listening on the
  6917.                                               connection, waiting for an
  6918.                                               establish connection packet.
  6919.                                         0x02  Starting. SPX is attempting to
  6920.                                               make a connection by sending
  6921.                                               establish connection packets.
  6922.                                         0x03  Established. SPX has established
  6923.                                               a connection with a remote
  6924.                                               workstation.
  6925.                                         0x04  Terminating. The remote work-
  6926.                                               station has terminated the
  6927.                                               connection.
  6928.  
  6929.     watchdog_is_on:             If bit 1 is set, then the watchdog process is
  6930.                                 monitoring the connection.
  6931.     local_connection_id:        The SPX connection id of this workstation.
  6932.     remote_connection_id:       The SPX connection id of the remote station.
  6933.     sequence_number:            The sequence number that the local SPX will
  6934.                                 assign to the next packet that it sends. This
  6935.                                 is incremented each time a packet is sent.
  6936.                                 When it reaches 0xffff it wraps back to zero.
  6937.     local_acknowledge_number:   The sequence number of the next packet that
  6938.                                 the local SPX expects to receive.
  6939.     local_allocation_number:    This is the number of outstanding listen ECBs
  6940.                                 that are available for the local SPX. The
  6941.                                 remote SPX is allowed to send packets with
  6942.                                 sequence numbers up to and including the
  6943.                                 local_allocation_number. This number is
  6944.                                 incremented as the local workstation generates
  6945.                                 listen ECBs. When this number reaches 0xffff
  6946.                                 it wraps back to zero.
  6947.                                                                                 
  6948. Netware C Library        Appendix III - Data Structures              Page: A3-15
  6949. ────────────────────────────────────────────────────────────────────────────────
  6950.  
  6951.     remote_acknowledge_number:  This is the sequence number of the next packet
  6952.                                 that the remote SPX expects to receive from
  6953.                                 the local SPX.
  6954.     remote_allocation_number:   This is the number of outstanding listen ECBs
  6955.                                 that are available to the remote SPX. The
  6956.                                 local SPX is allowed to send packets with
  6957.                                 sequence numbers up to and including the
  6958.                                 remote_allocation_number. This number is
  6959.                                 incremented as the remote station generates
  6960.                                 listen ECBs. When this number reaches 0xffff
  6961.                                 it wraps back to zero.
  6962.     local_socket:               This is the socket number that the local SPX
  6963.                                 is using to send and receive packets.
  6964.     immediate_address[6]:       This is the address of the bridge that routes
  6965.                                 the packets to and from the remote station. If
  6966.                                 the loacl and remote stations are on the same
  6967.                                 local network, then this is the address of the
  6968.                                 remote station.
  6969.     network_number[4]:          The network number that the remote station is
  6970.                                 on.
  6971.     node_address[6]:            The node address of the remote station.
  6972.     socket:                     The socket number that the remote station is
  6973.                                 using to send and receive packets.
  6974.     retransmission_count:       The number of times that SPX will attempt to
  6975.                                 resend an unacknowledged packet before it
  6976.                                 determines that the remote half of the
  6977.                                 connection is no longer responding.
  6978.     est_roundtrip_delay:        This is the number of clock ticks that the
  6979.                                 local SPX will wait for before resending
  6980.                                 a packet.
  6981.     retransmitted_packets:      The number of times that the local SPX has
  6982.                                 had to resend a packet for this connection.
  6983.     suppressed_packets:         The number of packets that have been discarded
  6984.                                 by the local SPX, possibly due to a duplicate
  6985.                                 packet being received.
  6986.  
  6987.  
  6988.  
  6989.  
  6990.  
  6991.  
  6992.  
  6993.  
  6994.  
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.                                                                                 
  7008. Netware C Library        Appendix III - Data Structures              Page: A3-16
  7009. ────────────────────────────────────────────────────────────────────────────────
  7010.  
  7011. A3.9 VOLUME_STATISTICS
  7012.  
  7013.     This is used by GetVolumeInformation in the Directory Services.
  7014.  
  7015.     typedef struct {   long system_elapsed_time;
  7016.                        byte volume_number;
  7017.                        byte logical_drive_number;
  7018.                        int  sectors_per_block;
  7019.                        int  starting_block;
  7020.                        int  total_blocks;
  7021.                        int  available_blocks;
  7022.                        int  total_directory_slots;
  7023.                        int  available_directory_slots;
  7024.                        int  max_used_dir_entries;
  7025.                        byte volume_is_hashed;
  7026.                        byte volume_is_cached;
  7027.                        byte volume_is_removable;
  7028.                        byte volume_is_mounted;
  7029.                        char volume_name[17];        } VOLUME_STATISTICS;
  7030.  
  7031.     system_elapsed_time:        This is the number of clock ticks, since the
  7032.                                 server was loaded. Where 18.2 clock ticks =
  7033.                                 1 second approximately. When this reaches
  7034.                                 0xffffffff it wraps back to zero.
  7035.     volume_number:              This identifies the volume in the servers
  7036.                                 Volume Table.
  7037.     logical_drive_number:       This is the volumes logical drive number on
  7038.                                 the server.
  7039.     sectors_per_block:          This is the number of 512-byte sectors held
  7040.                                 in each block.
  7041.     starting_block:             The number of the first block of the volume.
  7042.     total_blocks:               Total number of blocks on the volume.
  7043.     available_blocks:           Total number of unused blocks on the volume.
  7044.     total_directory_slots:      Total number of directory slots allocated for
  7045.                                 the volume at installation time.
  7046.     available_directory_slots:  Total number of unused directory slots.
  7047.     max_used_dir_entries:       Maximum directory slots used at any one time
  7048.                                 on the volume.
  7049.     volume_is_hashed:           A non-zero value indicates that the volume is
  7050.                                 hashed in the servers memory.
  7051.     volume_is_cached:           A non-zero value indicates that the volume is
  7052.                                 cached in the servers memory.
  7053.     volume_is_removable:        A non-zero value indicates that the disk that
  7054.                                 holds the volume is removable.
  7055.     volume_is_mounted:          A non-zero value indicates that the volume is
  7056.                                 mounted.
  7057.     volume_name[17]:            The 17-byte null terminated volume name
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.                                                                                 
  7068. Netware C Library           Appendix IV - Order Form                  Page: A4-1
  7069. ────────────────────────────────────────────────────────────────────────────────
  7070.  
  7071.                                   Return to:    Adrian Cunnelly
  7072.                                                 18 Kingsley Avenue,
  7073.                                                 Heaton Norris,
  7074.                                                 Stockport,
  7075.                                                 Cheshire.
  7076.                                                 SK4 1PW
  7077.                                                 ENGLAND
  7078.  
  7079. Name:       __________________________________________________
  7080.  
  7081. Company:    __________________________________________________
  7082.  
  7083. Address:    __________________________________________________
  7084.  
  7085.             __________________________________________________
  7086.  
  7087.             __________________________________________________
  7088.  
  7089.             __________________________________________________
  7090.  
  7091. Phone:      __________________________________________________
  7092.  
  7093. Email:      __________________________________________________
  7094.  
  7095.  
  7096. Diskette size (Select one): [___] 5.25" 1.2mb
  7097.                             [___] 5.25" 360k
  7098.                             [___] 3.5"  1.44mb
  7099.                             [___] 3.5"  720k
  7100.  
  7101.                                        Pounds   US
  7102.                                        Sterling Dollars  Quantity Total
  7103.                                        -------- -------  -------- -----
  7104.     Registration ......................£40.00   $68.00   [  ]     [     ]
  7105.            includes:
  7106.                1) The latest version of the library
  7107.                   (large,medium & small models) for
  7108.                   Microsoft C 6.0,7.0, Turbo C 2.0
  7109.                   and Borland C++ 2.0,3.1.
  7110.                2) Windows DLL.
  7111.                3) Printed manual.
  7112.  
  7113.     Registration + Full Source code ...£75.00   $128.00  [  ]     [     ]
  7114.            includes:
  7115.                1) The latest version of the library
  7116.                   (large,medium & small models) for
  7117.                   Microsoft C 6.0,7.0, Turbo C 2.0
  7118.                   and Borland C++ 2.0,3.1.
  7119.                2) Windows DLL.
  7120.                3) Printed manual.
  7121.                4) Full library source code.
  7122.  
  7123.     Additional manuals .........(each) £15.00   $25.00   [  ]     [     ]
  7124.  
  7125.     Total......................................................... _____
  7126.  
  7127.                                                                                 
  7128. Netware C Library           Appendix IV - Order Form                  Page: A4-2
  7129. ────────────────────────────────────────────────────────────────────────────────
  7130.  
  7131. All the above prices include postage and packing.
  7132.  
  7133. Payment must be in the form of a cheque, money order or bankers draft,
  7134. in UK Pounds Sterling, or US Dollars, and must be made payable to
  7135. Adrian Cunnelly.
  7136.  
  7137.  
  7138.  
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149.  
  7150.  
  7151.  
  7152.  
  7153.  
  7154.  
  7155.  
  7156.  
  7157.  
  7158.  
  7159.  
  7160.  
  7161.  
  7162.  
  7163.  
  7164.  
  7165.  
  7166.  
  7167.  
  7168.  
  7169.  
  7170.  
  7171.  
  7172.  
  7173.  
  7174.  
  7175.  
  7176.  
  7177.  
  7178.  
  7179.  
  7180.  
  7181.  
  7182.  
  7183.  
  7184.  
  7185.  
  7186.  
  7187.                                                                                 
  7188.