次の方法で共有


パススルー モード

LINEBEARERMODE_PASSTHROUGHで呼び出しがアクティブな場合、サービス プロバイダーは、アプリケーションによる制御のために接続されているハードウェアに直接アクセスできます。 アプリケーションでは、このモードを使用して、 通信機能を介してアクセスされる非同期モデムを一時的に直接制御できます。これは、サービス プロバイダーでサポートされていない特別な機能 (facsimile (クラス 1、2 など) を構成または使用する目的で行われます。 このベアラー モードは、ユニバーサル モデム ドライバー (UNIMODEM) サービス プロバイダーによってサポートされています。

LINEBEARERMODE_PASSTHROUGHをサポートするサービス プロバイダーは、LINEDEVCAPS 構造体の dwBearerModes メンバーでそれを示します。 LINEBEARERMODE_PASSTHROUGHが示されると、Unimodem サービス プロバイダーは、LINEDEVCAPS 構造体の DevSpecific 領域にも、回線デバイスに関連付けられているモデムに関するデータにアクセスするために使用されるレジストリ キーを次の形式で含めます。

struct {
    DWORD dwContents;   // Set to 1 (indicates containing key).
    DWORD dwKeyOffset;  // Offset to key from start of this
                        // structure (not from start of
                        // LINEDEVCAPS structure).
                        // 8 in this case. 
    BYTE rgby[...];     // Place that contains null-terminated
                        // registry key. 
}

次に例を示します。

    00000001 00000008 74737953 435c6d65  ........System\C
    65727275 6f43746e 6f72746e 7465536c  urrentControlSet
    7265535c 65636976 6c435c73 5c737361  urrentControlSet
    65646f4d 30305c6d xx003030 xxxxxxxx  Modem\0000.

このレジストリ キーは、 RegOpenKey 関数を使用して開くことができます。

パススルー モードは、lpCallParams パラメーターが指す LINECALLPARAMS 構造体の dwBearerMode メンバーにLINEBEARERMODE_PASSTHROUGH ビットを設定することで、lineMakeCall 関数を使用して最も頻繁に呼び出されます。 これが完了すると、サービス プロバイダーはモデムへのシリアル ポートを開き、すぐに呼び出しを LINECALLSTATE_CONNECTEDに入れます。 その後、アプリケーションは、デバイス クラス "comm/datamodem" と共に lineGetID 関数を使用して、comm ポートの読み取りと書き込みを行う開いているファイル ハンドルを取得できます。

パススルー モードは、着信呼び出しに応答して呼び出すこともできます。 通常、アプリケーションは、呼び出しが応答される前に、呼び出し がLINECALLSTATE_OFFERING中にパススルー モードを呼び出します。 アプリケーションは、lineAnswer を呼び出す代わりに lineSetCallParams を呼び出し、dwBearerMode パラメーターとして LINEBEARERMODE_PASSTHROUGHを渡します。 これが行われると、 lineMakeCall と同様に、呼び出しはすぐにサービス プロバイダーによって LINECALLSTATE_CONNECTED に配置され、アプリケーションは lineGetID を使用して開いているポートへのハンドルを取得できます。 lineSetCallParams 関数は、呼び出しがLINECALLSTATE_OFFERING、LINECALLSTATE_ACCEPTED、またはLINECALLSTATE_CONNECTEDのときに呼び出すことができます。

パススルー モードは通常、lineMakeCall から取得した呼び出しハンドルの lineDrop を呼び出すか、呼び出しが着信呼び出しの場合は最初のLINE_CALLSTATE メッセージを呼び出すことによって終了します。 サービス プロバイダーはポートを閉じ、モデムを既定の状態に復元します。 アプリケーションは、lineGetID から受信したハンドルで CloseHandle を呼び出す必要があります。

パススルー モードは、dwBearerMode パラメーターを LINEBEARERMODE_VOICE に設定して lineSetCallParams を呼び出すことで終了することもできます。 lineSetMediaMode によって設定されたメディアの種類 (モード) は、有効であると想定されます。 LINEMEDIAMODE_DATAMODEMがアクティブな場合、サービス プロバイダーは、既に進行中のデータ モデム呼び出しであるかのように呼び出しを引き継ぐ。lineDrop が後で呼び出された場合、サービス プロバイダーは適切なモデム コマンドまたはインターフェイス状態の変更を発行してデータ呼び出しを削除します。

注意

呼び出しの進行中にパススルー モードが終了した場合、回線の TAPI サービス プロバイダー (TSP) によってモデム設定が既定の状態に復元される可能性があります。 Unimodem は、パススルー モードを終了するときに常にモデム設定を復元する TSP の例です。 このため、パススルー モードをデバイスを構成する方法として使用することはできません。 パススルー モードは、パススルーが終了したときに完了と見なすことができる個別のアクティビティにのみ使用する必要があります。 パススルー モードを使用できるアクティビティの例としては、FAX の送信や、独自のモデム プロトコルを介したウェーブ/オーディオ データの再生などがあります。