如何正确使用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));
经过测试和工作的代码示例。
相关文章:
- 没有找到相关文章