適用対象: Outlook 2013 | Outlook 2016
セッションのプライマリ ID を提供する オブジェクトのエントリ識別子を返します。
HRESULT QueryIdentity(
ULONG FAR * lpcbEntryID,
LPENTRYID FAR * lppEntryID
);
パラメーター
lpcbEntryID
[out] lppEntryID パラメーターによって指されるエントリ識別子のバイト数へのポインター。
lppEntryID
[out]プライマリ ID を提供するオブジェクトのエントリ識別子へのポインターへのポインター。
戻り値
S_OK
プライマリ ID が正常に返されました。
MAPI_W_NO_SERVICE
呼び出しは成功しましたが、セッションのプライマリ ID はありません。 この警告が返されたら、呼び出しは成功として処理する必要があります。 この警告をテストするには、 HR_FAILED マクロを使用します。 詳細については、「 エラー処理にマクロを使用する」を参照してください。
注釈
IMAPISession::QueryIdentity メソッドは、現在のセッションのプライマリ ID を取得し、lppEntryID パラメーターを使用して値を返します。 プライマリ ID は、セッションのユーザーを表すオブジェクト (通常はメッセージング ユーザー) です。 lppEntryID は 、IMailUser オブジェクトのプライマリ ID を返します。これは PidTagEntryID プロパティとしても格納されます。 lppEntryID で返される値を使用して、IMAPISession::OpenEntry を使用して IMailUser オブジェクトを開くことができます。
複数のメッセージ サービスの多くのサービス プロバイダーは、セッションのプライマリ ID を提供できますが、MAPI は 1 つのサービス プロバイダーを指定します。 プライマリ ID を提供するサービス プロバイダーは、次の項目を設定します。
PR_RESOURCE_FLAGS (PidTagResourceFlags) プロパティのSTATUS_PRIMARY_IDENTITY フラグ。
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay) プロパティ。
PR_IDENTITY_ENTRYID (PidTagIdentityEntryId) プロパティ。
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey) プロパティ。
プライマリ ID を提供するサービス プロバイダーがメッセージ サービスに属している場合、メッセージ サービス内の他のサービス プロバイダーも PR_IDENTITY プロパティを設定します。 これらのプロパティは、セッションの状態テーブルに発行されます。
可能であれば、 QueryIdentity は、STATUS_PRIMARY_IDENTITYでタグ付けされた状態行から 、PR_IDENTITY_ENTRYID プロパティの値を返します。 PR_IDENTITY_ENTRYID プロパティがプライマリ ID 行に存在しない場合、QueryIdentity は、その行の他の情報と共に構築された 1 回限りのエントリ識別子を返します。
STATUS_PRIMARY_IDENTITY フラグが状態テーブル内のすべての PR_RESOURCE_FLAG 列に存在しない場合、 QueryIdentity は最初に見つかったエントリ識別子を返します。 返す適切なエントリ識別子がない場合、 QueryIdentity は警告MAPI_W_NO_SERVICEで成功し、ハードコーディングされたエントリ識別子に lppEntryID をポイントします。
呼び出し側への注意
IMsgServiceAdmin::SetPrimaryIdentity メソッドを呼び出して、セッションのプライマリ ID を指定するタスクをメッセージ サービスに割り当てることができます。
プライマリ ID を取得するもう 1 つの方法は、PR_RESOURCE_FLAGS列が STATUS_PRIMARY_IDENTITY に設定されている行の状態テーブルを検索することです。 ID 情報を取得するこの代替方法の詳細については、「 状態テーブルと状態オブジェクト」を参照してください。
QueryIdentity によって返されるプライマリ ID のエントリ識別子の使用が完了したら、MAPIFreeBuffer 関数を呼び出してメモリを解放します。
一般的な ID の詳細については、「 MAPI プライマリ ID」を参照してください。
MAPI セッション ID の取得の詳細については、「 プライマリ ID とプロバイダー ID の取得」を参照してください。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
| ファイル | 関数 | コメント |
|---|---|---|
| MainDlg.cpp |
CMainDlg::OnQueryIdentity |
MFCMAPI では、 IMAPISession::QueryIdentity メソッドを使用して、セッションのプライマリ ID のアドレス帳エントリを開きます。 |