home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bpos2i.zip / QUECALLS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-05-31  |  8KB  |  186 lines

  1. (* ====================================================== *)
  2. (*                        QUECALLS.PAS                    *)
  3. (*    Implementation of the functions of QUECALLS.DLL     *)
  4. (*       Translated to Pascal by jb+wr/toolbox mag        *)
  5. (* ====================================================== *)
  6. {$IFNDEF OS2}
  7.   Error: Wrong target/Compiler not patched
  8. {$ENDIF}
  9.  
  10. UNIT QueCalls;
  11.  
  12. INTERFACE
  13.  
  14. USES
  15.   Os2Def;
  16.  
  17. TYPE
  18.   (* Request data identifies the sending process and *)
  19.   (* type of data retrieved from a queue.            *)
  20.   RequestData = RECORD
  21.     ProcessID : WORD;     (* process ID of sender *)
  22.     Request   : WORD;     (* request type         *)
  23.   END;
  24.  
  25. (* Purge all elements from a queue *)
  26. FUNCTION DosPurgeQueue(
  27.     QueueHandle         : WORD      (* the queue handle *)
  28.     ) : WORD;
  29. FUNCTION Dos16PurgeQueue(
  30.     QueueHandle         : WORD      (* the queue handle *)
  31.     ) : WORD;
  32. FUNCTION DosOpenQueue(
  33.     VAR OwnerPID        : WORD;     (* returned process id of owner *)
  34.     VAR QueueHandle     : WORD;     (* returned que handle *)
  35.     QueueName           : pChar         (* prefix with \QUEUES\ *)
  36.     ) : WORD;
  37. FUNCTION Dos16OpenQueue(
  38.     VAR OwnerPID        : WORD;     (* returned process id of owner *)
  39.     VAR QueueHandle     : WORD;     (* returned que handle *)
  40.     QueueName           : pChar         (* prefix with \QUEUES\ *)
  41.     ) : WORD;
  42.  
  43. (* Get and element from a queue without removing it *)
  44.  
  45. FUNCTION DosPeekQueue(
  46.     QueueHandle         : WORD;     (* handle of the queue to read *)
  47.     VAR Request         : RequestData;  (* returned info about the item *)
  48.     VAR DataLength      : WORD;     (* returned length of data *)
  49.     VAR DataAddress     : Pointer;      (* returned address of data *)
  50.     VAR ElementCode     : WORD;     (* 0 to start, non zero gets next *)
  51.     NoWait              : BOOLEAN;      (* whether to wait if empty *)
  52.     VAR ElemPriority    : BYTE;         (* returned priority of item *)
  53.     SemHandle           : SemaPhore     (* semaphore to use if notwait spec *)
  54.     ) : WORD;
  55. FUNCTION Dos16PeekQueue(
  56.     QueueHandle         : WORD;     (* handle of the queue to read *)
  57.     VAR Request         : RequestData;  (* returned info about the item *)
  58.     VAR DataLength      : WORD;     (* returned length of data *)
  59.     VAR DataAddress     : Pointer;      (* returned address of data *)
  60.     VAR ElementCode     : WORD;     (* 0 to start, non zero gets next *)
  61.     NoWait              : BOOLEAN;      (* whether to wait if empty *)
  62.     VAR ElemPriority    : BYTE;         (* returned priority of item *)
  63.     SemHandle           : SemaPhore     (* semaphore to use if notwait spec *)
  64.     ) : WORD;
  65.  
  66. (* Get the number of elements in a queue *)
  67.  
  68. FUNCTION DosQueryQueue(
  69.     QueueHandle         : WORD;     (* the handle of the queue *)
  70.     VAR NumberElements  : WORD      (* returned number of elements *)
  71.     ) : WORD;
  72. FUNCTION Dos16QueryQueue (
  73.     QueueHandle         : WORD;     (* the handle of the queue *)
  74.     VAR NumberElements  : WORD      (* returned number of elements *)
  75.     ) : WORD;
  76.  
  77. (* Read an element from a queue *)
  78.  
  79. FUNCTION DosReadQueue(
  80.     QueueHandle         : WORD;     (* handle of the queue to read *)
  81.     VAR Request         : RequestData;  (* returned info about the item *)
  82.     VAR DataLength      : WORD;     (* returned length of data *)
  83.     VAR DataAddress     : Pointer;      (* returned address of data *)
  84.     ElementCode         : WORD;     (* 0 to start, non zero gets next *)
  85.     NoWait              : BOOLEAN;      (* whether to wait if empty *)
  86.     VAR ElemPriority    : WORD;     (* returned priority of item *)
  87.     SemHandle           : SemaPhore     (* semaphore to use if notwait spec *)
  88.     ) : WORD;
  89. FUNCTION Dos16ReadQueue(
  90.     QueueHandle         : WORD;     (* handle of the queue to read *)
  91.     VAR Request         : RequestData;  (* returned info about the item *)
  92.     VAR DataLength      : WORD;     (* returned length of data *)
  93.     VAR DataAddress     : Pointer;      (* returned address of data *)
  94.     ElementCode         : WORD;     (* 0 to start, non zero gets next *)
  95.     NoWait              : BOOLEAN;      (* whether to wait if empty *)
  96.     VAR ElemPriority    : WORD;     (* returned priority of item *)
  97.     SemHandle           : SemaPhore     (* semaphore to use if notwait spec *)
  98.     ) : WORD;
  99.  
  100. (* Write an element to a queue *)
  101.  
  102. FUNCTION DosWriteQueue(
  103.     QueueHandle         : WORD;     (* handle of queue to write to *)
  104.     Request             : WORD;     (* parameter sent with entry *)
  105.     DataLength          : WORD;     (* length of data to write *)
  106.     DataBuffer          : Pointer;      (* address of data buffer *)
  107.     ElemPriority        : WORD      (* priority of element *)
  108.     ) : WORD;
  109. FUNCTION Dos16WriteQueue(
  110.     QueueHandle         : WORD;     (* handle of queue to write to *)
  111.     Request             : WORD;     (* parameter sent with entry *)
  112.     DataLength          : WORD;     (* length of data to write *)
  113.     DataBuffer          : Pointer;      (* address of data buffer *)
  114.     ElemPriority        : WORD      (* priority of element *)
  115.     ) : WORD;
  116.  
  117. (* close a queue *)
  118.  
  119. FUNCTION DosCloseQueue(hqueue: WORD   (* handle returned by create or open queue *)
  120.                            ) : WORD;
  121. FUNCTION Dos16CloseQueue(hqueue: WORD   (* handle returned by create or open queue *)
  122.                              ) : WORD;
  123.  
  124. (* create a queue *)
  125.  
  126. CONST
  127.   QUE_FIFO            = 0;
  128.   QUE_LIFO            = 1;
  129.   QUE_PRIORITY        = 2;
  130.  
  131. FUNCTION DosCreateQueue(
  132.     VAR QueueHandle     : WORD;   (* returned handle for the queue *)
  133.     QueuePrty           : WORD; (* how the queue is ordered *)
  134.     QueueName           : pChar      (* name of queue, prefix with \QUEUES\ *)
  135.     ) : WORD;
  136.  
  137. FUNCTION Dos16CreateQueue(
  138.     VAR QueueHandle     : WORD;   (* returned handle for the queue *)
  139.     QueuePrty           : WORD; (* how the queue is ordered *)
  140.     QueueName           : pChar      (* name of queue, prefix with \QUEUES\ *)
  141.     ) : WORD;
  142.  
  143.  
  144. IMPLEMENTATION
  145.  
  146.   FUNCTION DosReadQueue;    EXTERNAL 'QueCalls' INDEX   1;
  147.   FUNCTION Dos16ReadQueue;  EXTERNAL 'QueCalls' INDEX   1;
  148.  
  149.   FUNCTION DosPurgeQueue;    EXTERNAL 'QueCalls' INDEX   2;
  150.   FUNCTION Dos16PurgeQueue;  EXTERNAL 'QueCalls' INDEX   2;
  151.  
  152.   FUNCTION DosCloseQueue;    EXTERNAL 'QueCalls' INDEX   3;
  153.   FUNCTION Dos16CloseQueue;  EXTERNAL 'QueCalls' INDEX   3;
  154.  
  155.   FUNCTION DosQueryQueue;    EXTERNAL 'QueCalls' INDEX   4;
  156.   FUNCTION Dos16QueryQueue;  EXTERNAL 'QueCalls' INDEX   4;
  157.  
  158.   FUNCTION DosPeekQueue;     EXTERNAL 'QueCalls' INDEX   5;
  159.   FUNCTION Dos16PeekQueue;   EXTERNAL 'QueCalls' INDEX   5;
  160.  
  161.   FUNCTION DosWriteQueue;    EXTERNAL 'QueCalls' INDEX   6;
  162.   FUNCTION Dos16WriteQueue;  EXTERNAL 'QueCalls' INDEX   6;
  163.  
  164.   FUNCTION DosOpenQueue;     EXTERNAL 'QueCalls' INDEX   7;
  165.   FUNCTION Dos16OpenQueue;   EXTERNAL 'QueCalls' INDEX   7;
  166.  
  167.   FUNCTION DosCreateQueue;   EXTERNAL 'QueCalls' INDEX   8;
  168.   FUNCTION Dos16CreateQueue; EXTERNAL 'QueCalls' INDEX   8;
  169.  
  170. (* ====================================================== *)
  171. (*                         32 Bit                         *)
  172. {
  173.   FUNCTION Dos32ReadQueue;   External 'QueCalls' INDEX   9;
  174.   FUNCTION Dos32PurgeQueue;  External 'QueCalls' INDEX  10;
  175.   FUNCTION Dos32CloseQueue;  External 'QueCalls' INDEX  11;
  176.   FUNCTION Dos32QueryQueue;  External 'QueCalls' INDEX  12;
  177.   FUNCTION Dos32PeekQueue;   External 'QueCalls' INDEX  13;
  178.   FUNCTION Dos32WriteQueue;  External 'QueCalls' INDEX  14;
  179.   FUNCTION Dos32OpenQueue;   External 'QueCalls' INDEX  15;
  180.   FUNCTION Dos32CreateQueue; External 'QueCalls' INDEX  16;
  181. }
  182.  
  183. END.
  184.  
  185. (* ====================================================== *)
  186.