ReleaseStgMedium 函数 (ole2.h)
释放指定的存储介质。
语法
void ReleaseStgMedium(
LPSTGMEDIUM unnamedParam1
);
参数
unnamedParam1
返回值
无
备注
ReleaseStgMedium 函数调用相应的方法或函数来释放指定的存储介质。 在存储介质结构为参数的数据传输操作期间使用此函数,例如 IDataObject::GetData 或 IDataObject::SetData。 除了标识存储介质的类型外,此结构还指定了适当的 Release 方法,以便在不再需要存储介质时释放存储介质。
通常将 STGMEDIUM 从一个代码主体传递到另一个代码主体,例如在 IDataObject::GetData 中,调用的可以分配介质并将其返回到调用方。 ReleaseStgMedium 允许灵活地确定代码的接收正文是否拥有媒体,或者媒体的原始提供程序是否仍拥有媒体,在这种情况下,接收代码需要通知提供程序它可以释放媒体。
当媒体的原始提供程序负责释放媒体时,提供程序调用 ReleaseStgMedium,将介质和相应的 IUnknown 指针指定为 punkForRelease 结构成员。 根据要释放的存储介质的类型,将执行以下操作之一,然后调用指定的 IUnknown 指针上的 IUnknown::Release 方法。
中型 | ReleaseStgMedium 操作 |
---|---|
TYMED_HGLOBAL | 无。 |
TYMED_GDI | 无。 |
TYMED_ENHMF | 无。 |
TYMED_MFPICT | 无。 |
TYMED_FILE | 使用标准内存管理机制释放文件名字符串。 |
TYMED_ISTREAM | 调用 IStream::Release。 |
TYMED_ISTORAGE | 调用 IStorage::Release。 |
提供程序通过为 punkForRelease 结构成员指定 NULL 来指示媒体的接收方负责释放媒体。 然后,接收方调用 ReleaseStgMedium,根据要释放的存储介质的类型,按下表中所述进行调用。
中型 | ReleaseStgMedium 操作 |
---|---|
TYMED_HGLOBAL | 在句柄上调用 GlobalFree 函数。 |
TYMED_GDI | 在句柄上调用 DeleteObject 函数。 |
TYMED_ENHMF | 删除增强型图元文件。 |
TYMED_MFPICT | 它包含的 hMF 使用 DeleteMetaFile 函数删除;然后将句柄本身传递给 GlobalFree。 |
TYMED_FILE | 通过删除磁盘文件来释放它。 使用标准内存管理机制释放文件名字符串。 |
TYMED_ISTREAM | 调用 IStream::Release。 |
TYMED_ISTORAGE | 调用 IStorage::Release。 |
在任一情况下,在调用 ReleaseStgMedium 后,指定的存储介质都无效,不能再使用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ole2.h |
Library | Ole32.lib |
DLL | Ole32.dll |
API 集 | Windows 10版本 10.0.10240 中引入的 ext-ms-win-com-ole32-l1-1-3 () |