<Return[A]><Top>

acmDriverPriority

Declare Function Api_acmDriverPriority& Lib "msacm32" Alias "acmDriverPriority" (ByVal hadid&, ByVal dwPriority&, ByVal fdwPriority&)

Declare Function acmDriverPriority Lib "msacm32" (ByVal hadid As Long, ByVal dwPriority As Long, ByVal fdwPriority As Long) As Long

ACM ドライバの優先順位および状態を変更する。

パラメータ

hadid
    インストールされた ACM ドライバのドライバ識別子のハンドルを指定する。ACM_DRIVERPRIORITYF_BEGIN フラグと

    ACM_DRIVERPRIORITYF_END フラグが指定されている場合は、このパラメータは NULL に指定する。
dwPriority
    グローバル ACM ドライバ識別子の新しい優先順位を指定する。0 を指定すると、ドライバ識別子の優先順位は変更されない。1 を指定す

    ると、そのドライバの検索優先順位が最も高くなる。-1 を指定すると、そのドライバの検索優先順位が最も低くなる。優先順位は、グロー

    バル ACM ドライバに対してのみ使う。
fdwPriority
    ACM ドライバの優先順位を設定するためのフラグを設定する。次の値が定義されている。
    ACM_DRIVERPRIORITYF_BEGIN
        変更通知ブロードキャストは延期される。アプリケーションは、ACM_DRIVERPRIORITYF_END フラグをセットして、できるだけ速やかに

        通知ブロードキャストを再開しなければならない。設定できるのは ACM_DRIVERPRIORITYF_BEGIN フラグのみで、hadid パラメータ

        には NULL、dwPriority パラメータには 0 を指定しなければならない。
    ACM_DRIVERPRIORITYF_DISABLE
        現在有効な ACM ドライバを無効にする。ドライバが無効なときは変更されない。
    ACM_DRIVERPRIORITYF_ENABLE
        現在無効な ACM ドライバを有効にする。ドライバが有効なときは変更されない。
    ACM_DRIVERPRIORITYF_END
        呼び出しタスクは変更通知ブロードキャストの再開を要求する。ACM_DRIVERPRIORITYF_BEGIN フラグを設定して

        acmDrivePriority 関数が成功すると、その都度 ACM_DRIVERPRIORITYF_END フラグを設定して acmDriverPriority 関数を呼び

        出さなければならない。このとき、hadid パラメータには NULL、dwPriority パラメータには 0 が指定されていなければならない。また、

        fdwPriority パラメータに設定できるのは、ACM_DRIVERPRIORITYF_END フラグのみである。

戻り値
    関数が成功すると 0 が返る。
    関数が失敗するとエラーが返る。返されるエラー値は次のとおりである。

    値                                                

説明                                                                                                                               

    MMSYSERR_ALLOCATED

遅延したブロードキャストロックは、別のタスクに所有されている。

    MMSYSERR_INVALFLAG

少なくとも 1 つのフラグが無効である。

    MMSYSERR_INVALHANDLE

指定されたハンドルは無効である。

    MMSYSERR_INVALPARAM

少なくとも 1 つのパラメータが無効である。

    MMSYSERR_NOTSUPPORTED

 

 

 

要求された操作は、指定されたドライバではサポートされていない。たとえば、ローカルドライバ識別子および通知ドライバ識別子は優先順位の指定をサポートしない(有効または無効に設定することは可能である)。指定されているのがローカルドライバ識別子および通知ドライバ識別子の場合、dwPriority パラメータに 0 以外の値を指定すると、このエラーが返される。


解説
    グローバルドライバ識別子、ローカルドライバ識別子および通知ドライバ識別子を含む、すべてのドライバ識別子を有効または無効にでき

    る。
    複数のグローバルドライバ識別子を有効または無効にしたり、優先順位を変更する必要がある場合、

    ACM_DRIVERPRIORITYF_BEGIN フラグを使って変更通知ブロードキャストを延期する。ACM_DRIVERPRIORITYF_END フラグが指

    定されると、1 つの変更通知がブロードキャストされる。
    acmMetrics 関数に ACM_METRIC_DRIVER_PRIORITY メトリックインデックスを設定すると、グローバルドライバの現在の優先順位を取

    得できる。ドライバは、acmDriverEnum 関数によって常に優先順位の高い方から低い方に列挙される。
    有効なドライバ識別子はすべて、変更通知を受信する。アプリケーションは、ACM_DRIVERADDF_NOTIFYHWND フラグをセットした

    acmDriverAdd 関数を使って、通知メッセージを登録できる。なお、非グローバルドライバ識別子の変更は、ブロードキャストされない。
    優先順位は、アプリケーションでドライバが指定されていない場合の検索順位に過ぎない。このため、ドライバの優先順位を上げても、ドラ

    イバのパフォーマンスは変わらない。