使用 AfxBeginthread 传递 GlobalInterfacePointer

发布于 2024-09-16 11:34:56 字数 218 浏览 6 评论 0原文

我在 CDialog 类中使用工作线程。

 theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);

现在我需要将全局 Inerface 指针传递给工作线程,以便从外部访问 COM 对象,

有人可以告诉我传递 GIT cookie 并在线程内访问它的语法吗?

谢谢

I am using a worker thread inside a CDialog class.

 theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);

Now I need to pass a global Inerface poiner to the worker thread so as to access a COM object from outside

Can someone tell me the syntax to pass the GIT cookie and access it inside the thread.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尝蛊 2024-09-23 11:34:56

好吧,我自己来回答这个问题

实际上可以通过三种方式来完成。我将简要介绍一种方式。

使用 atlbase.h 中的 CComGitPtr

这样做:

CComGitPtr
GitPtrName(指向已初始化的指针)
接口)

现在从 DWORD dwCokie = GitPtrName->Detach(); 中提取 cookie

现在将 cookie 作为结构体(可选)的内容传递到工作线程内。

一旦进入工作线程,提取 cookie,调用 CoInitilize,并实例化所需的接口指针。

作为需要编组的 COM 接口。

现在将 git cookie 传递到 GI 表并检索编组的 COM 对象。

喜欢:

 // 这是在线程内完成的
    // 检索传递的 cookie 作为 dwCookie
    CComGITPtr<需要编组的 COM 接口

pToGITTest(dwCookie);
COM 接口需要编组;
pToGITTest.CopyTo(&pReqd);

   Now we have pToGITTest inside the thread, fully marshalled, go ahead and enjoy!

谢谢。

Well, I will answer this myself

This can be done in 3 ways actually. one way I will brief.

using the CComGitPtr from atlbase.h

Do like this :

CComGitPtr
GitPtrName (pointer to the initialized
interface)

Now extract the cookie from the DWORD dwCokie = GitPtrName->Detach();

Now pass the cookie as a content of struct(optional) inside the worker thread.

Once you are inside the worker thread, extract the cookie, call CoInitilize, and instantiate the reqiuired interface pointer.

as COMInterfacethatneedMarshalling pReqd.

Now pass the git cookie to the GI table and retrieve the marshalled COM object.

like:

    // This is done inide the thread
    // retrieve the passed cookie as dwCookie
    CComGITPtr<COMInterfacethatneedMarshalling

pToGITTest(dwCookie);
COMInterfacethatneedMarshalling pReqd;
pToGITTest.CopyTo(&pReqd);

   Now we have pToGITTest inside the thread, fully marshalled, go ahead and enjoy!

Thanks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文