• FreeRdp(一):主要数据结构


        /** RDP连接实例
         *  这是创建连接后的客户端选项
       * 数据结构申请内存调用freerdp_new,释放为freerdp_free
    */ struct rdp_freerdp { ALIGN64 rdpContext* context; /**< (offset 0) 一个指向rdpContext的结构. 客户端应用可以注册大于rdpContext结构的字段,
                 这里允许客户端使用附加的消息。
                    当使用这个模块的时候, client application should ALWAYS declare their structure with the rdpContext field first, and any additional content following it. Can be allocated by a call to freerdp_context_new(). Must be deallocated by a call to freerdp_context_free() before deallocating the current instance.
    */ ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints; UINT64 paddingA[16 - 2]; /* 2 */ ALIGN64 rdpInput* input; /* (offset 16) Input handle for the connection. Will be initialized by a call to freerdp_context_new() */ ALIGN64 rdpUpdate* update; /* (offset 17) Update display parameters. Used to register display events callbacks and settings. Will be initialized by a call to freerdp_context_new() */ ALIGN64 rdpSettings* settings; /**< (offset 18) Pointer to a rdpSettings structure. Will be used to maintain the required RDP settings. Will be initialized by a call to freerdp_context_new() */ ALIGN64 rdpAutoDetect* autodetect; /* (offset 19) Auto-Detect handle for the connection. Will be initialized by a call to freerdp_context_new() */ UINT64 paddingB[32 - 20]; /* 20 */ ALIGN64 size_t ContextSize; /* (offset 32) Specifies the size of the 'context' field. freerdp_context_new() will use this size to allocate the context buffer. freerdp_new() sets it to sizeof(rdpContext). If modifying it, there should always be a minimum of sizeof(rdpContext), as the freerdp library will assume it can use the 'context' field to set the required informations in it. Clients will typically make it bigger, and use a context structure embedding the rdpContext, and adding additional information after that. */ ALIGN64 pContextNew ContextNew; /**< (offset 33) Callback for context allocation Can be set before calling freerdp_context_new() to have it executed after allocation and initialization. Must be set to NULL if not needed. */ ALIGN64 pContextFree ContextFree; /**< (offset 34) Callback for context deallocation Can be set before calling freerdp_context_free() to have it executed before deallocation. Must be set to NULL if not needed. */ UINT64 paddingC[47 - 35]; /* 35 */ ALIGN64 UINT ConnectionCallbackState; /* 47 */ ALIGN64 pPreConnect PreConnect; /**< (offset 48) Callback for pre-connect operations. Can be set before calling freerdp_connect() to have it executed before the actual connection happens. Must be set to NULL if not needed. */ ALIGN64 pPostConnect PostConnect; /**< (offset 49) Callback for post-connect operations. Can be set before calling freerdp_connect() to have it executed after the actual connection has succeeded. Must be set to NULL if not needed. */ ALIGN64 pAuthenticate Authenticate; /**< (offset 50) Callback for authentication. It is used to get the username/password when it was not provided at connection time. */ ALIGN64 pVerifyCertificate VerifyCertificate; /**< (offset 51) Callback for certificate validation. Used to verify that an unknown certificate is trusted. DEPRECATED: Use VerifyChangedCertificateEx*/ ALIGN64 pVerifyChangedCertificate VerifyChangedCertificate; /**< (offset 52) Callback for changed certificate validation. Used when a certificate differs from stored fingerprint. DEPRECATED: Use VerifyChangedCertificateEx */ ALIGN64 pVerifyX509Certificate VerifyX509Certificate; /**< (offset 53) Callback for X509 certificate verification (PEM format) */ ALIGN64 pLogonErrorInfo LogonErrorInfo; /**< (offset 54) Callback for logon error info, important for logon system messages with RemoteApp */ ALIGN64 pPostDisconnect PostDisconnect; /**< (offset 55) Callback for cleaning up resources allocated by connect callbacks. */ ALIGN64 pAuthenticate GatewayAuthenticate; /**< (offset 56) Callback for gateway authentication. It is used to get the username/password when it was not provided at connection time. */ ALIGN64 pPresentGatewayMessage PresentGatewayMessage; /**< (offset 57) Callback for gateway consent messages. It is used to present consent messages to the user. */ UINT64 paddingD[64 - 58]; /* 58 */ ALIGN64 pSendChannelData SendChannelData; /* (offset 64) Callback for sending data to a channel. By default, it is set by freerdp_new() to freerdp_send_channel_data(), which eventually calls freerdp_channel_send() */ ALIGN64 pReceiveChannelData ReceiveChannelData; /* (offset 65) Callback for receiving data from a channel. This is called by freerdp_channel_process() (if not NULL). Clients will typically use a function that calls freerdp_channels_data() to perform the needed tasks. */ ALIGN64 pVerifyCertificateEx VerifyCertificateEx; /**< (offset 66) Callback for certificate validation. Used to verify that an unknown certificate is trusted. */ ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx; /**< (offset 67) Callback for changed certificate validation. Used when a certificate differs from stored fingerprint. */ UINT64 paddingE[80 - 68]; /* 68 */ };
        struct rdp_context
        {
            ALIGN64 freerdp* instance;  /**< (offset 0)
                                   Pointer to a rdp_freerdp structure.
                                   This is a back-link to retrieve the freerdp instance from the context.
                                   It is set by the freerdp_context_new() function */
            ALIGN64 freerdp_peer* peer; /**< (offset 1)
                                   Pointer to the client peer.
                                   This is set by a call to freerdp_peer_context_new() during peer
                                   initialization. This field is used only on the server side. */
            ALIGN64 BOOL ServerMode;    /**< (offset 2) true when context is in server mode */
    
            ALIGN64 UINT32 LastError; /* 3 */
    
            UINT64 paddingA[16 - 4]; /* 4 */
            
            ALIGN64 int argc;    /**< (offset 16)
                            Number of arguments given to the program at launch time.
                            Used to keep this data available and used later on, typically just before
                            connection initialization.
                            @see freerdp_parse_args() */
            ALIGN64 char** argv; /**< (offset 17)
                            List of arguments given to the program at launch time.
                            Used to keep this data available and used later on, typically just before
                            connection initialization.
                            @see freerdp_parse_args() */
    
            ALIGN64 wPubSub* pubSub; /* (offset 18) */
    
            ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
            ALIGN64 UINT channelErrorNum;     /*(offset 20)*/
            ALIGN64 char* errorDescription;   /*(offset 21)*/
    
            UINT64 paddingB[32 - 22]; /* 22 */
    
            ALIGN64 rdpRdp*
                rdp;                           /**< (offset 32)
                                          Pointer to a rdp_rdp structure used to keep the connection's parameters.
                                          It is allocated by freerdp_context_new() and deallocated by
                                          freerdp_context_free(), at the same              time that this rdp_context
                                          structure -              there is no need to specifically allocate/deallocate this. */
            ALIGN64 rdpGdi* gdi;               /**< (offset 33)
                                          Pointer to a rdp_gdi structure used to keep the gdi settings.
                                          It is allocated by gdi_init() and deallocated by gdi_free().
                                          It must be deallocated before deallocating this rdp_context structure. */
            ALIGN64 rdpRail* rail;             /* 34 */
            ALIGN64 rdpCache* cache;           /* 35 */
            ALIGN64 rdpChannels* channels;     /* 36 */
            ALIGN64 rdpGraphics* graphics;     /* 37 */
            ALIGN64 rdpInput* input;           /* 38 */
            ALIGN64 rdpUpdate* update;         /* 39 */
            ALIGN64 rdpSettings* settings;     /* 40 */
            ALIGN64 rdpMetrics* metrics;       /* 41 */
            ALIGN64 rdpCodecs* codecs;         /* 42 */
            ALIGN64 rdpAutoDetect* autodetect; /* 43 */
            ALIGN64 HANDLE abortEvent;         /* 44 */
            ALIGN64 int disconnectUltimatum;   /* 45 */
            UINT64 paddingC[64 - 46];          /* 46 */
    
            UINT64 paddingD[96 - 64];  /* 64 */
            UINT64 paddingE[128 - 96]; /* 96 */
        };
    client
  • 相关阅读:
    Problem about objc_exception_throw
    Change mime Types for mac's default apache
    重启Mac上的Apache服务
    通过无线网安装自己打包的ipa文件
    How to cancel selection for TreePanel(GXT)
    使用Jsoup获取网页内容超时设置
    HTML Meta, http-equiv, Refresh
    线上redis服务内存异常分析。
    C++/CLI 本地字符串和托管字符串之间的转换
    DWF Toolkit on Microsoft Windows
  • 原文地址:https://www.cnblogs.com/Ansing/p/16338109.html
Copyright © 2020-2023  润新知