如何从较新的SDK中使用WINAPI,但仍使用WindowsMo​​bile中的旧SDK

时间:2010-04-19 06:44:20

标签: windows winapi dll windows-mobile evc4

具体来说,我想使用点对点消息队列,但因为我仍然在eVC ++ 4中使用遗留代码,它只支持PocketPC 2003SE SDK,我在标题中找不到CreateMsgQueue和朋友( VisualStudio的新端口仍在进行中。

我使用Message Queue与使用WM-6.5-DTK(VS2005)开发的应用程序进行IPC。

更新
我使用以下代码(取自msgqueue.h)来存储函数指针,并分别使用CoreDLL.dllGetProcAddress()加载LoadLibrary()

HANDLE /*WINAPI*/ (*CreateMsgQueue)(LPCWSTR lpName, LPMSGQUEUEOPTIONS lpOptions);
HANDLE /*WINAPI*/ (*OpenMsgQueue)(HANDLE hSrcProc, HANDLE hMsgQ
                  , LPMSGQUEUEOPTIONS lpOptions);
BOOL /*WINAPI*/ (*ReadMsgQueue)(HANDLE hMsgQ,
     /*__out_bcount(cbBufferSize)*/ LPVOID lpBuffer, DWORD cbBufferSize,
                LPDWORD lpNumberOfBytesRead, DWORD dwTimeout, DWORD *pdwFlags);
BOOL /*WINAPI*/ (*WriteMsgQueue)(HANDLE hMsgQ, LPVOID lpBuffer, DWORD cbDataSize,
                DWORD dwTimeout, DWORD dwFlags);
BOOL /*WINAPI*/ (*GetMsgQueueInfo)(HANDLE hMsgQ, LPMSGQUEUEINFO lpInfo);

BOOL /*WINAPI*/ (*CloseMsgQueue)(HANDLE hMsgQ);

以上代码是否正常,因为我需要注释掉WINAPI__out_bcount(cbBufferSize)才能编译它们。

1 个答案:

答案 0 :(得分:0)

正如ctacke所指出的,它实际上可以在PPC2003 SDK上获得。 MSDN中的要求是错误的。

顺便说一下,即使在评论WINAPI__out_bcount(cbBufferSize)后,上述方法似乎也能正常工作