IMAPISupport::MakeInvalid
適用対象: Outlook 2013 | Outlook 2016
オブジェクトを使用不可としてマークします。
HRESULT MakeInvalid(
ULONG ulFlags,
LPVOID lpObject,
ULONG ulRefCount,
ULONG cMethods
);
パラメーター
ulFlags
予約;は 0 にする必要があります。
lpObject
[in]無効化するオブジェクトへのポインター。 オブジェクトのインターフェイスは 、IUnknown から派生する必要があります。
ulRefCount
[in]オブジェクトの現在の参照カウント。
cMethods
[in]オブジェクトの vtable 内のメソッドの数。
戻り値
S_OK
オブジェクトが正常に使用不可としてマークされました。
注釈
IMAPISupport::MakeInvalid メソッドは、すべてのサポート オブジェクトに対して実装されます。 無効にするオブジェクトは、IUnknown インターフェイスまたは IUnknown から派生したインターフェイスから派生する必要があります。
MakeInvalid は、オブジェクトの vtable を、IUnknown::AddRef メソッドと IUnknown::Release メソッドが期待どおりに実行する、同様のサイズのスタブ vtable に置き換えることによって、オブジェクトを使用不可としてマークします。 ただし、その他のメソッドは失敗し、値MAPI_E_INVALID_OBJECTを返します。
呼び出し側への注意
サービス プロバイダーとメッセージ サービスは、通常、シャットダウン時 に MakeInvalid を 呼び出します。 ただし、 MakeInvalid はいつでも呼び出すことができます。 たとえば、クライアントが一部のサブオブジェクトを解放せずにオブジェクトを解放する場合、 MakeInvalid を すぐに呼び出してそれらのサブオブジェクトを解放できます。
無効化を試みるオブジェクトを所有している必要があります。 少なくとも 16 バイトの長さと、その vtable に少なくとも 3 つのメソッドが必要です。
MakeInvalid を呼び出してから、関連付けられているデータ構造の破棄など、通常はオブジェクトのリリース中に実行されるシャットダウン作業を実行できます。 MAPI は MAPIFreeBuffer を呼び出してメモリを解放するため、オブジェクトをサポートするコードをメモリに保持する必要はありません。 リソースを解放し、 MakeInvalid を呼び出してから、無効化されたオブジェクトを無視できます。