XErrorEvent结构字段含义

问题描述 投票:0回答:1

我目前在使用Xlib和CEF时遇到了一些问题,我需要研究发送到XErrorEvent注册的函数的XSetErrorHandler

typedef struct {
    int type;
    Display *display;   /* Display the event was read from */
    XID resourceid;     /* resource id */
    unsigned long serial;   /* serial number of failed request */
    unsigned char error_code;   /* error code of failed request */
    unsigned char request_code; /* Major op-code of failed request */
    unsigned char minor_code;   /* Minor op-code of failed request */
} XErrorEvent;

我想知道typerequest_codeminor_code字段的含义。 There is a book on C language interface for the X window system但是我找不到关于这个领域的任何信息。

c xlib
1个回答
1
投票

type将无类型内存指针标识为指向XErrorEvent的指针 - 其值始终为X_Error

request_codea protocol request of the procedure that failed, as defined in X11/Xproto.h,基本上是什么样的请求产生错误(第2020行和前进):

/* Request codes */

#define X_CreateWindow                  1  
#define X_ChangeWindowAttributes        2   
#define X_GetWindowAttributes           3   
#define X_DestroyWindow                 4
#define X_DestroySubwindows             5   
#define X_ChangeSaveSet                 6
#define X_ReparentWindow                7
#define X_MapWindow                     8
...

minor_code类似于request_code,除了被扩展使用。每个扩展都有自己的request_code,范围为128-255。 minor_code标识该扩展定义的特定请求。因此,X11最多支持127个扩展,每个扩展可以定义多达255个请求。 The exact paragraph:

每个扩展都分配了该范围内的单个操作码,也称为“主操作码”。对于该扩展提供的每个操作,通常将第二个字节用作“次操作码”。每个扩展的次要操作码由延期。

© www.soinside.com 2019 - 2024. All rights reserved.