IMAPIStatus::ValidateStateIMAPIStatus::ValidateState

適用されます: OutlookApplies to: Outlook

MAPI リソースまたはサービス プロバイダーの使用可能な外部のステータス情報を確認します。Confirms the external status information available for the MAPI resource or the service provider. ステータスのすべてのオブジェクトでこのメソッドがサポートされています。This method is supported in all status objects.

HRESULT ValidateState(
  ULONG_PTR ulUIParam,
  ULONG ulFlags
);

ParametersParameters

ulUIParamulUIParam

[in]すべてのダイアログ ボックスの親ウィンドウまたはこのメソッドを表示するウィンドウへのハンドル。[in] A handle to the parent window of any dialog boxes or windows that this method displays.

ulFlagsulFlags

[in]検証を制御するフラグのビットマスクです。[in] A bitmask of flags that controls the validation. 次のフラグを設定することができます。The following flags can be set:

ABORT_XP_HEADER_OPERATIONABORT_XP_HEADER_OPERATION

ユーザー操作がキャンセルされました、通常、対応するダイアログ ボックスで [キャンセル] ボタンをクリックするとします。The user canceled the operation, typically by clicking the Cancel button in the corresponding dialog box. 状態オブジェクトには、2 つのオプションがあります。The status object has two options:

  • 工程の作業を続行します。Continue working on the operation.

  • 操作を停止し、MAPI_E_USER_CANCELED を返します。Stop the operation and return MAPI_E_USER_CANCELED.

CONFIG_CHANGEDCONFIG_CHANGED

1 つ以上の状態のオブジェクトの構成のプロパティを変更します。One or more of the status object's configuration properties changed. クライアントは、動的に重要なトランスポート プロバイダーのエラーを修正するのには MAPI スプーラーを許可するには、このフラグを設定できます。Clients can set this flag to allow the MAPI spooler to dynamically correct critical transport provider failures.

FORCE_XP_CONNECTFORCE_XP_CONNECT

状態オブジェクトは、接続を実行します。The status object should perform a connection. REFRESH_XP_HEADER_CACHE または PROCESS_XP_HEADER_CACHE フラグを指定してこのフラグを使用する場合は、キャッシュを使用しない接続が発生します。When this flag is used with the REFRESH_XP_HEADER_CACHE or PROCESS_XP_HEADER_CACHE flag, the connection occurs without caching.

FORCE_XP_DISCONNECTFORCE_XP_DISCONNECT

状態オブジェクトは、切断操作を実行する必要があります。The status object should perform a disconnect operation. REFRESH_XP_HEADER_CACHE または PROCESS_XP_HEADER_CACHE フラグを指定してこのフラグを使用する場合は、キャッシュを使用しない切断が発生します。When this flag is used with the REFRESH_XP_HEADER_CACHE or PROCESS_XP_HEADER_CACHE flag, the disconnection occurs without caching.

PROCESS_XP_HEADER_CACHEPROCESS_XP_HEADER_CACHE

ヘッダー キャッシュ テーブル内のエントリを処理する必要があります、MSGSTATUS_REMOTE_DOWNLOAD フラグでマークされたすべてのメッセージをダウンロードするか、および、MSGSTATUS_REMOTE_DELETE フラグでマークされたすべてのメッセージを削除する必要があります。Entries in the header cache table should be processed, all messages marked with the MSGSTATUS_REMOTE_DOWNLOAD flag should be downloaded, and all messages marked with the MSGSTATUS_REMOTE_DELETE flag should be deleted. MSGSTATUS_REMOTE_DOWNLOAD と MSGSTATUS_REMOTE_DELETE の設定の両方を持つメッセージを移動する必要があります。Messages that have both MSGSTATUS_REMOTE_DOWNLOAD and MSGSTATUS_REMOTE_DELETE set should be moved.

REFRESH_XP_HEADER_CACHEREFRESH_XP_HEADER_CACHE

リモート トランスポート プロバイダーでは、メッセージ ヘッダーの新しいリストをダウンロードする必要があり、メッセージの状態をマークするすべてのフラグをクリアする必要があります。For a remote transport provider, a new list of message headers should be downloaded and all flags that mark message status should be cleared.

SUPPRESS_UISUPPRESS_UI

状態オブジェクトが操作の一部としてユーザー インターフェイスを表示するを防ぎます。Prevents the status object from displaying a user interface as part of the operation.

�߂�lReturn value

