zoukankan      html  css  js  c++  java
  • MiniGUI

    MiniGUI-Processes 采用 UNIX Domain Socket 实现客户程序和服务器程序之间的交互
    Processes版本是支持客户服务器(C/S)方式的多进程系统,在运行过程中有且仅有一个服务器程序在运行,它的全局变量 mgServer被设为TRUE,其余的MiniGUI应用程序为客户,mgServer变量被设为FALSE。
     

    struct _REQUEST

    {
        int id;
        const void* data;
        size_t len_data;
    }
    发送给MiniGUI-Lite服务器的请求
     
    int ClientRequest (PREQUEST request, void* result, int len_rslt);
    客户在初始化 REQUEST 结构之后,就可以调用 ClientRequest向服务器发送请求,并等待服务器的应答。
     
    int GUIAPI ServerSendReply (int clifd, const void* reply, int len);
    服务器程序(即 mginit)会在自己的消息循环当中获得来自客户的请求,并进行处理,最终会将处理结果发送给客户。服务器能够调用 ServerSendReply将结果发送给客户。
     
     
    MiniGUI -Processes 利用上述这种简单的通讯方法,实现了若干系统级的通讯任务:
    • 鼠标光标的管理。鼠标光标是一个全局资源,当客户需要创建或者销毁鼠标光标,改变鼠标光标的形状、位置,显 示或者隐藏鼠标时,就发送请求到服务器,服务器程序完成相应任务并将结果发送给客户。 
    • 层管理。当客户查询层的信息,新建层,加入某个已有层,或者删除层时,通过该接口发送请求到服务器。 
    • 窗口管理。当客户创建、销毁或者移动主窗口时,通过该接口发送请求到服务器。 
    • 其他一些系统级的任务。比如在新的 GDI 接口中,服务器程序统一管理显示卡中可能用来建立内存 DC 的显示内 存,当客户要申请建立在显示内存中的内存 DC 时,就会发送请求到服务器。
    定制的请求处理函数
    #define MAX_SYS_REQID     0x0014
    #define MAX_REQID             0x0020
    MAX_REQID 是能够注册的最大请求 ID 号,而 MAX_SYS_REQID 是系统内部使用的最大的请求 ID 号,也就是说,通过RegisterRequestHandler 注册的请求 ID 号,必须大于 MAX_SYS_REQID 而小于或等于 MAX_REQID。

    typedef int (* REQ_HANDLER) (int cli, int clifd, void* buff, size_t len);
    BOOL GUIAPI RegisterRequestHandler (int req_id, REQ_HANDLER your_handler);
    REQ_HANDLER GUIAPI GetRequestHandler (int req_id);
     
     
     
     
     
     
  • 相关阅读:
    java NIO的基本用法
    BufferedReader源码分析
    FileInputStream读中文乱码问题
    Java使用IO流对同一个文件进行读写操作
    php表格--大数据处理
    tp5--模型关联
    tp5 -- join注意事项
    表单外部提交
    网站防止sql注入
    微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]
  • 原文地址:https://www.cnblogs.com/paullam/p/3613567.html
Copyright © 2011-2022 走看看