次の方法で共有


ReleaseStgMedium 関数 (ole2.h)

指定したストレージ メディアを解放します。

構文

void ReleaseStgMedium(
       LPSTGMEDIUM unnamedParam1
);

パラメーター

unnamedParam1

戻り値

なし

解説

ReleaseStgMedium 関数は、適切なメソッドまたは関数を呼び出して、指定されたストレージ メディアを解放します。 この関数は、ストレージ メディア構造が IDataObject::GetData や IDataObject::SetData などのパラメーターであるデータ転送操作中に使用 します。 この構造体は、ストレージ メディアの種類を識別するだけでなく、必要なくなったストレージ メディアを解放するための適切な Release メソッドを指定します。

呼び出し元がメディアを割り当てて呼び出し元に返すことができる IDataObject::GetData のように、STGMEDIUM をコードの 1 つの本文から別の本文に渡すのが一般的です。 ReleaseStgMedium は、コードの受信側がメディアを所有しているかどうか、またはメディアの元のプロバイダーがまだメディアを所有しているかどうかの柔軟性を可能にします。この場合、受信コードはメディアを解放できることをプロバイダーに通知する必要があります。

メディアの元のプロバイダーがメディアの解放を担当する場合、プロバイダーは ReleaseStgMedium を呼び出し、メディアと適切な IUnknown ポインターを punkForRelease 構造体メンバーとして指定します。 解放されるストレージ メディアの種類に応じて、次のいずれかのアクションが実行され、指定された IUnknown ポインターで IUnknown::Release メソッドが呼び出されます。

Medium ReleaseStgMedium アクション
TYMED_HGLOBAL [なし] :
TYMED_GDI [なし] :
TYMED_ENHMF [なし] :
TYMED_MFPICT [なし] :
TYMED_FILE 標準のメモリ管理メカニズムを使用して、ファイル名の文字列を解放します。
TYMED_ISTREAM IStream::Release を呼び出します。
TYMED_ISTORAGE IStorage::Release を呼び出します。
 

プロバイダーは、punkForRelease 構造体メンバーに NULL を指定することで、メディアの受信側がメディアを解放する役割を担っていることを示します。 次に、受信側は ReleaseStgMedium を呼び出します。これは、解放されるストレージ メディアの種類に応じて、次の表で説明するように呼び出しを行います。

Medium 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 セット ext-ms-win-com-ole32-l1-1-3 (Windows 10 バージョン 10.0.10240 で導入)

こちらもご覧ください

STGMEDIUM