S_OKS_OK

検証に成功しました。The validation was successful.

MAPI_E_BUSYMAPI_E_BUSY

別の操作が実行中です。完了するために許可するか、停止する、この操作を開始する前に。Another operation is in progress; it should be allowed to complete, or it should be stopped, before this operation is initiated.

MAPI_E_NO_SUPPORTMAPI_E_NO_SUPPORT

状態オブジェクトは、検証メソッドをサポートしていませんPR_RESOURCE_METHODS (PidTagResourceMethods) のプロパティに STATUS_VALIDATE_STATE フラグがない場合で示される。The status object does not support the validation method, as indicated by the absence of the STATUS_VALIDATE_STATE flag in the PR_RESOURCE_METHODS (PidTagResourceMethods) property.

MAPI_E_USER_CANCELMAPI_E_USER_CANCEL

ユーザー操作がキャンセルされました検証、通常ダイアログ ボックスで [キャンセル] ボタンをクリックするとします。The user canceled the validation operation, typically by clicking the Cancel button in a dialog box. リモート トランスポート プロバイダーによってのみ、この値が返されます。This value is returned only by remote transport providers.

備考Remarks

IMAPIStatus::ValidateStateメソッドは、状態オブジェクトに関連付けられているリソースの状態をチェックします。The IMAPIStatus::ValidateState method checks the state of a resource that is associated with a status object. IMAPIStatusインターフェイスの状態のすべてのオブジェクトに必要な唯一の方法は、 ValidateStateです。ValidateState is the only method in the IMAPIStatus interface that is required for all status objects. このメソッドの実際の動作は実装によって異なります。The exact behavior of this method depends on the implementation. 次の表では、状態オブジェクトのさまざまな種類のそれぞれの実装について説明します。The following table describes the implementation of each of the different types of status objects.

ステータス オブジェクトStatus object * ValidateState * 実装 * *ValidateState implementation
MAPI サブシステムMAPI subsystem
現在アクティブなサービス ・ プロバイダー、サブシステム自身が所有しているすべてのリソースの状態を検証します。Validates the state of all the resources that the currently active service providers and the subsystem itself own.
MAPI スプーラーMAPI spooler
ログオン用に既にログオンしているかどうかに関係なくすべてのトランスポート プロバイダーを実行します。Performs a logon of all transport providers, regardless of whether they are already logged on.
MAPI アドレス帳MAPI address book
プロファイル セクション内のエントリをチェックします。Checks the entries in its profile section.
サービス プロバイダーService provider
実装は、プロバイダーと、 _ulFlags_パラメーターで設定されているフラグの種類によって異なります。Implementation depends on the type of provider and the flags set in the ulFlags parameter.

実装者へのメモNotes to implementers

リモート クライアント アプリケーションは、リモートのさまざまなアクションの処理を開始するValidateStateメソッドを呼び出します。Remote client applications call the ValidateState method to start remote processing for various actions. このメソッドは、実際に作業を行うための代わりに、MAPI スプーラーと通信するためにステータス ビットを設定するのには、主に存在します。This method exists primarily to set status bits to communicate with the MAPI spooler, instead of to actually do any work. 通常、トランスポート プロバイダーは、MAPI スプーラーにクライアントの要求を完了するのには開始する必要があるアクションを示すステータス行のフラグを設定します。Typically, the transport provider sets flags in its status row that indicate to the MAPI spooler what actions need to be initiated to complete the client's request.

クライアント トランスポートがスプーラーの相互作用のこのモデルでは、クライアントによって要求された操作は、非同期で要求された操作が完了する前に、 ValidateStateが返されます。In this model of client-transport-spooler interaction, the actions requested by the client are asynchronous, in that ValidateState returns before the requested actions are complete. ただしが必ずしも含まれず、基になるメッセージング システムまたはトランスポートに固有のインターフェイスでは、関連するアクションは、同期があります。However, actions that do not necessarily involve the underlying messaging system, or that involve a transport-specific interface, can be synchronous. リモート トランスポート プロバイダーが実行するアクションを指定するのには、次のフラグのビットマスクで、クライアント アプリケーションに渡されます。The client application passes in a bitmask of the following flags to specify which actions the remote transport provider should take.

ABORT_XP_HEADER_OPERATIONABORT_XP_HEADER_OPERATION

