Interprocess Communication Using Named Pipes (Part 1)

#define  NPIPE_NAME   "\\PIPE\\SRVPIPE"         /* Pipe name             */

void RequestThread(TRANS *Trans)                /* Requester thread      */
{
     ULONG      ulBytes;                        /* Bytes read/written    */
     APIRET     rc;                             /* Return code           */

     rc = DosWaitNPipe(NPIPE_NAME,              /* Wait on named pipe    */
                       NP_WAIT_INDEFINITELY);   /* Wait indefinitely     */

     rc = DosCallNPipe(NPIPE_NAME,              /* Pipe name             */
                       Trans->Request,          /* Request buffer ptr    */
                       sizeof(REQUEST),         /* Size of buffer        */
                       Trans->Reply,            /* Reply buffer ptr      */
                       sizeof(REPLY),           /* Size of buffer        */
                       &ulBytes,                /* No. of bytes read     */
                       10000);                  /* Timeout period        */

     WinPostMsg(Trans->hReturn,                 /* Notify calling window */
                WMP_REQUESTCOMPLETE,            /* Request is complete   */
                (MPARAM)Trans,                  /* Transaction structure */
                0);
     DosExit(0);
}

This example shows a secondary thread in a "requester" process, writing to and reading from a named pipe.


[Back: Interprocess Communication Using Queues (Part 3)]
[Next: Interprocess Communication Using Named Pipes (Part 2)]