OpenStreamOnFile

適用対象: Outlook 2013 | Outlook 2016

OLE IStream オブジェクトを割り当てて初期化し、ファイルの内容にアクセスします。 この関数は、パスとファイル拡張子を含むファイル名として ANSI 文字列を受け取るため、この関数の Unicode バージョン OpenStreamOnFileW を使用することをお勧めします。

項目
ヘッダー ファイル:
Mapiutil.h
実装元:
MAPI
呼び出し元:
クライアント アプリケーションとサービス プロバイダー
HRESULT STDMETHODCALLTYPE OpenStreamOnFile(
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  LPSTR lpszFileName,
  LPSTR lpszPrefix,
  LPSTREAM FAR * lppStream
);

パラメーター

lpAllocateBuffer

[in]メモリの割り当てに使用する MAPIAllocateBuffer 関数へのポインター。

lpFreeBuffer

[in]メモリを解放するために使用する MAPIFreeBuffer 関数へのポインター。

ulFlags

[in]OLE IStream オブジェクトを介してアクセスするファイルの作成または開きを制御するために使用されるフラグのビットマスク。 次のフラグを設定できます。

SOF_UNIQUEFILENAME

IStream オブジェクトの一時ファイルを作成します。 このフラグが設定されている場合は、STGM_CREATEフラグとSTGM_READWRITEフラグも設定する必要があります。

STGM_CREATE

ファイルは、既に存在する場合でも作成されます。 lpszFileName パラメーターが設定されていない場合は、このフラグとSTGM_DELETEONRELEASEの両方を設定する必要があります。 STGM_CREATEが設定されている場合は、STGM_READWRITE フラグも設定する必要があります。

STGM_DELETEONRELEASE

ファイルは、 IStream オブジェクトが解放されたときに削除されます。 lpszFileName パラメーターが設定されていない場合は、このフラグとSTGM_CREATEの両方を設定する必要があります。

STGM_READ

ファイルは、読み取り専用アクセス権で作成または開きます。

STGM_READWRITE

ファイルは、読み取り/書き込みアクセス許可で作成または開きます。 このフラグが設定されていない場合は、STGM_CREATE フラグも設定しないでください。

lpszFileName

[in] OpenStreamOnFileIStream オブジェクトを初期化するファイルのパスと拡張子を含むファイル名。 SOF_UNIQUEFILENAME フラグが設定されている場合、 lpszFileName には、一時ファイルを作成するディレクトリへのパスが含まれます。 lpszFileName が NULL の場合、OpenStreamOnFile はシステムから適切なパスを取得し、STGM_CREATEフラグとSTGM_DELETEONRELEASE フラグの両方を設定する必要があります。

lpszPrefix

[in] OpenStreamOnFileIStream オブジェクトを初期化するファイル名のプレフィックス。 が設定されている場合、プレフィックスには 3 文字以下を含める必要があります。 lpszPrefix が NULL の場合は、プレフィックス "SOF" が使用されます。

lppStream

[out] IStream インターフェイスを公開しているオブジェクトへのポインターへのポインター。

戻り値

S_OK

�ʘb���������A�\�������l�܂��͒l���Ԃ���܂��B

MAPI_E_NO_ACCESS

ユーザーのアクセス許可が不足しているか、読み取り専用ファイルを変更できないため、ファイルにアクセスできませんでした。

MAPI_E_NOT_FOUND

指定されたファイルが存在しません。

注釈

OpenStreamOnFile 関数には、SOF_UNIQUEFILENAME フラグの設定によって区別される 2 つの重要な用途があります。 このフラグが設定されていない場合、OpenStreamOnFile は、IStream::CopyTo メソッドを使用して添付ファイルのPR_ATTACH_DATA_BIN (PidTagAttachDataBinary) プロパティにその内容をコピーするなど、既存のファイルで IStream オブジェクトを開きます。 この場合、 lpszFileName パラメーターはファイルのパスとファイル名を指定します。

SOF_UNIQUEFILENAMEが設定されている場合、 OpenStreamOnFileIStream オブジェクトのデータを保持する一時ファイルを作成します。 この使用のために、 lpszFileName パラメーターは必要に応じて、ファイルを作成するディレクトリへのパスを指定でき、 lpszPrefix パラメーターは必要に応じてファイル名のプレフィックスを指定できます。

呼び出し元のクライアント アプリケーションまたはサービス プロバイダーが IStream オブジェクトで終了したら、OLE IStream::Release メソッドを呼び出すことによって解放する必要があります。

MAPI では、ほとんどのメモリ割り当てと割り当て解除に lpAllocateBufferlpFreeBuffer によって指される関数が使用されます。特に、IMAPIProp::GetProps や IMAPITable::QueryRows などのオブジェクト インターフェイスを呼び出すときにクライアント アプリケーションで使用するメモリを割り当てます。

呼び出し側への注意

SOF_UNIQUEFILENAME フラグは、メッセージング システムに固有の名前を持つ一時ファイルを作成するために使用されます。 このフラグが設定されている場合、 lpszFileName パラメーターは一時ファイルのパスを指定し、 lpszPrefix パラメーターにはファイル名のプレフィックス文字が含まれます。 構築されたファイル名は <プレフィックス>HHHH です。TMP。HHHH は 16 進数です。 lpszFileName が NULL の場合、ファイルは、Windows 関数 GetTempPath から返される一時ファイル ディレクトリ、または一時ファイル ディレクトリが指定されていない場合は現在のディレクトリに作成されます。

SOF_UNIQUEFILENAME フラグが設定されていない場合、 lpszPrefix は無視され、 lpszFileName には、開くまたは作成するファイルの完全修飾パスとファイル名が含まれている必要があります。 ファイルは、 ulFlags で設定されている他のフラグに基づいて開くか作成されます。

MFCMAPI リファレンス

MFCMAPI のサンプル コードについては、次の表を参照してください。

ファイル 関数 コメント
File.cpp
WriteAttachStreamToFile
MFCMAPI では 、OpenStreamOnFile メソッドを使用してファイル上のストリームを開き、添付ファイルを書き出すことができます。

関連項目

[�R��h �T���v���Ƃ��� MFCMAPI