替换SQLHANDLE的类型定义,而不是void *

Relacement type defination for SQLHANDLE instead of void *

本文关键字:void SQLHANDLE 类型 定义 替换      更新时间:2023-10-16

对于64位Windowsodbc版本> 3.0sqltypes.h定义SQLHANDLE为

#if defined(WIN32) || defined(_WIN64)
typedef void*                   SQLHANDLE;
#else

如果您需要通过COM

封送该变量
[id(1)] HRESULT SQLAllocHandle([in] SQLSMALLINT HandleType, [in] SQLHANDLE InputHandle, [out] SQLHANDLE* OutputHandle, [out,retval] SQLRETURN* rc);

你会收到一个编译错误

error MIDL2139: type of the parameter cannot derive from void or void *

我在这个场景中可以使用的SQLHANDLE的合适替代类型是什么?

通过COM传递任何类型的HANDLE(无论是HWND还是其他类型)的常用技术是将其强制转换为long

在本例中,由于使用ATL,我将SQLHANDLE重新定义为OLE_HANDLE。这在客户端和服务器进程之间实现了透明的同步。