如何正确使用INetSharingManager

How to properly use INetSharingManager?

本文关键字:INetSharingManager 何正确      更新时间:2023-10-16

我是一个新手C++程序员,正在使用C++ Builder XE3,我有一个很好的Delphi背景,我正在尝试使用INetSharingManager,但它给了我一条错误消息:

E2352 Cannot create instance of abstract class 'INetSharingManager'

这是我使用的代码:

INetSharingManager* NSManager = new INetSharingManager();

我的问题是

  • 如何在C++中正确使用INetSharingManager?
  • 以及如何在Delphi中使用INetSharingManager(如果可能的话)

并提前感谢。

这是一个接口,你不能像那样实例化它。请记住,接口没有实现,因此显然根本没有机会实例化它们。您必须实例化实现接口的其他内容。

此处C++示例代码演示如何创建其中一个。以下是关键摘录:

CoInitialize (NULL);
// init security to enum RAS connections
CoInitializeSecurity (NULL, -1, NULL, NULL, 
                      RPC_C_AUTHN_LEVEL_PKT, 
                      RPC_C_IMP_LEVEL_IMPERSONATE,
                      NULL, EOAC_NONE, NULL);
INetSharingManager * pNSM = NULL;    
HRESULT hr = ::CoCreateInstance (__uuidof(NetSharingManager),
                                 NULL,
                                 CLSCTX_ALL,
                                 __uuidof(INetSharingManager),
                                 (void**)&pNSM);

代码来自此库的官方Microsoft文档。您应该仔细阅读该文档。

你问如何使用德尔福的这个界面。好吧,你做的和你在C++做的完全一样。调用CoCreateInstance以获取接口引用。现在您可以从C++中看到如何做到这一点,将其转换为Delphi非常简单。

由于答案相当过时,我建议使用以下代码:

HRESULT hr = E_FAIL; 
CoInitialize(nullptr);
INetSharingManager* pNetSharingManager = nullptr;
hr = CoCreateInstance(CLSID_NetSharingManager, 
nullptr,
CLSCTX_ALL, 
IID_INetSharingManager,
reinterpret_cast<LPVOID*>(&pNetSharingManager));

经过测试和工作的代码示例。

相关文章:
  • 没有找到相关文章