Win32 API 日本語リファレンス
ホームSystem.Contacts › IContact

IContact

COM
IIDf941b671-bda7-4f77-884a-f46462f226a7継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

使用しないでください。単一の連絡先に対するプロパティの読み書きを行うメソッドを定義します。

解説(Remarks)

このインターフェイスを実装するクラスは、多くの場合、次のインターフェイスも併せて実装します。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetContactID(LPWSTR pszContactID, DWORD cchContactID, DWORD* pdwcchContactIDRequired)

ローカルコンピューター内で一意の連絡先IDを取得します。

pszContactIDLPWSTRinout連絡先IDを格納するための、ユーザーが割り当てたバッファーです。
cchContactIDDWORDin割り当て済みのバッファーサイズを指定します。
pdwcchContactIDRequiredDWORD*inoutバッファー不足による失敗時に、pszContactID に必要なサイズが格納されます。NULL でもかまいません。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。pszContactID には null で終わる ContactID が格納されます。
ERROR_INSUFFICIENT_BUFFER
pszContactID が値を格納するのに十分な大きさでなかった場合に、マクロ HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) が返されます。必要なバッファーサイズは pdwcchContactIDRequired に格納されます。
vtbl 4 HRESULT GetPath(LPWSTR pszPath, DWORD cchPath, DWORD* pdwcchPathRequired)

この連絡先の読み込みに使用されたファイルシステムのパスを取得します。

pszPathLPWSTRinout連絡先IDを格納するための、ユーザーが割り当てたバッファーです。
cchPathDWORDin割り当て済みのバッファーサイズを文字数で指定します。
pdwcchPathRequiredDWORD*inoutバッファー不足による失敗時に、pszPath に必要なサイズが格納されます。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。pszPath にはパスが格納されます。
E_UNEXPECTED
連絡先IDがファイルパスから読み込まれていませんでした。
ERROR_INSUFFICIENT_BUFFER
pszPath が値を格納するのに十分な大きさでなかった場合に、マクロ HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) が返されます。必要なバッファーサイズは pdwcchPathRequired に格納されます。
vtbl 5 HRESULT CommitChanges(DWORD dwCommitFlags)

この連絡先に加えた変更を連絡先ファイルに保存します。

dwCommitFlagsDWORDin予約済みのパラメーターです。0 を指定する必要があります。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
変更がディスクに正常に書き込まれました。
E_UNEXPECTED
連絡先がファイルパスから読み込まれていませんでした。
ERROR_SHARING_VIOLATION
別のプロセスが、この連絡先への変更と互換性のない方法でファイルを変更しました。

解説(Remarks)

連絡先が作成されてから IContact::CommitChanges までの間に変更され、かつディスク上で互換性のない変更が加えられていた場合、ERROR_SHARING_VIOLATION を返すことがあります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IContact "{F941B671-BDA7-4F77-884A-F46462F226A7}"
#usecom global IContact IID_IContact "{61B68808-8EEE-4FD1-ACB8-3D804C8DB056}"
#comfunc global IContact_GetContactID   3 var,int,var
#comfunc global IContact_GetPath        4 var,int,var
#comfunc global IContact_CommitChanges  5 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。