23,126
社区成员
发帖
与我相关
我的任务
分享
客户端: rpc_stat = clnt_broadcast(DEVICE_CORE, DEVICE_CORE_VERSION, NULLPROC,
xdr_void, (char *)NULL, //in params
(xdrproc_t)xdr_wrapstring, (caddr_t) &clnt_res, //ret params
coreresult);
服务器:
static void device_core_1(struct svc_req *rqstp, SVCXPRT *transp)
{
union {
Create_LinkParms create_link_1_arg;
Device_WriteParms device_write_1_arg;
Device_ReadParms device_read_1_arg;
Device_GenericParms device_readstb_1_arg;
Device_GenericParms device_trigger_1_arg;
Device_GenericParms device_clear_1_arg;
Device_GenericParms device_remote_1_arg;
Device_GenericParms device_local_1_arg;
Device_LockParms device_lock_1_arg;
Device_Link device_unlock_1_arg;
Device_EnableSrqParms device_enable_srq_1_arg;
Device_DocmdParms device_docmd_1_arg;
Device_Link destroy_link_1_arg;
Device_RemoteFunc create_intr_chan_1_arg;
} argument;
char *result, corereply[20];
//bool_t (*xdr_argument)(), (*xdr_result)();
xdrproc_t xdr_argument, xdr_result;
char *(*local)(DOTS);
#ifdef MULTITHREAD
DWORD TID = 0;
HANDLE threadHandle = NULL;
struct call_params *params;
#endif
switch (rqstp->rq_proc)
{
case NULLPROC:
//result = lxiInstrAttr[0].DevName;
strcpy(corereply,"Core:CE41 LXI-VXI");
result = corereply;
result[17] = 0;
xdr_result = (xdrproc_t)xdr_wrapstring; //xdr_char; //xdr_void; //xdr_wrapstring;
//printf("\n%s", result);
(void)svc_sendreply(transp, xdr_result, (caddr_t)&result);
//break;
return;
case create_link:
xdr_argument = (xdrproc_t)xdr_Create_LinkParms;
xdr_result = (xdrproc_t)xdr_Create_LinkResp;
local = (char *(*)(DOTS)) create_link_svc_1;
break;
case device_write:
xdr_argument = (xdrproc_t)xdr_Device_WriteParms;
xdr_result = (xdrproc_t)xdr_Device_WriteResp;
local = (char *(*)(DOTS)) device_write_svc_1;
break;
case device_read:
xdr_argument = (xdrproc_t)xdr_Device_ReadParms;
xdr_result = (xdrproc_t)xdr_Device_ReadResp;
local = (char *(*)(DOTS)) device_read_svc_1;
break;
}