次の方法で共有


IDirectPlay8Client::CancelAsyncOperation メソッド

IDirectPlay8Client::CancelAsyncOperation メソッド

非同期の要求を取り消す。

構文

HRESULT CancelAsyncOperation(      
    const DPNHANDLE hAsyncHandle,
    const DWORD dwFlags
);

パラメータ

  • hAsyncHandle
    [in] 停止する非同期処理のハンドル。このハンドルは、非同期の処理をサポートするメソッドを呼び出したときに受け取る。すべての要求または特定の種類の非同期要求を停止するには、この値を NULL にする。 特定のハンドルが指定されている場合、dwFlags パラメータは 0 に設定する必要がある。DPNCANCEL_PLAYER_SENDS フラグの 1 つを dwFlags パラメータに指定した場合、hAsyncHandle は 0 に設定し、サーバーへの未処理の呼び出しをすべて取り消す必要がある。
  • dwFlags
    [in] 取り消す非同期要求を指定するフラグ。次のいずれかのフラグを設定できる。
    • DPNCANCEL_ENUM
      すべての非同期 IDirectPlay8Client::EnumHosts 要求を取り消す。IDirectPlay8Client::EnumHosts メソッドから返されるハンドルを指定することによって、単一の IDirectPlay8Client::EnumHosts 要求を取り消すことができる。
    • DPNCANCEL_CONNECT
      非同期 IDirectPlay8Client::Connect 要求を取り消す。
    • DPNCANCEL_SEND
      非同期 IDirectPlay8Client::Send 要求を取り消す。
    • DPNCANCEL_PLAYER_SENDS
      すべての非同期 IDirectPlay8Client::Send 要求を取り消す。
    • DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW
      優先順位の低い非同期 IDirectPlay8Client::Send 要求を取り消す。
    • DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL
      通常の優先順位の非同期 IDirectPlay8Client::Send 要求を取り消す。
    • DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH
      優先順位の高い非同期 IDirectPlay8Client::Send 要求を取り消す。
    • DPNCANCEL_ALL_OPERATIONS
      すべての非同期要求を取り消す。

戻り値

成功した場合は S_OK を返し、失敗した場合は次のいずれかのエラー値を返す。

DPNERR_CANNOTCANCEL 処理を取り消すことができなかった。
DPNERR_INVALIDFLAGS このメソッドに渡されたフラグは無効である。
DPNERR_INVALIDHANDLE 指定されたハンドルは無効である。
DPNSUCCESS_PENDING 非同期処理で、キューへの設定が成功するところまで処理が進んだ。

注意

デフォルトでは、IDirectPlay8Client インターフェイスの多くのメソッドが非同期に実行される。状況に応じて、要求が処理される前にその要求を取り消したい場合もある。このインターフェイスで非同期に実行できるメソッドはすべて、hAsyncHandle パラメータを返す。

要求の hAsyncHandle をこのメソッドの hAsyncHandle パラメータに渡すことによって、特定の要求が取り消される。このメソッドを呼び出し、hAsyncHandle パラメータに NULL を、dwFlags パラメータに DPNCANCEL_ALL_OPERATIONS を指定することによって、待機中のすべての非同期処理を取り消すことができる。特定のハンドルがこのメソッドに指定された場合は、いずれのフラグも設定してはならない。

このメソッドを使って、IDirectPlay8Client::ConnectIDirectPlay8Client::Send、および IDirectPlay8Client::EnumHosts メソッドの非同期処理を取り消すことができる。Microsoft® DirectPlay® は、他の非同期処理の取り消しをサポートしていない。

IDirectPlay8Client::Send メソッドから返されたハンドルを指定すると、送信を取り消すことができる。その場合も、DPN_MSGID_SEND_COMPLETE システム メッセージは、DPNSEND_NOCOMPLETE フラグを設定せずに送信された非同期送信要求ごとに、アプリケーション メッセージ ハンドラに送信される。このメソッドで取り消された送信は、DPN_MSGID_SEND_COMPLETE メッセージの hResultCode メンバに DPNERR_USERCANCEL を返す。

dwFlags に DPNCANCEL_ALL_OPERATIONS、DPNCANCEL_CONNECT、DPNCANCEL_SEND、または DPNCANCEL_ENUM のフラグを設定した場合、DirectPlay はすべての一致する処理を取り消そうとする。このメソッドは、取り消しに失敗した処理がある場合、一部の取り消しが成功していてもエラーを返す。

  このメソッドが値を返すまで、完了メッセージは到着しない場合がある。DPN_MSGID_SEND_COMPLETEDPN_MSGID_CONNECT_COMPLETE、または DPN_MSGID_ASYNC_OP_COMPLETE メッセージを受け取るまで、処理が終了したと見なしてはならない。