可能であれば、リモート トランスポート プロバイダーでは、ヘッダーのダウンロードに関連するすべての操作を取り消す必要があります。If possible, the remote transport provider should cancel any operations that involve downloading headers. これを行うには、トランスポート プロバイダーは、ログオン オブジェクトの [状態] 行に次のプロパティ値を設定する必要があります。To do this, the transport provider must set the following property values in the logon object's status row:

  • このトランスポート プロバイダーの受信のフラッシュ処理を停止するのには MAPI スプーラーに指示するのにはPR_STATUS_CODE (PidTagStatusCode) のプロパティで STATUS_INBOUND_ENABLED と STATUS_INBOUND_ACTIVE のビットをオフにします。Clear the STATUS_INBOUND_ENABLED and STATUS_INBOUND_ACTIVE bits in the PR_STATUS_CODE (PidTagStatusCode) property to tell the MAPI spooler to halt the incoming flush process for this transport provider.

  • STATUS_OFFLINE のPR_STATUS_CODEプロパティ内のビットを設定します。Set the STATUS_OFFLINE bit in the PR_STATUS_CODE property.

  • PR_REMOTE_VALIDATE_OK (PidTagRemoteValidateOk) プロパティを TRUE に設定します。Set the PR_REMOTE_VALIDATE_OK (PidTagRemoteValidateOk) property to TRUE.

  • ユーザーに、トランスポート プロバイダーの状態を示す文字列をPR_STATUS_STRING (PidTagStatusString) のプロパティを設定します。Set the PR_STATUS_STRING (PidTagStatusString) property to a string that indicates the transport provider's status to the user.

  • S_OK ��Ԃ��܂��BReturn S_OK. ただし、実行中の操作をキャンセルすることはできません、 ValidateStateは MAPI_E_BUSY を返す必要があります。However, if the operation in progress cannot be canceled, ValidateState should return MAPI_E_BUSY.

FORCE_XP_CONNECTFORCE_XP_CONNECT

リモート トランスポート プロバイダーは、 IXPLogon::FlushQueuesメソッドに関連する MAPI スプーラー トランスポートの操作のコンテキストの外部からの共有リソース (たとえば、モデムまたは COM ポート) への接続を確立する必要があることはありません。A remote transport provider should never establish a connection to a shared resource (for example, a modem or COM port) outside the context of the MAPI spooler-transport interaction involved in the IXPLogon::FlushQueues method. ValidateStateはこのフラグを使って呼び出されると、トランスポート プロバイダーが次の操作にする必要があります。If ValidateState is called with this flag, your transport provider should do the following:

  • IXPLogon::FlushQueuesメソッドが呼び出されたときに、リモート接続を確立する必要があることを示す内部フラグを設定します。Set an internal status flag to indicate that the remote connection must be established when the IXPLogon::FlushQueues method is called.

  • MAPI スプーラー キュー プロセスのフラッシュを開始するのには、状態テーブルに正しい値を設定します。Set the correct values in the status table to cause the MAPI spooler to initiate the queue flushing process.

  • キューのフラッシュが完了すると、共有リソースを解放します。When flushing of queues is complete, release the shared resource.

  • STATUS_OFFLINE のPR_STATUS_CODEプロパティ内のビットをオフにします。Clear the STATUS_OFFLINE bit in the PR_STATUS_CODE property.

  • S_OK ��Ԃ��܂��BReturn S_OK.

FORCE_XP_DISCONNECTFORCE_XP_DISCONNECT

リモート トランスポート プロバイダーは、メッセージング システムのリソースへの接続を解放する必要があります。The remote transport provider should release its connection to the messaging system resources. その後で、 PR_STATUS_CODEプロパティに STATUS_OFFLINE ビットを設定する必要があります、S_OK を返します。After doing this, it should set the STATUS_OFFLINE bit in the PR_STATUS_CODE property and return S_OK.

PROCESS_XP_HEADER_CACHEPROCESS_XP_HEADER_CACHE

