Win32 API:StgOpenStorageEx 函数(Coml2api.h)
StgOpenStorageEx 函数是 Windows 平台上的 COM 存储接口函数之一,定义在 Coml2api.h 头文件中。该函数用于打开存储对象,该对象可以是文件、内存中的二进制数据,或者其他支持 IStorage 接口的数据源。以下是 StgOpenStorageEx 函数的基本签名和说明:HRESULT StgOpenStorageEx( const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, REFIID riid, void **ppObjectOpen);参数说明: pwcsName: 存储对象的名称,可以是文件名或路径。 grfMode: 打开模式,指定对存储对象的访问权限和行为。例如,STGM_READ 表示以只读方式打开。 stgfmt: 存储...
Win32 API:StgOpenStorage 函数(Coml2api.h)
StgOpenStorage 是 Win32 API 中 coml2api.h 头文件定义的函数,用于打开现有的存储对象。以下是 StgOpenStorage 函数的声明:#include <coml2api.h>HRESULT StgOpenStorage( const WCHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen); pwcsName: 存储对象的路径名。 pstgPriority: 指向实现了 IStorage 接口的存储对象的指针,表示打开存储对象时的优先存储对象。可以为 nullptr。 grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。 snbExclude: 指向字符串名称块(String Name Block)的指针,用于指定在打开...
Win32 API:StgOpenPropStg 函数(Coml2api.h)
StgOpenPropStg 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于打开或创建存储对象的属性集合。以下是 StgOpenPropStg 函数的声明:#include <coml2api.h>HRESULT StgOpenPropStg( const WCHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, REFFMTID fmtid, IPropertySetStorage **ppPropSetStg); pwcsName: 存储对象的路径名。 pstgPriority: 指向实现了 IStorage 接口的存储对象的指针,表示打开或创建属性集合时的优先存储对象。可以为 nullptr。 grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。 fmtid: 属性集合的格式标识符(FMT...
Win32 API:StgIsStorageFile 函数(Coml2api.h)
StgIsStorageFile 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于检查指定的文件是否包含有效的存储对象。以下是 StgIsStorageFile 函数的声明:#include <coml2api.h>HRESULT StgIsStorageFile( const WCHAR *pwcsName); pwcsName: 要检查的文件的路径名。函数返回 S_OK 表示文件包含有效的存储对象,返回 S_FALSE 表示文件存在但不包含有效的存储对象,返回其他错误代码表示操作失败。这个函数可以用于验证文件是否包含有效的 COM 存储对象,可以在打开文件之前进行预检查。如果文件包含有效的存储对象,可能可以通过 StgOpenStorage 等函数来打开并进一步操作。以下是一个示例用法:#include <coml2api.h>void ExampleStgIsStorageFile() { const WCHAR* filePath = L"example.stg"; // Check if t...
Win32 API:StgCreateStorageEx 函数(Coml2api.h)
StgCreateStorageEx 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于创建或打开存储对象,支持更多的选项。以下是 StgCreateStorageEx 函数的声明:#include <coml2api.h>HRESULT StgCreateStorageEx( const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, REFIID riid, void **ppObjectOpen); pwcsName: 存储对象的路径名。 grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。 ...
Win32 API:StgCreatePropSetStg 函数(Coml2api.h)
StgCreatePropSetStg 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于创建一个实现了 IPropertySetStorage 接口的对象,该对象可用于管理属性集合。以下是 StgCreatePropSetStg 函数的声明:#include <coml2api.h>HRESULT StgCreatePropSetStg( IStorage *pstg, DWORD reserved, IPropertySetStorage **ppPropSetStg); pstg: 指向实现了 IStorage 接口的存储对象的指针,表示要在其上创建属性集合存储。 reserved: 保留参数,必须设置为 0。 ppPropSetStg: 指向 IPropertySetStorage 接口指针的指针,用于接收创建的属性集合存储对象的指针。函数成功时返回 S_OK,并将创建的属性集合存储对象的指针存储在 ppPropSetStg 中。该对象实现了 IPropertySetStora...
Win32 API:StgCreateDocfileOnILockBytes 函数(Coml2api.h)
StgCreateDocfileOnILockBytes 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于通过指定的 ILockBytes 接口创建一个根存储对象,通常用于创建复合文档(Compound Document)。以下是 StgCreateDocfileOnILockBytes 函数的声明:#include <coml2api.h>HRESULT StgCreateDocfileOnILockBytes( ILockBytes *plkbyt, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen); plkbyt: 指向实现了 ILockBytes 接口的对象的指针。ILockBytes 接口通常用于在存储器中实现对数据流的访问。 grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。 reserved: 保留参数,必须设置为 0。 ppstgOpen: 指向 I...
Win32 API:StgCreateDocfile 函数(Coml2api.h)
StgCreateDocfile 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于创建一个根存储对象,通常用于创建复合文档(Compound Document)。以下是 StgCreateDocfile 函数的声明:#include <coml2api.h>HRESULT StgCreateDocfile( LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen); pwcsName: 要创建的根存储的路径名。 grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。 reserved: 保留参数,必须设置为 0。 ppstgOpen: 指向 IStorage 接口指针的指针,用于接收创建的存储对象的指针。函数成功时返回 S_OK,并将创建的存储对象的指针存储在 ppstgOpen 中。这个函数通常用于创建复合文档的根存储对象,然后可以在该存储对...
Win32 API:ReadClassStm 函数(Coml2api.h)
ReadClassStm 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于从流中读取类标识符(CLSID)。以下是 ReadClassStm 函数的声明:#include <coml2api.h>HRESULT ReadClassStm( IStream *pStm, CLSID *pclsid); pStm: 指向实现了 IStream 接口的流对象的指针。 pclsid: 指向接收 CLSID 的指针。函数成功时返回 S_OK,并将流中的 CLSID 存储在 pclsid 中。这个函数通常在读取流的开头部分时使用,以获取流的 CLSID。请注意,在使用此函数之前,应该通过 CreateStreamOnHGlobal、CreateStreamOnFile 或其他方式获取一个实现了 IStream 接口的流对象。
Win32 API:ReadClassStg 函数(Coml2api.h)
ReadClassStg 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于从存储中读取类标识符(CLSID)。以下是 ReadClassStg 函数的声明:#include <coml2api.h>HRESULT ReadClassStg( IStorage *pStg, CLSID *pclsid); pStg: 指向实现了 IStorage 接口的存储对象的指针。 pclsid: 指向接收 CLSID 的指针。函数成功时返回 S_OK,并将存储中的 CLSID 存储在 pclsid 中。这个函数通常在读取存储的根元素时使用,以获取存储的 CLSID。请注意,在使用此函数之前,应该通过 StgCreateDocfile 或 StgOpenStorage 等函数打开存储,并获取一个实现了 IStorage 接口的存储对象。
Win32 API:GetHGlobalFromILockBytes 函数(Coml2api.h)
GetHGlobalFromILockBytes 是 Win32 API 中的一个函数,它用于获取与实现了 ILockBytes 接口的对象相关联的全局内存块(HGLOBAL)句柄。以下是 GetHGlobalFromILockBytes 函数的声明:#include <coml2api.h>HRESULT GetHGlobalFromILockBytes( ILockBytes *pLkbyt, HGLOBAL *phglobal); pLkbyt: 指向 ILockBytes 接口的指针,表示要查询的对象。 phglobal: 指向接收全局内存块句柄的指针。函数成功时返回 S_OK,并将与 ILockBytes 对象相关联的全局内存块句柄存储在 phglobal 中。ILockBytes 接口通常用于在存储器中实现对数据流的访问。这个函数允许您检索与 ILockBytes 接口相关联的全局内存块,以便直接访问其内容或与其他系统函数一起使用。
Win32 API:CreateILockBytesOnHGlobal 函数(Coml2api.h)
CreateILockBytesOnHGlobal 是 Win32 API 中的一个函数,它用于创建一个实现了 ILockBytes 接口的对象,该对象与内存中的全局内存块(HGLOBAL)相关联。以下是函数的声明:#include <Coml2api.h>HRESULT CreateILockBytesOnHGlobal( HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES *ppLkbyt); hGlobal: 全局内存块的句柄(HGLOBAL)。这是一个指向全局内存块的句柄,可以通过函数如 GlobalAlloc 或 GlobalReAlloc 获取。 fDeleteOnRelease: 一个布尔值,指定当 ILockBytes 接口的最后一个引用被释放时是否删除全局内存块。如果设置为 TRUE,则在 ILockBytes 最后一个引用被释放时,hGlobal 将被释放。 ppLkbyt: 一个指向 ILockBytes 接口指针的指针。函数成功时,将在该指针处存储指向新创建的 ILockByte...
Win32 API:IEnumCATEGORYINFO 接口(Comcat.h)
IEnumCATEGORYINFO 接口是 Windows 平台上 COM(Component Object Model)编程的一部分,它用于枚举组件类别信息。这个接口通常与 ICatInformation 接口一起使用,用于获取类别信息的枚举器。以下是 IEnumCATEGORYINFO 接口的定义:#include <comcat.h>interface IEnumCATEGORYINFO : public IUnknown{ virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ CATEGORYINFO rgCategoryInfo[ ], /* [unique][out][in] */ ULONG *pceltFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = ...
Win32 API:ICatRegister 接口(Comcat.h)
ICatRegister 接口也是 Windows 平台上 COM(Component Object Model)编程的一部分,它通常用于注册和注销组件的类别信息。这个接口定义了一些方法,使得开发者能够在系统中注册组件所属的类别,以便其他组件能够发现和使用它们。以下是 ICatRegister 接口的定义:#include <comcat.h>interface ICatRegister : public IUnknown{ virtual HRESULT STDMETHODCALLTYPE RegisterCategories( /* [in] */ ULONG cCategories, /* [size_is][in] */ CATEGORYINFO rgCategoryInfo[ ]) = 0; virtual HRESULT STDMETHODCALLTYPE UnRegisterCategories( /* [in] */ ULONG cCategories, /* [size_is][in] *...
Win32 API:ICatInformation 接口(Comcat.h)
ICatInformation 接口是属于 Windows 平台上的 COM(Component Object Model)编程的一部分。该接口通常用于在注册表中检索和操作组件类别信息。以下是一个简要的说明:#include <comcat.h>interface ICatInformation : public IUnknown{ virtual HRESULT STDMETHODCALLTYPE EnumCategories( /* [in] */ LCID lcid, /* [out] */ IEnumCATEGORYINFO **ppenumCategoryInfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetCategoryDesc( /* [in] */ REFCATID rcatid, /* [in] */ LCID lcid, /* [out] */ LPWSTR *pszDesc) = 0; virtual HRESULT ST...
Win32 API:CATEGORYINFO 结构(Comcat.h)
CATEGORYINFO 结构是在 ComCat.h 头文件中定义的,该文件通常与组件类别相关的注册表信息一起使用。组件类别是指 COM 组件所属的一类,用于提供更多的元信息和组织。以下是 CATEGORYINFO 结构的定义:typedef struct _CATEGORYINFO { CATID catid; LCID lcid; OLECHAR szDescription[128];} CATEGORYINFO;该结构包含以下字段: catid: 类别的标识符。 lcid: 本地化标识符(Locale Identifier)。 szDescription: 描述该类别的字符串,最大长度为 128 个字符。这个结构通常用于在注册表中存储组件的类别信息。注册表的路径为 HKEY_CLASSES_ROOT\Component Categories\{<catid>},其中 <catid> 是 catid 字段的值。如果你在编写 COM 组件并需要将其归类到特定的组件类别,可以使用 ICatRegister 接口来注册这些信息。CATEGORYIN...
Win32 API:StringFromIID 函数(Combaseapi.h)
StringFromIID 函数是 Win32 API 中的一个函数,用于将 IID(Interface ID)转换为字符串形式。该函数在 Combaseapi.h 头文件中声明。以下是 StringFromIID 函数的基本定义:HRESULT StringFromIID( REFIID rclsid, LPOLESTR *lplpsz);参数说明: rclsid: 要转换为字符串的 IID。 lplpsz: 指向接收字符串的指针。函数返回 HRESULT 类型的值,表示操作的结果。如果函数成功执行,返回 S_OK,并通过 lplpsz 参数返回字符串形式的 IID;否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>int main() { // 创建一个IID IID iid = IID_IMyInterface; // 将IID转换为字符串 LPOLESTR strIID = nullptr; HRESULT hr = StringFromIID(iid...
Win32 API:StringFromGUID2 函数(Combaseapi.h)
StringFromGUID2 函数是 Win32 API 中的一个函数,用于将 GUID(Globally Unique Identifier)转换为字符串形式。该函数在 Combaseapi.h 头文件中声明。以下是 StringFromGUID2 函数的基本定义:int StringFromGUID2( REFGUID rguid, LPOLESTR lpsz, int cchMax);参数说明: rguid: 要转换为字符串的 GUID。 lpsz: 指向接收字符串的缓冲区的指针。 cchMax: 缓冲区的大小(以字符为单位)。函数返回一个整数,表示字符串的长度(不包括 null 终止符)。如果转换失败或者缓冲区大小不足,返回的值为 0。示例用法:#include <Windows.h>#include <Combaseapi.h>int main() { // 创建一个GUID GUID guid = {0x12345678, 0x9ABC, 0xDEF0, {0x12, 0x34, 0x56, 0x78, 0x9A, 0x...
Win32 API:StringFromCLSID 函数(Combaseapi.h)
StringFromCLSID 函数是 Win32 API 中的一个函数,用于将一个 CLSID(Class ID)转换为字符串形式。该函数在 Combaseapi.h 头文件中声明。以下是 StringFromCLSID 函数的基本定义:HRESULT StringFromCLSID( REFCLSID rclsid, LPOLESTR *lplpsz);参数说明: rclsid: 要转换为字符串的 CLSID。 lplpsz: 指向接收字符串的指针。函数返回 HRESULT 类型的值,表示操作的结果。如果函数成功执行,返回 S_OK,并通过 lplpsz 参数返回字符串形式的 CLSID;否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>int main() { // 创建一个CLSID CLSID clsid = CLSID_MyObject; // 将CLSID转换为字符串 LPOLESTR strCLSID = nullptr; HRESULT hr...
Win32 API:RoGetAgileReference 函数(Combaseapi.h)
RoGetAgileReference 函数是用于获取与 Windows 运行时 (WinRT) 对象相关的“敏捷引用”(agile reference)的函数。该函数在 Combaseapi.h 头文件中声明,它通常用于在不同的线程之间传递 WinRT 对象的引用。以下是 RoGetAgileReference 函数的基本定义:HRESULT RoGetAgileReference( AgileReferenceOptions options, REFIID riid, IUnknown *pAgileReference, IAgileReference **ppAgileReference);参数说明: options: 指定敏捷引用的选项,可以是 AGILEREFERENCE_DEFAULT 或 AGILEREFERENCE_DELAYEDMARSHAL。 riid: 请求的接口的 IID。 pAgileReference: 指向 IUnknown 接口的指针,表示 WinRT 对象的引用。 ppAgileRe...