⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsmpc.cpp

📁 Simple Module Procedure Call for windows & QNx
💻 CPP
字号:
#include <string.h>
#include <smpc/dsmpccli.h>
#include <smpc/dsmpcsrv.h>


DSmpcServer* DSmpc :: GetSrv(dword sid)
{
 for(DSmpcServer* i = (DSmpcServer*)first(); i && i->Sid() != sid; i = (DSmpcServer*)i->next());
 return i;
}

void DSmpc :: PostCall(dword sid, dword proc, int error)
{
 DSmpcServer* s = GetSrv(sid);
 if(s) s->PostCall(proc,error);
}

char* DSmpcClient :: About(char* str, unsigned len)
{
 DSmpcParam rp = {str,len};
 if(Call(Smpc_Proc_About,0,0,&rp,1) == Smpc_Err_Type)
 { SmpcSet(&rp,str,len); Call(Smpc_Proc_About,0,0,&rp,1); }
 if(Error() != Smpc_Success) return 0;
 if(!rp.size && len) str[0] = 0;
 return str;
}

dword DSmpcServer :: Sid(dword _sid)
{
 DSmpc* smpc = Smpc();
 unlink();
 sid = _sid;
 if(smpc) smpc->add(this);
 return sid;
}

int DSmpcServer :: Cb_About(void*, dword, void* rd, dword& rcv)
{
 if(!rcv) return Smpc_Err_OutSize;
 if(!About()) { rcv = 0; return Smpc_Success; }
 dword len = strlen(About()) + 1;
 if(len > rcv) len = rcv;
 memcpy(rd,About(),len - 1); ((char*)rd)[len - 1] = 0;
 rcv = len;
 return Smpc_Success;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -