Microsoft DirectX 8.0 |
基準クロックのスケジューラ。
宣言: Schedule.h
このヘルパー オブジェクトは、基準クロックのアドバイズ要求のリストを維持する。CBaseReferenceClock クラスは、このオブジェクトを使ってアドバイズ要求のスケジューリングを手助けする。クロックは、このオブジェクトを次のように使用する。
ステップ 2 では、イベントが通知済になるか、または待ちのタイムアウトが発生する。イベントが通知済になる場合は、新しい要求がリストの先頭に追加されたことを意味する。ワーカー スレッドは新しいタイムアウト値を計算しなければならない。一方、待ちのタイムアウトが発生する場合は、アドバイズ要求の期限期限が切れており、ディスパッチされなければならないことを意味する。いずれの場合も、ステップ 5 の Advise の呼び出しによって処理が行われる。
Public メソッド | |
---|---|
CAMSchedule | コンストラクタ メソッド。 |
~CAMSchedule | デストラクタ メソッド。仮想。 |
GetAdviseCount | 保留中のアドバイス要求数を取得する。 |
GetNextAdviseTime | 次のアドバイズ要求のタイムを取得する。 |
AddAdvisePacket | 保留中の要求リストにアドバイズ要求を追加する。 |
Unadvise | アドバイズ要求を削除する。 |
Advise | 特定のタイムまたはそれ以前にスケジュールされた、すべての要求をディスパッチする。 |
GetEvent | イベント ハンドルを取得する。これは、次のアドバイズ タイムの変更を通知するために使われる。 |
新しい保留中の通知を作成し、アドバイズ通知リストに追加する。
構文
DWORD AddAdvisePacket( const REFERENCE_TIME& time1, const REFERENCE_TIME& time2, HANDLE hNotify, BOOL bPeriodic );
パラメータ
- time1
- アドバイズの要求タイム。
- time2
- 周期的なアドバイズ要求での通知の間隔。bPeriodic が FALSE の場合、このパラメータは無視される。
- hNotify
- bPeriodic が TRUE の場合はセマフォ ハンドル。bPeriodic が FALSE の場合はイベント ハンドル。
- bPeriodic
- 周期的な通知を追加するか、単発の通知を追加するかを指定するブール値。TRUE の場合、通知は周期的になる。time2 パラメータによって、通知の間隔が指定される。FALSE の場合、通知は単発で発生する。
戻り値
アドバイズ要求の識別子 (Cookie) を返す。メソッドが失敗した場合、戻り値は 0 になる。
特定のタイムまたはそれ以前にスケジュールされた、すべての要求をディスパッチする。
構文
REFERENCE_TIME Advise( const REFERENCE_TIME& rtTime );
パラメータ
- rtTime
- 現在の基準タイムを指定する値。
戻り値
次にスケジュールされたアドバイズ要求の基準タイムを返す。アドバイズがない場合は MAX_TIME を返す。
注意
クロックがこのメソッドを呼び出す際に、現在の基準タイムを指定する。スケジューラは、有効期限が切れたアドバイズを判定し、それらをディスパッチする。単発要求の有効期限が切れた場合、スケジューラはその要求を削除する。周期的な要求の有効期限が切れた場合、スケジューラは次のアドバイズ タイムにそれらを再スケジュールする。このメソッドは、保留中の次の要求のタイムを返す。アドバイズ要求をディスパッチするため、スケジューラは、AddAdvisePacket メソッドの hNotify パラメータに指定されたイベントまたはセマフォを通知する。
コンストラクタ メソッド。
構文
CAMSchedule( HANDLE hEvent );
パラメータ
- hEvent
- 自動リセット イベントへのハンドル。
デストラクタ メソッド。
構文
~CAMSchedule(void);
未処理のアドバイス要求の数を取得する。
構文
DWORD GetAdviseCount(void);
戻り値
未処理のイベントの数を返す。
アドバイズ タイムが再評価を必要とする場合に、設定するイベント ハンドルを取得する。
構文
HANDLE GetEvent(void);
戻り値
このオブジェクトのアドバイズ タイムが再評価を必要とする場合に、設定するイベントへのハンドルを返す。
次のアドバイズのタイムをチェックする。
構文
REFERENCE_TIME GetNextAdviseTime(void);
戻り値
次のアドバイズが設定されている基準タイムを返す。イベントがスケジュールされていない場合は MAX_TIME を返す。
アドバイズ リクエストを削除する。
構文
HRESULT Unadvise( DWORD dwAdviseCookie );
パラメータ
- dwAdviseCookie
- アドバイズ リクエストの識別子。この値は、AddAdvisePacket メソッドによって返される。
戻り値
以下の表にある HRESULT 値の 1 つを返す。
S_FALSE 見つけられない S_OK 成功