リモート トランスポート プロバイダーは、必要がありますリモートのメッセージを処理し、保留されているすべてのメッセージをアップロードします。The remote transport provider should process remote messages and upload any messages that have been deferred. これを行うには、トランスポート プロバイダーは、ログオン オブジェクトの [状態] 行に次のプロパティ値を設定する必要があります。To do this, the transport provider must set the following property values in the logon object's status row:

  • ユーザーに、トランスポート プロバイダーの状態を示す文字列をPR_STATUS_STRINGプロパティを設定します。Set the PR_STATUS_STRING property to a string that indicates the transport provider's status to the user.

  • [ PR_STATUS_CODE ] プロパティには、STATUS_OUTBOUND_ENABLED と STATUS_OUTBOUND_ACTIVE のビットを設定します。Set the STATUS_OUTBOUND_ENABLED and STATUS_OUTBOUND_ACTIVE bits in the PR_STATUS_CODE property.

  • False を指定するトランスポート プロバイダーの状態の行のPR_REMOTE_VALIDATE_OKプロパティを設定します。Set the PR_REMOTE_VALIDATE_OK property in the transport provider's status row to FALSE.

  • (ヘッダーをダウンロードするには) などの進行中の別の操作の場合ValidateStateが呼び出されると、 ValidateStateは MAPI_E_BUSY を返す必要があります。If another operation is in progress (such as downloading headers) when ValidateState is called, ValidateState should return MAPI_E_BUSY.

  • Microsoft Exchange クライアントの要件を満たすために、同様に、REFRESH_XP_HEADER_CACHE フラグを処理するためのコードを実行します。Execute the code for processing the REFRESH_XP_HEADER_CACHE flag, as well, to satisfy requirements of the Microsoft Exchange client.

REFRESH_XP_HEADER_CACHEREFRESH_XP_HEADER_CACHE

リモート トランスポート プロバイダーは、メッセージング システムから新しいメッセージ ヘッダーを取得する必要があります。The remote transport provider should retrieve any new message headers from the messaging system. これを行うには、トランスポート プロバイダーは次の操作を行う必要があります。To do this, the transport provider must do the following:

  • ユーザーに、トランスポート プロバイダーの状態を示す文字列をPR_STATUS_STRINGプロパティを設定します。Set the PR_STATUS_STRING property to a string that indicates the transport provider's status to the user.

  • [ PR_STATUS_CODE ] プロパティには、STATUS_INBOUND_ENABLED と STATUS_INBOUND_ACTIVE のビットを設定します。Set the STATUS_INBOUND_ENABLED and STATUS_INBOUND_ACTIVE bits in the PR_STATUS_CODE property.

  • STATUS_OFFLINE のPR_STATUS_CODEプロパティ内のビットをオフにします。Clear the STATUS_OFFLINE bit in the PR_STATUS_CODE property.

  • STATUS_ONLINE のPR_STATUS_CODEプロパティ内のビットを設定します。Set the STATUS_ONLINE bit in the PR_STATUS_CODE property.

  • False を指定するトランスポート プロバイダーの状態の行のPR_REMOTE_VALIDATE_OKプロパティを設定します。Set the PR_REMOTE_VALIDATE_OK property in the transport provider's status row to FALSE.

SHOW_XP_SESSION_UISHOW_XP_SESSION_UI

トランスポート プロバイダーは、メッセージのダウンロードを確認するダイアログ ボックス) など、メッセージのヘッダーを処理するためのユーザー インターフェイスの任意の部分には、そのダイアログ ボックスが表示されます。If your transport provider has any pieces of user interface for processing the message headers (such as a dialog box that confirms the downloading of messages), that dialog box should be displayed. それ以外の場合、 ValidateStateは、MAPI_E_NO_SUPPORT を返すことができます。Otherwise, ValidateState can return MAPI_E_NO_SUPPORT.

これら以外のすべてのフラグが渡されると、 ValidateStateは MAPI_E_UNKNOWN_FLAGS を返す必要があります。If any flags other than these are passed in, ValidateState should return MAPI_E_UNKNOWN_FLAGS.

