Win32 API:CoDisconnectObject 函数(Combaseapi.h)
CoDisconnectObject 函数在 Win32 API 中是一个标准的 COM (Component Object Model) 函数,用于断开与一个COM对象的连接。它的声明通常在 Combaseapi.h 头文件中。以下是 CoDisconnectObject 函数的声明:WINOLEAPI CoDisconnectObject( _In_ LPUNKNOWN lpUnk, _In_ DWORD dwReserved);参数说明: lpUnk: 要断开连接的 IUnknown 接口的指针。 dwReserved: 保留参数,必须为零。这个函数用于断开与一个 COM 对象的连接,通常在不再需要该对象时调用。它会减少对象的引用计数,并在引用计数为零时释放对象。在断开连接后,不能再使用对象的接口。请注意,这只是一种一般性的解释,具体的使用方式还需要根据您的代码和情境来决定。
Win32 API:CoCreateInstanceEx 函数(Combaseapi.h)
CoCreateInstanceEx 函数是 Windows API 中的一部分,用于创建 COM 对象的实例,类似于 CoCreateInstance 函数。不同之处在于,CoCreateInstanceEx 提供了更灵活的选项,允许在指定上下文中进行实例化。以下是 CoCreateInstanceEx 函数的原型:HRESULT CoCreateInstanceEx( REFCLSID rclsid, IUnknown *punkOuter, DWORD dwClsCtx, COSERVERINFO *pServerInfo, ULONG cmq, MULTI_QI *pResults);参数解释: rclsid:要创建的 COM 类的 CLSID。 punkOuter:用于控制聚合的外部对象的 IUnknown 接口指针。如果不进行聚合,可以传递 nullptr。 dwClsCtx:指定对象在其中运行的上下文。...
Win32 API:CoCreateInstance 函数(Combaseapi.h)
CoCreateInstance 函数是 Windows API 中的一部分,用于创建 COM 对象的实例。这个函数通常用于实例化某个具体的 COM 类,通过该类的 CLSID(Class Identifier)标识。以下是该函数的原型:HRESULT CoCreateInstance( REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv);参数解释: rclsid:要创建的 COM 类的 CLSID。 pUnkOuter:用于控制聚合的外部对象的 IUnknown 接口指针。如果不进行聚合,可以传递 nullptr。 dwClsContext:指定对象在其中运行的上下文。通常使用 CLSCTX_INPROC_SERVER 或 CLSCTX_LOCAL_SERVER。 riid:要请求的接口的 IID(Interface Identifier)。 ppv:用于存储请求的接口指针的指针。函数返回 HRESULT 类型的值。如果操作成功,返回 S...
Win32 API:CoCreateGuid 函数(Combaseapi.h)
CoCreateGuid 函数是 Windows API 中的一部分,用于生成一个新的唯一标识符(GUID,全局唯一标识符)。以下是该函数的原型:HRESULT CoCreateGuid( GUID *pguid);参数解释: pguid:用于存储生成的 GUID 的指针。函数返回 HRESULT 类型的值。如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { GUID newGuid; HRESULT hr = CoCreateGuid(&newGuid); if (SUCCEEDED(hr)) { std::cout << "Generated GUID: " << newGuid.Data1 << "-" << newGuid.Data2 << &...
Win32 API:CoCreateFreeThreadedMarshaler 函数(Combaseapi.h)
CoCreateFreeThreadedMarshaler 函数是 Windows API 中的一部分,用于创建一个自由线程化的代理工厂对象。这个函数通常在多线程应用程序中使用,以便将对象的代理绑定到任意线程。以下是该函数的原型:HRESULT CoCreateFreeThreadedMarshaler( IUnknown *punkOuter, IUnknown **ppunkMarshal);参数解释: punkOuter:如果不是 nullptr,则创建的自由线程化代理将聚合给定的外部对象。 ppunkMarshal:用于存储创建的自由线程化代理的指针。函数返回 HRESULT 类型的值。如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { IUnknown *pOuter = nullptr; IUnknown *pMarshal = nullptr; HRESU...
Win32 API:CoCancelCall 函数(Combaseapi.h)
CoCancelCall 函数是 Windows API 中的一部分,用于取消通过 CoCallDllGetClassObject 函数发起的调用。此函数通常用于取消异步调用。以下是该函数的原型:HRESULT CoCancelCall( DWORD dwThreadId, ULONG ulTimeout);参数解释: dwThreadId:调用线程的标识符,指定要取消调用的线程。 ulTimeout:取消调用的超时时间(以毫秒为单位)。如果设置为 INFINITE,则等待直到取消完成。函数返回 HRESULT 类型的值。如果操作成功,返回 S_OK,否则返回相应的错误代码。请注意,这个函数通常用于取消由 CoCallDllGetClassObject 函数发起的异步调用。它可能不是在所有场景下都适用,具体使用时需要注意上下文和相关的调用流程。
Win32 API:CLSIDFromString 函数(Combaseapi.h)
CLSIDFromString 函数是 Windows API 中的一部分,位于 Combaseapi.h 头文件中。这个函数用于将字符串形式的 CLSID(Class Identifier)转换为对应的 CLSID 结构体。以下是该函数的原型:HRESULT CLSIDFromString( LPCOLESTR lpsz, LPCLSID pclsid);参数解释: lpsz:要转换的字符串形式的 CLSID。 pclsid:用于存储转换后的 CLSID 结构体。函数返回 HRESULT 类型的值,如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { LPCOLESTR clsidString = L"{00020812-0000-0000-C000-000000000046}"; // Excel CLSID CLSID clsid; HRES...
Win32 API:CLSIDFromProgID 函数(Combaseapi.h)
CLSIDFromProgID 是 Windows API 中的一个函数,位于 Combaseapi.h 头文件中。它用于从给定的 ProgID(Programmatic Identifier)获取相应的 CLSID(Class Identifier)。下面是该函数的原型:HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID, LPCLSID lpclsid);参数解释: lpszProgID:要检索 CLSID 的 ProgID 字符串。 lpclsid:用于存储检索到的 CLSID。函数返回 HRESULT 类型的值,如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { LPCOLESTR progID = L"Excel.Application"; CLSID clsid; HRESULT hr = CL...