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

时间:2013-05-22 11:28:46

标签: c++ visual-c++ visual-studio-2012 com odbc

对于 64位Windows odbc版本> 3.0 sqltypes.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的替换typedef是什么?

2 个答案:

答案 0 :(得分:0)

通过COM传递任何类型的HANDLE,无论是HWND还是其他类型的常用技巧是将其转换为long

答案 1 :(得分:0)

在这种特殊情况下,当我使用ATL时,我将SQLHANDLE重新定义为OLE_HANDLE。这启用了客户端和服务器进程之间的透明同步。