REQUEST *Request; /* Request structure */
REPLY *Reply; /* Reply structure ptr */
:
CASE WMP_SENDREQUEST:
rc = DosAllocShrMem(&Request, /* Allocate memory obj */
NULL, /* Anonymous memory obj */
sizeof(REQUEST), /* Size of memory obj */
OBJ_GIVEABLE, /* Object is giveable */
PAG_WRITE | /* Allow write access */
PAG_READ | /* Allow read access */
PAG_COMMIT); /* Commit storage now */
rc = DosGiveSharedMem(Request, /* Give access to object */
pidServer, /* Process to get access */
PAG_WRITE | /* Write access allowed */
PAG_READ); /* Read access allowed */
rc = DosAllocShrMem(&Reply, /* Allocate memory obj */
NULL, /* Anonymous memory obj */
sizeof(REPLY), /* Size of memory obj */
OBJ_GIVEABLE, /* Object is giveable */
PAG_WRITE | /* Allow write access */
PAG_READ | /* Allow read access */
PAG_COMMIT); /* Commit storage now */
rc = DosGiveSharedMem(Reply, /* Give access to object */
pidServer, /* Process to get access */
PAG_WRITE | /* Write access allowed */
PAG_READ); /* Read access allowed */
Request->hRequester = hWnd; /* Set requester handle */
<Initialize other Request structure fields>
WinPostMsg(hServer, /* Post msg to server */
WMP_DOREQUEST, /* DO_REQUEST message */
(MPARAM)Request, /* Ptr to request object */
(MPARAM)Reply); /* Ptr to reply object */
DosFreeMem(Request); /* Release request obj */
break;
:
case WMP_REQUESTCOMPLETE:
Reply=(PVOID)mp1;
<Copy contents of Reply to private memory>
DosFreeMem(Reply); /* Release reply object */
break;
This example shows a "requester" window procedure issuing requests and receiving replies by way of Presentation Manager messages.