Win32 API:DdeDisconnect 函数(Ddeml.h)
DdeDisconnect 函数是 Dynamic Data Exchange(DDE)管理库中的一个函数,用于断开与指定的 DDE 通道相关联的连接。以下是该函数的基本信息:BOOL DdeDisconnect( _In_ HCONV hConv);参数说明: hConv:要断开连接的 DDE 通道的句柄。函数返回一个 BOOL 类型的值,表示操作是否成功。如果成功,返回值为 TRUE,否则为 FALSE。在 DDE 中,通道(Conversation,简称 Conv)是两个应用程序之间进行通信的一种方式。DdeDisconnect 用于断开与指定的 DDE 通道相关联的连接。断开连接后,两个应用程序将无法通过该通道进行数据交换。请注意,DDE 是一个相对较旧的技术,随着时间的推移,更现代的通信机制如 COM 和 RPC 变得更为常见。如果可能的话,推荐使用更新的技术。
Win32 API:DdeCreateStringHandleA 函数(Ddeml.h)
DdeCreateStringHandleA 函数是 Dynamic Data Exchange(DDE)管理库中的一个函数,用于创建一个字符串句柄,以便在 DDE 通信中标识字符串。以下是该函数的基本信息:HSZ DdeCreateStringHandleA( _In_ DWORD idInst, _In_ LPCSTR psz, _In_ int iCodePage);参数说明: idInst:DDE 实例的标识符,用于标识 DDE 管理库的实例。 psz:指向以 null 结尾的 ANSI 字符串的指针,表示要创建句柄的字符串。 iCodePage:指定字符串的代码页。函数返回一个 HSZ 类型的句柄,表示创建的字符串句柄。如果函数失败,返回值为 NULL。这个函数用于将字符串转换为 DDE 使用的字符串句柄。在 DDE 中,字符串句柄用于标识字符串,而不是直接使用字符串内容,这有助于提高效率和减少资源占用。iCodePage 参数指定了字符串的代码页,以确保正确地处理字符串中的字符。请注意,DDE 是一个相对较旧的技术,随着时间的推移,更现代的通信机制如 COM 和...
Win32 API:DdeCreateDataHandle 函数(Ddeml.h)
DdeCreateDataHandle 函数是 Dynamic Data Exchange(DDE)管理库中的一个函数,用于创建一个包含数据的 DDE 数据句柄。以下是该函数的基本信息:HDDEDATA DdeCreateDataHandle( _In_ DWORD idInst, _In_ LPBYTE pSrc, _In_ DWORD cb, _In_ DWORD cbOff, _In_opt_ HSZ hszItem, _In_ UINT wFmt, _In_ UINT afCmd);参数说明: idInst:DDE 实例的标识符,用于标识 DDE 管理库的实例。 pSrc:指向包含要复制的数据的缓冲区的指针。 cb:指定从 pSrc 缓冲区中复制的数据的大小(以字节为单位)。 cbOff:指定从 pSrc 缓冲区中的偏移量开始的位置。 hszItem:标识与数据句柄关联的数据项的字符串句柄。 wFmt:指定数据的格式。 afCmd:指定数据的标志。函数返回一个 HDDEDATA 类型的句柄,表示创建的 DDE 数据句柄。如果函数失败,返回值为 NULL。该函数用于...
Win32 API:DdeConnect 函数(Ddeml.h)
DdeConnect 函数是 Dynamic Data Exchange(DDE)管理库中的一个函数,用于建立与另一个应用程序的 DDE 通道。以下是该函数的基本信息:HCONV DdeConnect( _In_ DWORD idInst, _In_ HSZ hszService, _In_ HSZ hszTopic, _In_opt_ PCONVCONTEXT pCC);参数说明: idInst:DDE 实例的标识符,用于标识 DDE 管理库的实例。 hszService:标识 DDE 服务的字符串句柄。 hszTopic:标识 DDE 主题的字符串句柄。 pCC:指向 CONVCONTEXT 结构的指针,该结构定义了通信的上下文信息。可以为 NULL,表示使用默认的通信上下文。函数返回一个 HCONV 类型的句柄,表示建立的 DDE 通道。如果函数失败,返回值为 NULL。在 DDE 中,通道(Conversation,简称 Conv)是两个应用程序之间进行通信的一种方式。DdeConnect 用于建立这样的通道,使得两个应用程序可以...
Win32 API:DdeCmpStringHandles 函数(Ddeml.h)
DdeCmpStringHandles 函数是 Dynamic Data Exchange(DDE)管理库中的一个函数,用于比较两个字符串句柄的内容是否相等。以下是该函数的基本信息:int DdeCmpStringHandles( _In_ HSZ hsz1, _In_ HSZ hsz2);参数说明: hsz1:要比较的第一个字符串句柄。 hsz2:要比较的第二个字符串句柄。函数返回一个整数,表示比较的结果: 如果 hsz1 等于 hsz2,返回值为零。 如果 hsz1 小于 hsz2,返回值为负数。 如果 hsz1 大于 hsz2,返回值为正数。这个函数通常用于在 DDE 交互中检查两个字符串是否相等。DDE 使用字符串句柄来标识字符串,而不是直接使用字符串内容。这种设计有助于提高效率和减少资源占用。
Win32 API:DdeClientTransaction 函数(Ddeml.h)
DdeClientTransaction 函数是 Windows 操作系统中的一个函数,属于 Dynamic Data Exchange(DDE)管理库。DDE 是一种用于在 Windows 应用程序之间共享数据的机制。以下是 DdeClientTransaction 函数的一些基本信息:HDDEDATA DdeClientTransaction( _In_ LPBYTE pData, _In_ DWORD cbData, _In_ HCONV hConv, _In_ HSZ hszItem, _In_ UINT wFmt, _In_ UINT wType, _In_ DWORD dwTimeout, _Out_opt_ LPDWORD pdwResult);参数说明: pData:指向包含传输数据的缓冲区的指针。 cbData:传输数据的大小(以字节为单位)。 hConv:标识与事务相关的会话的句柄。 hszItem:标识与事务相关的数据项的字符串句柄。 wFmt:指定数据格式的标识符。 wType:指定事务的类型。 dwTimeout:事务的超时值(以毫秒为单位)。...
Win32 API:DdeAccessData 函数(Ddeml.h)
DdeAccessData 函数是 DDEML(Dynamic Data Exchange Management Library)中的函数,用于获取与指定 DDEML 数据句柄相关联的内存的指针。以下是该函数的声明:LPBYTE DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize);函数参数的含义如下: hData: DDEML 数据句柄。 pcbDataSize: 指向 DWORD 类型的指针,用于接收数据大小。函数返回值为 LPBYTE,指向与 hData 关联的数据的指针。如果函数调用失败,返回值为 NULL。DdeAccessData 函数用于获取 DDEML 数据句柄关联的数据,并返回指向该数据的指针。调用者可以使用这个指针直接访问数据。通过 pcbDataSize 参数返回数据的大小。在使用完数据后,应用程序应该调用 DdeUnaccessData 函数来释放对数据的访问。请注意,DDEML 是一种相对较旧的进程间通信(IPC)机制,现在更常见的是使用更先进的 IPC 技术,如 COM(Component Object ...
Win32 API:DdeAbandonTransaction 函数(Ddeml.h)
DdeAbandonTransaction 函数是 DDEML(Dynamic Data Exchange Management Library)中的函数,用于放弃一个 DDEML 事务,同时取消该事务的等待。以下是该函数的声明:BOOL DdeAbandonTransaction( DWORD idInst, HCONV hConv, DWORD idTransaction);函数参数的含义如下: idInst: DDEML 实例的标识符。 hConv: DDEML 会话的句柄。 idTransaction: 要放弃的 DDEML 事务的标识符。函数返回值为 BOOL,表示函数是否执行成功。DdeAbandonTransaction 函数通常在发生错误或不再需要进行的 DDEML 事务时调用。它会释放相关的资源并取消等待中的事务。请注意,DDEML 是一种相对较旧的进程间通信(IPC)机制,现在更常见的是使用更先进的 IPC 技术,如 COM(Component Object Model)、RPC(Remote Procedure Call)等。在现代 Windows 应用程序...
Win32 API:DDEPOKE 结构(Dde.h)
在 DDEML(Dynamic Data Exchange Management Library)中,DDEPOKE 结构用于表示 DDEML 的数据传递方式之一,即通过 XTYP_POKE 事务传递的数据。以下是该结构的定义:typedef struct { UINT_PTR cfFormat; UINT_PTR reserved; HANDLE hData; DWORD fRelease; UINT_PTR reserved2; CONVCONTEXT cc;} DDEPOKE;结构成员的含义如下: cfFormat: 表示 DDEML 事务的数据格式。 reserved: 保留字段,必须为零。 hData: 表示 DDEML 事务的数据句柄。 fRelease: 指示是否释放数据。 reserved2: 保留字段,必须为零。 cc: 表示 DDEML 事务的 conversation context。DDEPOKE 结构通常用于 DdeCallback 回调函数中,用于处理 DDEML 的 XTYP_POKE 事务,这个事务用于向服务端的某个 item ...
Win32 API:DDEDATA 结构(Dde.h)
在 DDEML(Dynamic Data Exchange Management Library)中,DDEDATA 结构实际上是一个伪结构,其定义取决于数据的类型。DDEML 不提供一个名为 DDEDATA 的独立结构。DDEML 支持多种数据格式,包括文本、位图、以及自定义的数据格式。对于文本数据,可以使用 DDEACK 或 DDEADVISE 结构中的 DDE_DATA 成员来传递;对于其他数据类型,可以使用 HDDEDATA 句柄。以下是一个例子,展示了如何使用 DDEACK 结构的 DDE_DATA 成员来传递文本数据:DDEACK ddeAck;ddeAck.bAppReturnCode = APP_OK;ddeAck.reserved = 0;ddeAck.wCmd = XTYP_ADVREQ;ddeAck.dwData = 0; // or your specific dataddeAck.hResult = (HDDEDATA)DdeCreateDataHandle( idInst, // Instance ident...
Win32 API:DDEADVISE 结构(Dde.h)
DDEADVISE 结构是在 DDEML(Dynamic Data Exchange Management Library)中定义的结构,用于表示 DDE 通知(Advise)事务的参数。以下是该结构的定义:typedef struct { UINT_PTR reserved; UINT_PTR cfFormat; HCONV hConv; HSZ hszItem; UINT wFormat; BOOL fAckReq; BOOL fDeferUpd; BOOL fAck; BOOL rgb;} DDEADVISE;结构成员的含义如下: reserved: 保留字段,必须为零。 cfFormat: 表示 DDEML 通知事务的数据格式。 hConv: 表示 DDEML 通知事务所属的 conversation(会话)的句柄。 hszItem: 表示 DDEML 通知事务的 item 字符串的句柄。 wFormat: 表示 DDEML 通知事务的数据格式。 fAckReq: 表示是否需要 Ackn...
Win32 API:DDEACK 结构(Dde.h)
DDEACK 结构是在 DDEML(Dynamic Data Exchange Management Library)中定义的结构,用于在 DDE 事务中回应一个 DDE 请求。以下是该结构的定义:typedef struct { BYTE bAppReturnCode; BYTE reserved; WORD wCmd; UINT_PTR dwData; HDDEDATA hResult;} DDEACK;结构成员的含义如下: bAppReturnCode: 表示 DDEML 事务的应用程序返回码。 reserved: 保留字段,必须为零。 wCmd: 表示 DDEML 事务的命令标识符。 dwData: 表示 DDEML 事务的数据标识符。 hResult: 表示 DDEML 事务的处理结果。DDEACK 结构通常用于 DdeCallback 回调函数中,用于回应 DDE 事务。在处理 DDE 请求时,应用程序可以根据需要设置 DDEACK 结构的各个成员,以指示事务的处理结果和相关信息。请注意,DDEML 是一种相对较旧的进程间通信(IPC)机制,现在更常见的是...
Win32 API:UnpackDDElParam 函数(Dde.h)
UnpackDDElParam 函数是 DDEML(Dynamic Data Exchange Management Library)中的函数,用于从 LPARAM 中解包 DDEML 事务的参数。以下是函数的声明:BOOL UnpackDDElParam( UINT_PTR msg, LPARAM lParam, PUINT_PTR puiLo, PUINT_PTR puiHi);函数的参数如下: msg: DDEML 事务的消息标识符。 lParam: 包含 DDEML 事务参数的 LPARAM 值。 puiLo: 用于接收低位 unsigned int 类型的指针。 puiHi: 用于接收高位 unsigned int 类型的指针。该函数将 lParam 中的 DDEML 事务参数解包,并将结果存储在 puiLo 和 puiHi 指向的位置。这样,您可以从 lParam 中提取 DDEML 事务的相关信息。请注意,DDEML 是一种相对较旧的进程间通信(IPC)机制,现在更常见的是使用更先进的 IPC 技术,如 COM(Component Object Model)、...
Win32 API:PackDDElParam 函数(Dde.h)
PackDDElParam 函数是 DDEML(Dynamic Data Exchange Management Library)中定义的函数,用于将 DDEML 事务的参数打包为 LPARAM,以便传递给其他 DDEML 函数或发送给 DDEML 回调函数。以下是函数的声明:LPARAM PackDDElParam( UINT_PTR msg, UINT_PTR uiLo, UINT_PTR uiHi);函数的参数如下: msg: DDEML 事务的消息标识符。 uiLo: 低位的 unsigned int 类型的值。 uiHi: 高位的 unsigned int 类型的值。函数将这三个参数组合成一个 LPARAM 值,可以用于传递给 PostMessage、SendMessage 等函数,或者用于调用其他 DDEML 函数。请注意,DDEML 是一种相对较旧的进程间通信(IPC)机制,现在更常见的是使用更先进的 IPC 技术,如 COM(Component Object Model)、RPC(Remote Procedure Call)等。在现代 Windows 应用程序中,...
Win32 API:ImpersonateDdeClientWindow 函数(Dde.h)
ImpersonateDdeClientWindow 函数是在 DDEML(Dynamic Data Exchange Management Library)中定义的一个函数,而不是标准的 Win32 API 函数。它用于允许调用线程模拟 DDE 客户端的安全上下文。以下是函数的声明:HDDEDATA ImpersonateDdeClientWindow( HWND hWndClient, HWND hWndServer, UINT wMsg, WPARAM wParam, LPARAM lParam, PFNCALLBACK pfnCallback, DWORD_PTR dwCallbackData);函数的作用是使当前线程能够模拟 DDE 客户端的安全上下文,以便在 DDE 事务期间安全地调用 DDEML 回调函数。这允许 DDEML 在回调期间使用与 DDE 客户端相同的权限。请注意,DDE(Dynamic Data Exchange)是一种早期的、在 Windows 操作系统中用于进程间通信的机制。随着时间的推移,DDE 被更现代和强大的 IPC(Inter-Pr...
Win32 API:COMPOSITION_FRAME_ID_TYPE 枚举(Dcomptypes.h)
在 Win32 API 中,COMPOSITION_FRAME_ID_TYPE 是一个枚举类型,它定义了桌面复合引擎中帧 ID 的类型。这个枚举用于表示帧 ID 的数据类型。以下是 COMPOSITION_FRAME_ID_TYPE 枚举的定义:typedef enum COMPOSITION_FRAME_ID_TYPE { COMPOSITION_FRAME_ID_ID, COMPOSITION_FRAME_ID_TIME, COMPOSITION_FRAME_ID_NUMBER, COMPOSITION_FRAME_ID_CURRENT_NOW, COMPOSITION_FRAME_ID_TARGET_NOW, COMPOSITION_FRAME_ID_SYSTEM_TIME} COMPOSITION_FRAME_ID_TYPE;枚举成员的含义如下: COMPOSITION_FRAME_ID_ID: 表示帧 ID 是一个标识符。 COMPOSITION_FRAME_ID_TIME: 表示帧 ID 是一个时间戳。 COMPOSITION_FRAME_ID_NUMBER: ...
Win32 API:DCOMPOSITION_FRAME_STATISTICS 结构(Dcomptypes.h)
DCOMPOSITION_FRAME_STATISTICS 结构是 Windows 桌面复合引擎 (DComposition) 提供的一个结构体,用于获取有关桌面复合的帧统计信息。以下是该结构的定义:typedef struct DCOMPOSITION_FRAME_STATISTICS { UINT32 lastFrameTime; UINT32 currentCompositionRate; LARGE_INTEGER currentTime; LARGE_INTEGER timeFrequency; LARGE_INTEGER nextEstimatedFrameTime; LARGE_INTEGER timePadding[8];} DCOMPOSITION_FRAME_STATISTICS;结构成员的含义如下: lastFrameTime: 上一帧的时间戳。 currentCompositionRate: 当前桌面复合的速率。 currentTime: 当前时间戳。 timeFrequency: 时间频率。 nextEstima...
Win32 API:COMPOSITION_TARGET_ID 结构(Dcomptypes.h)
COMPOSITION_TARGET_ID 结构是 Windows 桌面复合引擎 (DComposition) 中的一部分,用于标识一个合成目标 (composition target)。该结构定义如下:typedef struct COMPOSITION_TARGET_ID { ULONGLONG value;} COMPOSITION_TARGET_ID;其中,ULONGLONG 是无符号 64 位整数类型。COMPOSITION_TARGET_ID 结构只包含一个成员 value,用于保存合成目标的唯一标识符。在 DComposition 中,合成目标是一个用于合成和呈现图形内容的区域。COMPOSITION_TARGET_ID 主要用于在 API 调用中标识特定的合成目标。请注意,使用这些结构需要了解 Windows 桌面复合引擎和相关的编程环境。在使用这些结构时,你可能需要参考相关的文档和头文件,以确保正确的使用和理解。
Win32 API:COMPOSITION_FRAME_STATS 结构(Dcomptypes.h)
COMPOSITION_FRAME_STATS 结构体是在 DirectComposition API 中的 Dcomptypes.h 头文件中定义的,用于描述有关渲染帧统计信息的结构。以下是该结构体的定义:typedef struct COMPOSITION_FRAME_STATS { UINT32 nSurfaceUpdates; UINT32 nAdditionalSurfaceUpdates; UINT32 nBufferSwaps; UINT32 nRetries; UINT32 nDuration;} COMPOSITION_FRAME_STATS;这个结构体包含以下字段: nSurfaceUpdates: 表示在帧期间的表面更新次数。 nAdditionalSurfaceUpdates: 表示在帧期间的额外表面更新次数。 nBufferSwaps: 表示在帧期间的缓冲区交换次数。 nRetries: 表示在帧期间的渲染重试次数。 nDuration: 表示帧的持续时间(以微秒为单位)。这些信息对于监控和优化渲染性能非常有用。可以通过在使用 DirectCompo...
Win32 API:IDCompositionVisualDebug 接口(Dcomp.h)
IDCompositionVisualDebug 接口是 Windows API 中 DirectComposition 组件的一部分,用于支持可视化调试。这个接口通常用于获取有关 IDCompositionVisual 对象的调试信息,如图层的屏幕位置、尺寸等。以下是一个简单的示例代码,展示如何使用 IDCompositionVisualDebug 接口:#include <Windows.h>#include <dcomp.h>int main() { // 初始化 COM CoInitialize(NULL); // 创建 DirectComposition 设备对象 IDCompositionDevice* dcompDevice; DCompositionCreateDevice(NULL, IID_PPV_ARGS(&dcompDevice)); // 创建 Visual 对象 IDCompositionVisual* visual; dcompDevice->CreateVisual(&...