#define SRVQUEUENAME = "\\QUEUES\\SRV_QUEUE" /* Server queue name */
#define REQQUEUENAME = "\\QUEUES\\REQ_QUEUE" /* Requester queue name */
HQUEUE hReqQueue, hSrvQueue; /* Queue handles */
REQUESTDATA Server; /* Control information */
REQUEST *Request; /* Request data buffer */
REPLY *Reply; /* Reply data buffer */
BYTE Priority; /* Priority information */
ULONG ulBytes; /* Bytes read/written */
APIRET rc; /* Return code */
case WMP_SENDREQUEST:
rc = DosCreateQueue(&hReqQueue, /* Create req queue */
QUE_FIFO | /* First-in, first-out */
QUE_CONVERT_ADDRESS, /* Convert addresses */
REQQUEUENAME); /* Name of queue */
rc = DosOpenQueue(&pidServer, /* Open srv queue */
&hSrvQueue, /* Queue handle */
SRVQUEUENAME); /* Server queue name */
rc = DosAllocSharedMem(&Request, /* Allocate shared mem */
NULL, /* object for request */
sizeof(REQUEST), /* Size of memory object */
PAG_WRITE | /* Allow write access */
PAG_READ | /* Allow read access */
PAG_COMMIT); /* Commit storage now */
rc = DosGiveSharedMem(Request, /* Give mem to server */
pidServer, /* Server process id */
PAG_READ); /* Allow read only */
rc = DosWriteQueue(hSrvQueue, /* Add request to queue */
(ULONG)hWnd, /* Requester win handle */
sizeof(REQUEST), /* Size of request */
Request, /* Request buffer */
0); /* No priority */
rc = DosCloseQueue(hSrvQueue); /* Close srv queue */
DosFreeMem(Request); /* Free request buffer */
break;
This example shows elements being added to a queue by a "requester" process.