次の方法で共有


IDirectPlay8ThreadPool::DoWork メソッド

IDirectPlay8ThreadPool::DoWork メソッド

現在スケジュールされている作業を実行する。

構文

HRESULT DoWork(      
    const DWORD dwAllowedTimeSlice,
    const DWORD dwFlags
);

パラメータ

  • dwAllowedTimeSlice
    [in] 作業が完了するまでに利用できる時間を指定する。すぐに利用可能な項目をすべて実行できるようにするには、INFINITE に設定する。
  • dwFlags
    [in] 予約済み。0 でなければならない。

戻り値

追加作業がすぐに利用できない場合は DPN_OK を返す。dwAllowedTimeSlice が INFINITE に設定しておらず、未処理の作業項目を残して指定した時間が過ぎた場合、DPNSUCCESS_PENDING が返される。それ以外の場合、次のいずれかのエラーを返す。

DPNERR_UNINITIALIZED 要求されたオブジェクトが初期化されていない。
DPNERR_INVALIDFLAGS このメソッドに渡されたフラグは無効である。
DPNERR_NOTREADY オブジェクトを使う準備ができていない。
DPNERR_NOTALLOWED この機能は、このオブジェクトでは許可されていない。

注意

このメソッドを使うと、Microsoft® DirectPlay® は独自のスレッドなしに動作できる。タイムクリティカルな処理がほぼ正確に実行できるように、一定間隔でこのメソッドを呼び出すことが求められている。

dwAllowedTimeSlice パラメータは 0 ~ 60,000 ミリ秒 (1 秒) に設定する必要がある。また、INFINITE に設定することもできる。0 に設定した場合、作業項目は 1 つまでしか実行されない。

スレッド数が 0 に設定されている場合、このメソッドは呼び出せない。現在アクティブなスレッドがある場合、このメソッドは DPNERR_NOTREADY を返す。

複数のスレッドが同時に、再帰的に、または DirectPlay コールバック内でこのメソッドを呼び出そうとした場合、DPNERR_NOTALLOWED が返される。