Win32 API函数定义是否以"数据库" / XML格式提供?
时间:2020-03-06 14:32:07 来源:igfitidea点击:
我正在寻找某种"数据库" / XML格式的win32 API列表。
我需要它来轻松地在win32 API和我正在使用的高级语言(港口/ xharbour)之间创建一个"转换层"。由于此程序运行Pcode,因此有必要将参数转换为C标准。
我不想执行手动代码编写,而是要自动执行该过程...
仅以Windows API定义为例(取自MSDN)
DWORD WINAPI GetSysColor( __in int nIndex );
应该转变成
HB_FUNC( GETSYSCOLOR ) { hb_retnl( (LONG) GetSysColor( hb_parni( 1 ) ) ); }
解决方案
关于我所知道的最接近的信息是:http://pinvoke.net/
也许他们会与我们共享他们的数据?
他们有一个VS工具可以访问此数据,因此它可能是一个Web服务。我们甚至可以嗅出这一点。
AFAIK,pinvoke.net仅使用呼叫的PInvoke定义存储文本数据。如果我们想要将其用作预先解析的API数据库,则不是很有用。
可能我们可以创建一个小的解析器,该解析器将包含文件并将其转换为所需的文件。在这种情况下,我建议使用lcc-win32的包含文件,因为它们是SDK标头的几乎无脂肪/无BS版本(它们不需要附带很多特殊的保留字)忽略等等)
当然,我们具有Microsoft Platform SDK,但是它在原始.h C代码中,因此很难解析!
VB用户(以及Delphi用户,可能还使用某些其他语言)已经完成了类似的工作,例如ApiViewer拥有这样的数据库,但是具有某些专有的二进制格式(.apv扩展名),因此我们可能必须对其进行反向工程。
同样,有一个API指南,该指南托管在Allapi.net上,但后者似乎现在是一个停车站点。它使用了.api文件(同样是二进制专有文件)。