トランスポート プロバイダーは、クライアントの呼び出しは、 IMAPIStatus::ValidateStateメソッドになります。The client's call to the transport provider will often be to the IMAPIStatus::ValidateState method. ValidateStateの処理中にトランスポート プロバイダーは、モデムまたは COM ポートなど、限られたシステム リソースの割り当てすべてのアクションを行わないでください。During the processing of ValidateState, the transport provider should not perform any actions that allocate scarce system resources, such as a modem or COM port. これは、MAPI スプーラーは、トランスポート プロバイダーを 1 つ以上のキューをフラッシュする必要がありますので。This is because the MAPI spooler will sometimes need to flush queues on more than one transport provider. ただし、クライアントは、いつでも任意のトランスポート プロバイダーのValidateStateメソッドを呼び出すことができます。However, the client can call any transport provider's ValidateState method at any time. トランスポート プロバイダーは、 ValidateStateの処理中に貴重なリソースを割り当てるしようとする場合、エラーは発生する MAPI スプーラーのキューをフラッシュするように指示する別のトランスポート プロバイダーとの競合が発生したためです。If your transport provider attempts to allocate a scarce resource during the processing of ValidateState, an error can result due to conflict with another transport provider that the MAPI spooler has instructed to flush its queues. MAPI スプーラーの指示の下で発生するすべての貴重なリソースの割り当てを許可する場合は、このような競合を回避できます。If you allow all scarce resource allocations to occur under the direction of the MAPI spooler, you can avoid such conflicts. トランスポート プロバイダーは、クライアント アプリケーションは、トランスポート プロバイダーは、ビジー状態または待機操作を実行するのには、MAPI スプーラーを無効にするときを検出できるようにPR_REMOTE_VALIDATE_OKプロパティをサポートする必要があります。Your transport provider should support the PR_REMOTE_VALIDATE_OK property so client applications can detect when your transport provider is busy or waiting for the MAPI spooler to initiate an action.

呼び出し側への注意Notes to callers

なる可能性がある時間のかかる他の呼び出しはこのメソッドが原因で発生するため、 ValidateStateは、このメソッドが別の操作が完了するの待っていることを通知するために MAPI_E_BUSY を返すことができます。Because this method can cause other potentially lengthy calls to be made, ValidateState can return MAPI_E_BUSY to inform you that this method is waiting for the completion of another operation. 別のタスクを実行する前に保留中の操作が完了するまでを待機する必要があります。You should wait until the pending operation is complete before attempting another task.

プロバイダーの状態のオブジェクトを転送するのには、呼び出しを細かく制御があります。You have the most control over your calls to transport provider status objects. ValidateStateトランスポート プロバイダーの操作に影響を与えるには、1 つまたは複数のフラグを渡すことができます。You can pass one or more flags to ValidateState that affect the transport provider's operations. たとえば、ABORT_XP_HEADER_OPERATION フラグは、ユーザーが検証をキャンセルすることを示します。For example, the ABORT_XP_HEADER_OPERATION flag indicates that the user canceled the validation. トランスポート プロバイダーは、MAPI_E_USER_CANCELED を返すことを中止するには決定できますか、続けることができます。Transport providers can decide to abort, returning MAPI_E_USER_CANCELED, or can continue.

構成オプションが変更されたことを示すためにサービス ・ プロバイダーの状態オブジェクト、または MAPI スプーラーへの呼び出しには、CONFIG_CHANGED フラグを設定できます。You can set the CONFIG_CHANGED flag on a call to either the status object of a service provider or the MAPI spooler to indicate that a configuration option has been changed. トランスポート プロバイダーを動的に再構成するのに CONFIG_CHANGED を使用することができます。You can use CONFIG_CHANGED to dynamically reconfigure a transport provider. サービス プロバイダーの状態のオブジェクトへの呼び出しに CONFIG_CHANGED を設定すると、プロバイダーは、MAPI スプーラーを無効に変更を通知するIMAPISupport::SpoolerNotifyへの呼び出しに応答します。When you set CONFIG_CHANGED on a call to a service provider's status object, the provider responds with a call to IMAPISupport::SpoolerNotify to alert the MAPI spooler of the change. MAPI スプーラーを無効の状態のオブジェクトへの呼び出しに CONFIG_CHANGED を設定すると、スプーラーは、アクティブなトランスポート プロバイダーごとにIXPLogon::AddressTypesを呼び出します。When you set CONFIG_CHANGED on a call to the MAPI spooler's status object, the spooler calls IXPLogon::AddressTypes for each active transport provider. AddressTypesは、トランスポートのサポートされているアドレスの種類の MAPI スプーラーに通知します。AddressTypes informs the MAPI spooler of a transport's supported address types. サービス プロバイダーによっては、検証の時間がかかるが予想される場合にも、進行状況インジケーターを表示します。Some service providers also display a progress indicator if the validation is expected to take a long time. 進行状況のインジケーターを表示するが役に立つ、必須ではありません。Displaying a progress indicator is helpful, but not required.

SUPPRESS_UI フラグを設定すると、プロパティ シートの構成や進行状況ダイアログ ボックスを表示できます。When the SUPPRESS_UI flag is set, none of the configuration property sheets or progress dialog boxes can be displayed.

関連項目See also