(57)【要約】  本開示の特定の態様は、仮想媒体リダイレクトを実施する方法に関する。方法は、（ａ）ベースボード管理コントローラ（ＢＭＣ）のウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、ＢＭＣはホストコンピュータの管理機能を実施する、ことと、（ｂ）ＢＭＣにおいて、ホストコンピュータ向けに仮想媒体をエミュレートすることと、（ｃ）ＢＭＣにおいて、ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第１のファイルを指定する、ことと、（ｄ）読み出しコマンドに応答して、ＢＭＣにおいて、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第１のファイルを求める要求を送信することと、（ｅ）ウェブサーバにおいて、ブラウザプログラムからウェブソケット接続を通じて第１のファイルを受信することを含む。【選択図】  図１
2016517070.tif 000002
【特許請求の範囲】
【請求項１】
仮想媒体リダイレクトを実施する方法であって、
ベースボード管理コントローラ（ＢＭＣ）のウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、前記ＢＭＣはホストコンピュータの管理機能を実施する、ことと、
前記ＢＭＣにおいて、前記ホストコンピュータ向けに仮想媒体をエミュレートすることと、
前記ＢＭＣにおいて、前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第１のファイルを指定する、ことと、
前記読み出しコマンドに応答して、前記ＢＭＣにおいて、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第１のファイルを求める要求を送信することと、
前記ウェブサーバにおいて、前記ブラウザプログラムから前記ウェブソケット接続を通じて前記第１のファイルを受信することを含む、方法。
【請求項２】
前記ＢＭＣのウェブ・ソケット・モジュールにおいて、前記コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、
前記ＢＭＣの前記ウェブ・ソケット・モジュールによって、前記ウェブソケット接続を確立するために、前記ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、前記コンピューティングデバイスの前記ウェブ・ソケット・モジュールに送信し返すことを含む、請求項１に記載の方法。
【請求項３】
前記ＢＭＣの前記ウェブサーバにおいて、リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ウェブサーバにおいて、前記ブラウザプログラムに前記リダイレクトウェブページを送信することを含む、請求項１に記載の方法。
【請求項４】
前記リダイレクトウェブページは、前記ブラウザプログラムに、
前記要求に従って前記記憶装置から前記第１のファイルを取り出すことと、
前記ウェブソケット接続を通じて前記ウェブサーバに前記第１のファイルを送信することを行うよう命令するようにプログラムされている、請求項３に記載の方法。
【請求項５】
前記方法は、前記ウェブサーバにおいて、ブラウザプログラムにｊａｖａオブジェクトを送信することを含み、前記ｊａｖａオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記ｊａｖａオブジェクトは、Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記ｊａｖａオブジェクトをダウンロードするよう命令するようにプログラムされている、請求項３に記載の方法。
【請求項６】
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内のＩＳＯイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、前記第１のファイルは前記ＩＳＯイメージ内に位置する、請求項３に記載の方法。
【請求項７】
前記記憶装置は、前記コンピューティングデバイスの外部の記憶装置である、請求項３に記載の方法。
【請求項８】
前記リダイレクトページは、前記ブラウザプログラムに、前記ウェブソケット接続を通じて前記ウェブサーバに、前記記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている、請求項３に記載の方法。
【請求項９】
前記ＢＭＣによってエミュレートされる前記仮想媒体が前記ホストコンピュータに対して、入出力（Ｉ／Ｏ）ポートを通じてアクセス可能であるように、前記ＢＭＣを、前記ホストコンピュータの前記Ｉ／Ｏポートに接続することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記Ｉ／ＯポートはＵＳＢポートである、請求項８に記載の方法。
【請求項１１】
前記ウェブソケット接続は安全なウェブソケット接続である、請求項１に記載の方法。
【請求項１２】
ベースボード管理コントローラ（ＢＭＣ）であって、
前記ＢＭＣと、ネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立し、
前記ブラウザプログラムから前記ウェブソケット接続を通じて第１のファイルを受信するように構成されている、ウェブサーバと、
前記ホストコンピュータ向けに仮想媒体をエミュレートし、
前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第１のファイルを指定する、ことと、前記読み出しコマンドに応答して、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第１のファイルを求める要求を送信することとを行うように構成されている、リダイレクトモジュールとを備え、
前記ＢＭＣは、ホストコンピュータの管理機能を実施する、ＢＭＣ。
【請求項１３】
前記ウェブサーバは、
リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ブラウザプログラムに前記リダイレクトウェブページを送信することを行うように構成されており、
前記ウェブサーバは、前記ブラウザプログラムにｊａｖａオブジェクトを送信するように構成されており、前記ｊａｖａオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記ｊａｖａオブジェクトは、Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記ｊａｖａオブジェクトをダウンロードするよう命令するようにプログラムされており、
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内の選択される媒体のファイルシステム構造またはファイルを、前記ウェブソケット接続を通じて前記ウェブサーバに送信するよう命令するようにプログラムされている、請求項１２に記載のＢＭＣ。
【請求項１４】
コンピュータ実行可能命令が記憶されている持続性コンピュータ記憶媒体であって、ベースボード管理コントローラ（ＢＭＣ）のプロセッサによって実行されると、前記コンピュータ実行可能命令は、前記プロセッサに、
前記ＢＭＣのウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、前記ＢＭＣはホストコンピュータの管理機能を実施する、ことと、
前記ホストコンピュータ向けに仮想媒体をエミュレートすることと、
前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第１のファイルを指定する、ことと、
前記読み出しコマンドに応答して、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第１のファイルを求める要求を送信することと、
前記ウェブサーバにおいて、前記ブラウザプログラムから前記ウェブソケット接続を通じて前記第１のファイルを受信することを実行させる、持続性コンピュータ記憶媒体。
【請求項１５】
前記ＢＭＣのプロセッサによって実行されると、前記プロセッサに
前記ＢＭＣのウェブ・ソケット・モジュールにおいて、前記コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、
前記ＢＭＣの前記ウェブ・ソケット・モジュールにおいて、前記ウェブソケット接続を確立するために、前記ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、前記コンピューティングデバイスの前記ウェブ・ソケット・モジュールに送信し返すことを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項１４に記載の持続性コンピュータ記憶媒体。
【請求項１６】
前記ＢＭＣの前記プロセッサによって実行されると、前記プロセッサに、
前記ウェブサーバにおいて、リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ウェブサーバにおいて、前記ブラウザプログラムに前記リダイレクトウェブページを送信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項１４に記載の持続性コンピュータ記憶媒体。
【請求項１７】
前記リダイレクトウェブページは、前記ブラウザプログラムに、
前記要求に従って前記記憶装置から前記第１のファイルを取り出すことと、
前記ウェブソケット接続を通じて前記ウェブサーバに前記第１のファイルを送信することを行うよう命令するようにプログラムされている、請求項１６に記載の持続性コンピュータ記憶媒体。
【請求項１８】
前記持続性コンピュータ記憶媒体は、ＢＭＣのプロセッサによって実行されると、前記プロセッサに、前記ウェブサーバにおいて、ブラウザプログラムにｊａｖａオブジェクトを送信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含み、前記ｊａｖａオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記ｊａｖａオブジェクトは、Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記ｊａｖａオブジェクトをダウンロードするよう命令するようにプログラムされている、請求項１６に記載の持続性コンピュータ記憶媒体。
【請求項１９】
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内のＩＳＯイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、前記第１のファイルは前記ＩＳＯイメージ内に位置し、
前記記憶装置は、前記コンピューティングデバイスの外部の記憶装置であり、前記リダイレクトページは、前記ブラウザプログラムに、前記ウェブソケット接続を通じて前記ウェブサーバに、前記記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている、請求項１６に記載の持続性コンピュータ記憶媒体。
【請求項２０】
前記ＢＭＣの前記プロセッサによって実行されると、前記プロセッサに、前記ＢＭＣによってエミュレートされる前記仮想媒体が前記ホストコンピュータに対して、入出力（Ｉ／Ｏ）ポートを通じてアクセス可能であるように前記ホストコンピュータの前記Ｉ／Ｏポートと通信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項１４に記載の持続性コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連特許出願の相互参照）
本ＰＣＴ出願は、２０１３年３月１５日付けで提出された「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＯＦ  ＷＥＢ−ＢＡＳＥＤ  ＶＩＲＴＵＡＬ  ＭＥＤＩＡ  ＲＥＤＩＲＥＣＴＩＯＮ」と題する、Ｓａｎｊｏｙ  Ｍａｉｔｙ、Ｂａｓｋａｒ  Ｐａｒｔｈｉｂａｎ、Ｓａｍｖｉｎｅｓｈ  Ｃｈｒｉｓｔｏｐｈｅｒ、およびＶａｒａｄａｃｈａｒｉ  Ｓｕｄａｎ  Ａｙａｎａｍによる米国特許出願第１３／８４１，２２０号に対する優先権およびその利益を主張する。当該米国特許出願は、参照によりその全体が本明細書に組み込まれる。
本開示は、コンピュータシステムの分野に関し、より詳細には、ホストコンピュータとコンピューティングデバイスとの間でのウェブベースの仮想媒体リダイレクトのシステムおよび方法に関する。
【背景技術】
【０００２】
本明細書において提供される背景技術の説明は、本開示のコンテキストを大まかに提示することを目的とする。この背景技術の節に記載されている範囲における、現在名前を挙げられている発明者らの研究、および、他の様態で出願時点において従来技術とみなされていない場合がある記載の諸態様は、明示的にも黙示的にも、本開示に対する従来技術とは認められない。
【０００３】
概して、「コンピュータシステム」という用語は、独立型システム、または、たとえば、クライアント―サーバネットワークのような複数の相互接続されたシステムを指す。
実施態様にかかわらず、コンピュータシステムを構成する様々な構成要素は、一般的には、性能プロトコルまたは規格によって定義されるパラメータの範囲内で動作する。たとえば、システムが特定の所定温度読み値を超えて上昇する可能性がある期間を検出するために、コンピュータシャーシ内の温度がモニタリングされることが多い。コンピュータシステム内でモニタリングされる場合がある他の形態の情報は、限定ではなく、システムのベースボード上に位置する半導体構成要素と関連付けられる電圧、ベースボード上またはシステムシャーシ内に位置する冷却ファンの速度（たとえば、ｒｐｍ）、および、ハード・ディスク・ドライブまたは光学式ドライブ内のスピンドルモータの速度を含む。
【０００４】
コンピュータシステムおよびその構成部品と関連付けられる動作および性能関連パラメータを検出するために、様々なタイプのセンサが使用されている。上記で与えられた例を参照すると、これらのセンサは、サーモスタット、電圧計および回転速度計を含む。コンピュータシステムは一般的に、１つまたは複数の管理モジュールを利用して、システム内の動作および性能関連パラメータを測定する様々なセンサによって検知される情報の収集および分析を補助する。これらの管理モジュールは、ソフトウェア構成要素またはハードウェア構成要素のいずれであってもよいが、一般的にハードウェアとソフトウェアの両方の構成要素を包含する。１つのそのような管理モジュールが、「ベースボード管理コントローラ」（ＢＭＣ）と称される。ＢＭＣは、コンピュータシステムのマイクロコントローラであり、それを通じて、様々なセンサによって検知される情報がＢＭＣによる分析のために受信される指定数のコンタクトピンを有している。この分析を実施するために、ＢＭＣは、システムモニタリングおよび復元に関連する手順を実施するためのファームウェアをプログラムされている。このファームウェアによって、ＢＭＣは、コンピュータシステム内で検知される様々な動作および性能関連パラメータをモニタリングし、この情報を分析して検知されたパラメータのいずれかが、現在、予測されるまたは推奨される動作範囲外であるか否かを判定するようにプログラムされている。範囲外のパラメータが発生することは、一般的に「イベント」と称される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＢＭＣは、仮想媒体リダイレクトを実施することができる。しかしながら、仮想媒体リダイレクトの実施には、対処されていない需要が存在する。
【課題を解決するための手段】
【０００６】
本開示の特定の態様は、仮想媒体リダイレクトを実施する方法に関する。方法は、（ａ）ベースボード管理コントローラ（ＢＭＣ）のウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、ＢＭＣはホストコンピュータの管理機能を実施する、（ｂ）ＢＭＣにおいて、ホストコンピュータ向けに仮想媒体をエミュレートすることと、（ｃ）ＢＭＣにおいて、ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第１のファイルを指定する、（ｄ）読み出しコマンドに応答して、ＢＭＣにおいて、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第１のファイルを求める要求を送信することと、（ｅ）ウェブサーバにおいて、ブラウザプログラムからウェブソケット接続を通じて第１のファイルを受信することとを含む。
【０００７】
特定の実施形態において、本方法は、（ａ）ＢＭＣのウェブ・ソケット・モジュールにおいて、コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、（ｂ）ＢＭＣのウェブ・ソケット・モジュールによって、ウェブソケット接続を確立するために、ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、コンピューティングデバイスのウェブ・ソケット・モジュールに送信し返すこととを含む。特定の実施形態において、本方法はまた、（ａ）ＢＭＣのウェブサーバにおいて、リダイレクトウェブページを生成することであって、リダイレクトウェブページは、ブラウザプログラムに、コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、（ｂ）ウェブサーバにおいて、ブラウザプログラムにリダイレクトウェブページを送信することも含む。リダイレクトウェブページは、ブラウザプログラムに、（ａ）要求に従って記憶装置から第１のファイルを取り出すことと、（ｂ）ウェブソケット接続を通じてウェブサーバに第１のファイルを送信することとを行うよう命令するようにプログラムされている。
【０００８】
特定の実施形態において、本方法は、ウェブサーバにおいて、ブラウザプログラムにｊａｖａオブジェクトを送信することを含む。ｊａｖａオブジェクトは、ブラウザプログラムが、記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされる。ｊａｖａオブジェクトは、Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ関数を呼び出して記憶装置内のファイルにアクセスするためにコンパイルされる。リダイレクトページは、ブラウザプログラムに、ｊａｖａオブジェクトをダウンロードするよう命令するようにプログラムされている。リダイレクトページは、ブラウザプログラムに、記憶装置内のＩＳＯイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、第１のファイルはＩＳＯイメージ内に位置する。記憶装置は、コンピューティングデバイスの外部の記憶装置である。リダイレクトページは、ブラウザプログラムに、ウェブソケット接続を通じてウェブサーバに、記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている。
【０００９】
特定の実施形態において、本方法は、ＢＭＣによってエミュレートされる仮想媒体がホストコンピュータに対して、入出力（Ｉ／Ｏ）ポートを通じてアクセス可能であるように、ＢＭＣを、ホストコンピュータのＩ／Ｏポートに接続することをさらに含む。特定の実施形態において、Ｉ／ＯポートはＵＳＢポートである。特定の実施形態において、ウェブソケット接続は安全なウェブソケット接続である。
【００１０】
本開示の特定の態様は、ベースボード管理コントローラ（ＢＭＣ）に関する。ＢＭＣは、ＢＭＣと、ネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立し、ブラウザプログラムからウェブソケット接続を通じて第１のファイルを受信するように構成されているウェブサーバを含む。ＢＭＣはまた、ホストコンピュータ向けに仮想媒体をエミュレートすることと、ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第１のファイルを指定する、ことと、読み出しコマンドに応答して、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第１のファイルを求める要求を送信することとを行うように構成されているリダイレクトモジュールをも含む。ＢＭＣは、ホストコンピュータの管理機能を実施する。
【００１１】
本開示の特定の態様は、持続性コンピュータ記憶媒体に関する。持続性コンピュータ記憶媒体は、コンピュータ実行可能命令を記憶している。コンピュータ実行可能命令がベースボード管理コントローラのプロセッサによって実行されると、コンピュータ実行可能命令は、プロセッサに、（ａ）ＢＭＣのウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、ＢＭＣはホストコンピュータの管理機能を実施する、（ｂ）ホストコンピュータ向けに仮想媒体をエミュレートすることと、（ｃ）ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第１のファイルを指定する、（ｄ）読み出しコマンドに応答して、ＢＭＣにおいて、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第１のファイルを求める要求を送信することと、（ｅ）ウェブサーバにおいて、ブラウザプログラムからウェブソケット接続を通じて第１のファイルを受信することとを実行させる。
【００１２】
本開示のさらなる適用可能領域が、以降に与えられる詳細な説明から明らかとなる。詳細な説明および特定の例は、例示のみを目的として意図されており、本開示の範囲を限定するようには意図されていないことが理解されるべきである。
【００１３】
本開示は、詳細な説明および添付の図面からより十分に理解されることとなる。
【図面の簡単な説明】
【００１４】
【図１】本開示の一実施形態によるウェブベースの仮想媒体リダイレクトシステムを概略的に示す図である。
【図２】本開示の一実施形態によるウェブソケット接続を概略的に示す図である。
【図３Ａ】ＧＥＴ命令およびＨＴＴＰ応答を使用するＨＴＴＰ要求の一例を示す図である。
【図３Ｂ】本開示の一実施形態によるウェブ・ソケット・ハンドシェイク要求および応答の例を示す図である。
【図４Ａ】本開示の一実施形態によるウェブベースの仮想媒体リダイレクトを概略的に示す図である。
【図４Ｂ】図４Ａにおけるウェブベースの仮想媒体リダイレクトプロセスを概略的に示す図である。
【図５Ａ】本開示の別の実施形態によるウェブベースの仮想媒体リダイレクトを概略的に示す図である。
【図５Ｂ】図５Ａにおけるウェブベースの仮想媒体リダイレクトプロセスを概略的に示す図である。
【発明を実施するための形態】
【００１５】
本開示は、多数の修正および変形が当業者に明らかになるため例示としてのみ意図されている以下の例により詳細に説明される。ここで、本開示の様々な実施形態を詳細に説明する。図面を参照すると、同様の参照符号がある場合、これらは、図面全体を通じて同様の構成要素を示す。本明細書において、および、添付の特許請求の範囲全体を通じて使用されている場合、「ａ」、「ａｎ」、および「ｔｈｅ」の意味するところは、文脈が明確に別途示していない限り、複数への参照を含む。また、本明細書において、および、添付の特許請求の範囲全体を通じて使用されている場合、「中（ｉｎ）」の意味するところは、文脈が明確に別途示していない限り、「中（ｉｎ）」および「上（ｏｎ）」を含む。さらに、本明細書においては読者の便宜のために表題または副題が使用されている場合があるが、これは本開示の範囲には影響を及ぼさないものとする。加えて、本明細書において使用されているいくつかの用語を、下記により詳細に定義する。
【００１６】
本明細書において使用される用語は概して、本開示の文脈内、および、各用語が使用される特定の文脈において、当該技術分野におけるそれらの一般的な意味を有する。本開示の説明に関して実践者にさらに助言を与えるために、本開示を説明するために使用される特定の用語を、下記に、または本明細書の他の箇所に説明する。便宜のために、特定の用語を、たとえば、斜字体および／または引用符を使用して強調している場合がある。強調が使用されても用語の範囲および意味に影響はなく、用語の範囲および意味は、強調されていようとされていまいと、同じ文脈の中では同じである。同じ物事が２通り以上に表現されている場合がある。したがって、代替的な文言および同義語が本明細書において説明されている用語いずれか１つまたは複数に使用されている場合があり、用語が本明細書において詳述または説明されているか否かにはいかなる特別な重要性もおかれるべきではない。特定の用語の同義語が与えられている。１つまたは複数の同義語の記載は、他の同義語の使用を除外しない。本明細書において説明されている任意の用語の例を含む、本明細書の任意の箇所における例の使用は例示に過ぎず、本開示または任意の説明されている用語の範囲および意味を決して限定するものではない。同様に、本開示は、本明細書において与えられている様々な実施形態には限定されない。
【００１７】
別途定義されていない限り、本明細書において使用されているすべての技術用語および科学用語は、本開示が属する技術分野における当業者によって一般的に理解されているものと同じ意味を有する。不一致がある場合、定義を含め、本明細書が統制する。
【００１８】
本明細書において使用される場合、「前後（ａｒｏｕｎｄ）」、「約（ａｂｏｕｔ）」または「おおよそ（ａｐｐｒｏｘｉｍａｔｅｌｙ）」は、概して、与えられている値または範囲の２０パーセント以内、好ましくは１０パーセント以内、より好ましくは５パーセント以内を意味するものとする。本明細書において与えられている数量は近似であり、つまり、用語「前後（ａｒｏｕｎｄ）」、「約（ａｂｏｕｔ）」または「おおよそ（ａｐｐｒｏｘｉｍａｔｅｌｙ）」は、明示的に述べられていない場合は推測され得る。
【００１９】
本明細書において使用される場合、「複数」は２つ以上を意味する。
【００２０】
本明細書において使用される場合、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「保持する（ｃａｒｒｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｃｏｎｔａｉｎｉｎｇ）」、「含む（ｉｎｖｏｌｖｉｎｇ）」などの用語は、制約がない、すなわち、含むが限定されないことを意味するものとして理解されるべきである。
【００２１】
本明細書において使用される場合、Ａ、Ｂ、およびＣのうちの少なくとも１つという語句は、非排他的論理ＯＲを使用して論理（ＡまたはＢまたはＣ）を意味するものとして解釈されるべきである。方法内の１つまたは複数のステップは、本開示の原理を変更することなく異なる順序で（または同時に）実行されてもよいことが理解されるべきである。
【００２２】
本明細書において使用される場合、モジュールという用語は、特定用途向け集積回路（ＡＳＩＣ）、電子回路、組み合わせ論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、コードを実行するプロセッサ（共有、専用、グループ）、記載されている機能を提供する他の適切なハードウェア構成要素、または、システムオンチップにあるような、上記のいくつかもしくはすべての組み合わせを指す場合があり、それらの一部である場合があり、またはそれらを含む場合がある。モジュールと言う用語は、プロセッサによって実行されるコードを記憶するメモリ（共有、専用、またはグループ）を含み得る。
【００２３】
上記で使用されているものとしてのコードという用語は、ソフトウェア、ファームウェア、および／またはマイクロコードを含む場合があり、プログラム、ルーチン、機能、クラス、および／またはオブジェクトを指す場合がある。上記で使用されているものとしての共有という用語は、複数のモジュールからいくつかのまたはすべてのコードを、単一の（共有）プロセッサを使用して実行することができることを意味する。加えて、複数のモジュールからのいくつかのまたはすべてのコードを、単一の（共有）メモリによって記憶することができる。上記で使用されているものとしてのグループという用語は、単一のモジュールからいくつかのまたはすべてのコードを、プロセッサのグループを使用して実行することができることを意味する。加えて、単一のモジュールからのいくつかのまたはすべてのコードを、メモリのグループを使用することによって記憶することができる。
【００２４】
本明細書に記載されている装置および方法は、１つまたは複数のプロセッサによって実行される１つまたは複数のコンピュータプログラムによって実装することができる。コンピュータプログラムは、持続性有形コンピュータ可読媒体上に記憶されるプロセッサ実行可能命令を含む。コンピュータプログラムはまた、記憶されているデータをも含み得る。持続性有形コンピュータ可読媒体の非限定例は、不揮発性メモリ、磁気記憶装置、および光学式記憶装置である。
【００２５】
ここで、本開示の実施形態が示されている添付の図面を参照して、本開示を以降より十分に説明する。しかしながら、本開示は、多くの異なる形態で具現化されてもよく、本明細書に記載されている実施形態に限定されるものとして解釈されるべきではなく、むしろ、これらの実施形態は、本開示が完全かつ完璧なものになり、本開示の範囲を当業者に完全に伝達するように提供される。同様の参照符号は、全体を通じて同様の要素を指す。
【００２６】
本開示はコンピュータシステムに関する。図面に示されているように、コンピュータ構成要素は、実線のブロックとして図示されている物理ハードウェア構成要素、および、破線のブロックとして図示されている仮想ソフトウェア構成要素を含み得る。別途指示されていない限り、これらのコンピュータ構成要素は、限定ではないが、ソフトウェア、ファームウェアもしくはハードウェア構成要素、またはそれらの組み合わせにおいて実装されてもよいことを、当業者は諒解されよう。
【００２７】
図１は、本開示の一実施形態によるウェブベースの仮想媒体リダイレクトシステムを概略的に示す。図１に示すように、システム１００は、ホストコンピュータ１１０と、ネットワーク１３０を介してホストコンピュータ１１０に接続されているコンピューティングデバイス１４０とを含む。システム１００は、クライアント―サーバネットワークのような、２つ以上の相互接続されたシステムを組み込んでいるシステムであってもよい。ネットワーク１３０は、有線またはワイヤレスネットワークであってもよく、ローカル・エリア・ネットワーク（ＬＡＮ）、または、インターネットを含む広域ネットワーク（ＷＡＮ）のような様々な形態のものであってもよい。
【００２８】
ホストコンピュータ１１０は、汎用コンピュータシステムであってもよい。ホストコンピュータ１１０は、ベースボード１１１、すなわち「マザーボード」を含む。ベースボード１１１は、システムバスまたは他の電気通信経路によって複数の構成要素またはデバイスがそれに接続され得るプリント回路基板である。図１には明示的に示されていないが、ベースボード１１１上の構成要素は相互接続されており、ベースボード１１１上の構成要素のレイアウトおよびベースボード１１１上の構成要素間の相互接続の様態を、本明細書においてはベースボード１１１の構成と称する。ベースボード１１１の構成は、必要な設計または製造要件に従って調整または変更することができることが、当業者には諒解されよう。
【００２９】
ベースボード１１１上の構成要素は、限定ではないが、中央処理装置（ＣＰＵ）１１２と、メモリ１１３と、ベースボード管理コントローラ（ＢＭＣ）１２０と、他の必要とされるメモリおよび入出力（Ｉ／Ｏ）モジュール（図示せず）とを含む。ＣＰＵ１１２、メモリ１１３、およびＢＭＣ１２０は、ベースボード１１１上に組み込まれてもよく、または、インターフェースを通じてベースボード１１１に接続されてもよい。特定の実施形態において、インターフェースは、電気コネクタ、バス、ポート、ケーブル、端子、または他のＩ／Ｏデバイスのような物理ハードウェアインターフェースであってもよい。
【００３０】
ＣＰＵ１１２は、ホストコンピュータ１１０の動作を制御するように構成されているホストプロセッサである。ホストプロセッサは、ホストコンピュータ１１０のオペレーティングシステム（ＯＳ）または他のアプリケーションを実行することができる。いくつかの実施形態において、ホストコンピュータ１１０は、２つのＣＰＵ、４つのＣＰＵ、８つのＣＰＵ、または任意の適切な数のＣＰＵのような、２つ以上のＣＰＵをホストプロセッサとして有してもよい。
【００３１】
メモリ１１３は、ヘッドレスサーバ２００の動作中にデータおよび情報を記憶するための、ランダムアクセスメモリ（ＲＡＭ）のような揮発性メモリとすることができる。
【００３２】
ＢＭＣ１２０とは、システム管理ソフトウェアとプラットフォームハードウェアとの間のインターフェースを管理する専用マイクロコントローラを指す。種々のタイプのセンサをシステム１００に内蔵することができ、ＢＭＣ１２０は、これらのセンサを読み取って、温度、冷却ファン速度、電力ステータス、ＯＳステータスのようなパラメータを得る。ＢＭＣ１２０は、センサをモニタリングして、いずれかのパラメータがプリセットの制限内に留まっておらず、システム１００が故障した可能性を示す場合、ネットワークを介してシステム管理者に警告を送信することができる。管理者もまた、ＢＭＣ１２０と遠隔通信して、ハングしたＯＳを再び作動させるためにシステムをリセットするかまたは電源を入れ直すことのような、何らかの修正措置をとることができる。さらに、ＢＭＣ１２０は、ホストコンピュータ１１０によってアクセス可能な仮想媒体を確立することを可能にする、仮想媒体リダイレクトモジュールを含むことができる。したがって、ユーザは、コンピューティングデバイス１４０から仮想媒体セッションを開始することができ、ＢＭＣ１２０を通じてホストコンピュータ１１０に、コンピューティングデバイス上のデータを仮想媒体の内容として提供する。
【００３３】
特定の実施形態において、ＢＭＣ１２０のファームウェアは、システムモニタリングおよびイベント回復のためのインテリジェントプラットフォーム管理インターフェース（ＩＰＭＩ）産業規格に従う。ＩＰＭＩプロトコルは、コンピュータシステムの帯域外管理、および、セッションベースである動作のモニタリングのための標準コンピュータ・システム・インターフェース・プロトコルであり、アプリケーションモジュールが標的ＩＰＭＩデバイスと通信することができるようになる前に、アプリケーションモジュールと標的ＩＰＭＩデバイスとの間のＩＰＭＩセッションが確立されることを必要とする。ＩＰＭＩ仕様は、適合するコンピュータ内の管理可能な機構のすべてにアクセスするための共通のメッセージベースのインターフェースをもたらし、温度、電圧、ファン速度、シャーシ侵入、および他のパラメータを読み取るための所定コマンドの豊富なセットを含む。システム・イベント・ログ、ハードウェアウォッチドッグ、および電力制御も、ＩＰＭＩを通じてアクセスされ得る。このように、ＩＰＭＩは、オペレーティングシステムを通じて、または、ネットワークもしくは直列接続のような外部接続を通じてＢＭＣによって収集される様々なパラメータにアクセスするためのプロトコルを定義する。ＢＭＣは、ローカルに接続されている管理コンピュータからシステムインターフェースを通じて、または、ネットワークインターフェースを通じた外部要求として、ＩＰＭＩ命令または要求を受信することができる。
【００３４】
特定の実施形態において、ＢＭＣ１２０は、中でも、仮想媒体モジュール１２２と、ウェブ・ソケット・モジュール１２４と、ウェブ・サーバ・モジュール１２６とを含む。仮想媒体モジュール１２２は、物理記憶媒体を、あたかもホストコンピュータ１１０に物理的に取り付けられているかのようにエミュレートすることができる。ウェブ・ソケット・モジュール１２４は、単一の伝送接続プロトコル（ＴＣＰ）接続を介してウェブ・ソケット・プロトコルの下で全二重通信チャネルを確立することができる。ウェブ・サーバ・モジュール１２６は、インターネットを通じてアクセス可能なウェブコンテンツを提供することができる。モジュールの詳細は後述する。
【００３５】
さらに、ホストコンピュータ１１０は、ホストコンピュータ１１０のＯＳ（図示せず）および他のアプリケーションを記憶するためのデータ記憶媒体である記憶装置１１４と、少なくとも１つのＩ／Ｏデバイス１１６とを含む。記憶装置１１４の例は、フラッシュメモリ、メモリカード、ＵＳＢドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他のタイプのデータ記憶デバイスを含んでもよい。Ｉ／Ｏデバイス１１６の例は、キーボード、タッチパッド、マウス、マイクロフォン、表示スクリーン、タッチスクリーン、またはホストコンピュータ１１０に適用可能な他のＩ／Ｏデバイスを含む。
【００３６】
コンピューティングデバイス１４０は、ネットワーク１３０を介してホストコンピュータ１１０に遠隔して接続される。システム１００は、ホストコンピュータ１１０に同時に遠隔して接続される複数のコンピューティングデバイス１４０を含んでもよいことを、当業者は諒解されよう。コンピューティングデバイス１４０の例は、たとえば、スマートフォン、タブレットまたは他のモバイル・コンピュータ・デバイスのような携帯デバイスを含んでもよい。
【００３７】
コンピューティングデバイス１４０は、ＣＰＵ１７１と、メモリ１７３と、記憶装置１４２とを含む。記憶装置１４２は、コンピューティングデバイス１４０のＯＳおよび他のアプリケーションを記憶するためのデータ記憶媒体である。コンピューティングデバイス１４０の記憶装置１４２の例は、フラッシュメモリ、メモリカード、ＵＳＢドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他のタイプのデータ記憶デバイスを含んでもよい。
【００３８】
ブラウザプログラム１４３がメモリ１７３内にロードされ、コンピューティングデバイス１４０のＣＰＵ１７１によって実行され得る。ブラウザプログラム１４３は、ユーザに対する情報資源を取り出し、提示し、トラバースするためのソフトウェアアプリケーションである。さらに、ブラウザプログラム１４３は、ホストコンピュータ１１０と通信するための、システム１００の仮想媒体リダイレクトクライアントとしての役割を果たすことができる。概して、ブラウザプログラム１４３は、インターネットのようなオープンネットワーク上で提供される情報資源を取り出すことができる。情報資源は、ウェブページ、画像、ビデオまたは他のタイプのデータコンテンツを含んでもよい。
【００３９】
さらに、メモリ１７３は、ＯＳ１４４およびウェブ・ソケット・モジュール１４５をロードすることができる。ウェブ・ソケット・モジュール１４５は、ホストコンピュータ１１０上のＢＭＣ１２０のウェブ・ソケット・モジュール１２４に対応するモジュールであり、それによって、ホストコンピュータ１１０とコンピューティングデバイス１４０との間にウェブ・ソケット・プロトコルの下での全二重通信チャネルを確立することができる。
【００４０】
さらに、コンピューティングデバイス１４０は、少なくとも１つのＩ／Ｏデバイス１４６を有する。Ｉ／Ｏデバイス１４６の例は、キーボード、タッチパッド、マウス、マイクロフォン、表示スクリーン、タッチスクリーン、またはコンピューティングデバイス１４０に適用可能な他のＩ／Ｏデバイスを含む。タッチスクリーンのようないくつかのＩ／Ｏデバイスは、コンピューティングデバイス１４０のための二重入出力を目的として提供される。
【００４１】
ブラウザプログラム１４３を使用したウェブページおよび他のデータコンテンツのような情報資源の表示に関して、ハイパーテキストマークアップ言語（ＨＴＭＬ）が、ウェブページ、および、ブラウザプログラム１４３において表示することができる他の情報を表示するためのウェブベース言語フォーマットにおける標準的なマークアップ言語である。ＨＴＭＬフォーマットにあるデータは、ウェブページコンテンツ内で、山括弧に囲まれているＨＴＭＬ要素または「タグ」の形式（＜ｈｔｍｌ＞など）で書かれる。現在、ＨＴＭＬフォーマットは、市場でのブラウザプログラムのほぼすべてによって広く採用されており、したがって、コンピューティングデバイス１４０側のブラウザプログラム１４３とホストコンピュータ１１０側のＢＭＣ１２０のウェブサーバ１２６との間の通信命令のウェブベース言語フォーマットとして適している。
【００４２】
概して、ＪａｖａＳｃｒｉｐｔのようなスクリプト言語が、ユーザインターフェースの入力および出力を制御するために、ＨＴＭＬフォーマット言語に加えて使用される。さらに、ＨＴＭＬ言語の現在開発されている改正であるＨＴＭＬ５が、ウェブ・アプリケーション・ソフトウェア・メソッド、および、ウェブブラウザを通じてデータを記憶するために使用されるプロトコルを利用する、ウェブストレージのための幅広い機能を提供する。より古い一般的に使用されているブラウザプログラムはＨＴＭＬ５フォーマットをサポートしていないが、ＨＴＭＬ５フォーマットをサポートしているブラウザプログラムは、ＭＯＺＩＬＬＡ  ＦＩＲＥＦＯＸ  １．５、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ  ４．０、ＳＡＦＡＲＩ  ３．１、ＳＡＦＡＲＩ  ＭＯＢＩＬＥ  ３．２、ＯＰＥＲＡ  ９．０、ＯＰＥＲＡ  ＭＯＢＩＬＥ  １０．０、ＡＮＤＲＯＩＤ  ＢＲＯＷＳＥＲ  ２．１、およびＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ  ９．０または、これらのブラウザプログラムのより新しいバージョンを含む。したがって、ブラウザプログラム１４３は、ＨＴＭＬ５をサポートすることができ、上記に挙げたブラウザプログラムのうちの１つとすることができる。
【００４３】
ブラウザプログラム１４３は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用してＢＭＣにあるウェブサーバ１２６と通信することができる。具体的には、ブラウザプログラム１４３は、ウェブサーバ１２６にＨＴＴＰ要求を送信することができる。ＨＴＴＰ要求を受信すると、サーバは、ブラウザプログラムに、ＨＴＴＰ要求に応答したＨＴＴＰ応答を送信する。
【００４４】
ウェブサーバ１２６は一般的に、ＨＴＴＰの下でのブラウザプログラム１４３へのデータ送信を開始することができない。ウェブソケットが、単一のＴＣＰ接続を介した全二重通信チャネルを提供することができ、それによって、サーバはクライアントに命令または情報をアクティブに送信することができる。ウェブソケットはＨＴＭＬ５に組み込まれており、したがって、ＨＴＭＬ５を実装するウェブブラウザおよびサーバによってサポートされる。
【００４５】
図２は、本開示の一実施形態による、ホストコンピュータ１１０とコンピューティングデバイス１４０との間にウェブソケット接続を確立するプロセスを示す。ウェブソケット接続は、ＨＴＴＰ接続と同様に開始するが、ホストコンピュータ１１０とブラウザプログラム１２４との間に連続的な双方向ウェブベース接続を提供する。ブラウザプログラム１４３がウェブソケット接続を確立しようとするとき、ブラウザプログラム１４３は、ウェブ・ソケット・モジュール１４５に、ＢＭＣ１２０のウェブ・ソケット・モジュール１２４のポート８０（デフォルトＨＴＴＰポート）またはポート４４３（ＨＴＴＰＳポート）にウェブ・ソケット・ハンドシェイク要求を送信するよう命令する。ウェブ・ソケット・ハンドシェイク要求は、ＨＴＴＰ要求において使用されるＧＥＴコマンドに類似しているが、より多くのウェブソケット命令を含み、「アップグレード」された要求と考えることができる。ウェブ・ソケット・ハンドシェイク要求を受信すると、ウェブサーバ１２６は、ウェブ・ソケット・ハンドシェイク要求内のアップグレードされた情報に従って、この要求がＨＴＴＰ要求ではなくウェブ・ソケット・ハンドシェイク要求であると識別することができる。ウェブサーバ１２６は、ブラウザプログラム１４３にハンドシェイク応答メッセージを送信する。したがって、ブラウザプログラム１４３とウェブサーバ１２６との間にウェブソケット接続１５０を確立することができる。
【００４６】
図３Ａおよび図３Ｂは、ウェブ・ソケット・ハンドシェイク要求とＨＴＴＰ要求との間の比較を可能にし、図３ＡはＧＥＴコマンドを使用したＨＴＴＰ要求の一例を示し、図３Ｂは、ウェブ・ソケット・ハンドシェイク要求の一例を示す。図３Ａに示すように、ＨＴＴＰ要求の応答メッセージのヘッダ部分は、応答メッセージ内のコンテンツの情報を示し、ｔｅｘｔ／ｈｔｍｌファイルであるコンテンツのタイプ、コンテンツファイルの長さ、およびコンテンツにおいて使用されている言語を含む。ＨＴＴＰ要求に対する応答メッセージのヘッダ部分の最後の行は、ホストコンピュータ１１０とブラウザプログラム１２４との間の接続が応答の終わりに閉じられることを示す。比較すると、図３Ｂに示すウェブ・ソケット・ハンドシェイク要求の最初の２行は、ＨＴＴＰ要求と同じＧＥＴ命令を含む。ウェブ・ソケット・ハンドシェイク要求の以下の行は、ウェブ・ソケット・モジュール１２４に、通常のＨＴＴＰ要求からウェブ・ソケット・プロトコルにアップグレードまたは切り替えるように通知するアップグレードされた情報を含む。さらに、ＨＴＴＰ要求に対する応答メッセージとは異なり、ウェブ・ソケット・ハンドシェイク要求に対するハンドシェイク応答メッセージのヘッダ部分は、応答の終わりに接続が閉じられることを示さない。
【００４７】
ウェブソケット接続１５０が設定されると、ウェブ・ソケット・モジュール１２４およびウェブ・ソケット・モジュール１４５の両方が、この接続を通じて他端へデータを送信することができる。データフォーマットは、ＪＳＯＮまたはＸＭＬのような、任意の有効なＵＴＦ−８ストリングフォーマットであることができるが、所望に応じて他のデータフォーマットが使用されてもよい。
【００４８】
ウェブ・ソケット・モジュール１２４および１４５は、ＰＨＰ  Ｗｅｂ  Ｓｏｃｋｅｔｓ、Ｊａｖａ  ｊ  Ｗｅｂ  Ｓｏｃｋｅｔ、Ｗｅｂ−Ｓｏｃｋｅｔ−ｒｕｂｙ、Ｓｏｃｋｅｔ  ＩＯ−ｎｏｄｅ、または他のタイプのウェブ・ソケット・アプリケーションのような、様々なタイプおよび設計のものとすることができる。ウェブ・ソケット・モジュール１２４をホストコンピュータ１１０側のウェブ・ソケット・サーバとして設定するためには、ホストコンピュータ１１０および使用されるポート（ポート８０およびポート４４３など）のドメイン名またはＩＰアドレスが、ホストコンピュータ１１０の位置を示すために提供されなければならず、ソケットの開放（すなわち、ウェブソケット接続）、ソケットにおけるハンドシェイク要求および他のメッセージの受信、またはソケットの閉鎖のような特定の「イベント」に応答して複数の命令が設定されなければならない。ウェブ・ソケット・サーバが設定されると、ウェブ・ソケット・クライアントは、通常のＨＴＴＰスキーム「ｈｔｔｐ」の代わりにスキーム「ｗｓ」、または、通常のＨＴＴＰＳスキーム「ｈｔｔｐｓ」の代わりにスキーム「ｗｓｓ」で始まる統一資源位置指定子（ＵＲＬ）を使用してウェブ・ソケット・サーバに接続することができる。
【００４９】
図４Ａおよび図４Ｂは、本開示の特定の実施形態によるウェブベースの仮想媒体リダイレクトの特徴を示す。図４Ａに示すように、ホストコンピュータ１１０は、Ｉ／ＯデバイスとしてＵＳＢポート１１５を含んでもよい。ＢＭＣ１２０は、ＵＳＢポート１１５によって確立されるＵＳＢ接続１２１を通じてホストコンピュータ１１０と通信し、ＵＳＢ接続１２１を通じてホストコンピュータ１１０向けに媒体記憶装置をエミュレートする仮想媒体モジュール１２２を有することができる。ＵＳＢ接続は、ＢＭＣ１２０が、ホストコンピュータ１１０向けに、フロッピー、ＣＤ−ＲＯＭ、またはハード・ディスク・ドライブのようなＵＳＢ大容量記憶デバイスをエミュレートすることを可能にする。特定の実施形態において、それらのエミュレートされたデバイスは、ホストコンピュータ１１０によってブートアップデバイスとして使用することができる。下記に詳細に説明するように、コンピューティングデバイス１４０は、ブートアップシーケンスを含み得るプログラムまたはデータをＢＭＣ１２０に提供することができる。ＢＭＣ１２０は、それらのプログラムまたはデータを、エミュレートされたデバイスのプログラムまたはデータとしてホストコンピュータ１１０に提供することができる。特定の実施形態において、仮想媒体モジュール１２２がホストコンピュータ１１０向けにブートアップデバイスをエミュレートすると、ホストコンピュータ１１０は、ＢＭＣ１２０に送信され、ブートアップデバイスのコンテンツとして使用される、コンピューティングデバイス１４０のプログラムおよびデータから起動することができる。明示的に示されていないが、ホストコンピュータ１１０およびコンピューティングデバイス１４０は、ウェブベースの仮想媒体リダイレクトを実施するための他の要素を含んでもよい。
【００５０】
一例として、ＢＭＣ１２０は、ＵＳＢ接続上で、エミュレートされたＣＤ−ＲＯＭデバイスのような、大容量記憶デバイスをエミュレートすることができる。エミュレートされたＣＤ−ＲＯＭデバイスは、コンピューティングデバイス１４０上のＩＳＯイメージ１４８の内容を、ホストコンピュータ１１０にリダイレクトするのに利用することができる。エミュレートされたＣＤ−ＲＯＭデバイスはまた、ホストコンピュータ１１０とＢＭＣとの間の帯域外通信を提供するのに利用することもできる。エミュレートされたＣＤ−ＲＯＭデバイスは、ホストコンピュータ１１０には標準的なＵＳＢ  ＣＤ−ＲＯＭに見える。したがって、ホストコンピュータ１１０上で実行しているオペレーティングシステムは、ＣＤ−ＲＯＭデバイスと通信するために利用される、オペレーティングシステムに提供されている標準的なＣＤ−ＲＯＭドライバを利用することができる。カスタム・ハードウェア・ドライバは不要とすることができる。
【００５１】
特定の実施形態において、コンピューティングデバイス１４０は、オペレーティングシステム１４４と、オペレーティングシステム１４４上で作動するブラウザプログラム１４３とを含む。さらに、コンピューティングデバイス１４０は、ＩＳＯイメージ１４８を記憶する記憶装置１４２を含む。ＩＳＯイメージ１４８は一般的に、ファイルシステムおよびデータを含む、光ディスクのアーカイブファイルまたはディスクイメージである。特定の実施形態において、ブラウザプログラム１４３はＨＴＭＬ５規格によってコンパイルし、ネイティブコールを一切使用することなく直にＩＳＯイメージ１４８を読み出すことができる。たとえば、ＩＳＯイメージ１４８の位置が与えられると、ブラウザプログラム１４３はＯＳ１４４を直に利用して、ＩＳＯイメージ１４８にアクセスし、ＩＳＯイメージ１４８の内容を読み出すことができる。下記に詳細に説明するように、ブラウザプログラム１４３は、ＢＭＣ１２０のウェブサーバ１２６において生成されるウェブページによって命令されるように、ファイルシステム構造（たとえば、ＩＳＯイメージ１４８内のファイルシステムのファイル名のリスト）および特定のファイルのデータのような、ＩＳＯイメージ１４８の情報をＢＭＣ１２０に送信することができる。情報は、ウェブソケットを通じてＢＭＣ１２０に通信することができる。情報を受信すると、ＢＭＣ１２０は、仮想媒体モジュール１２２を利用して、その情報をエミュレートされた媒体のデータとして、ホストコンピュータ１１０に提供することができる。
【００５２】
図４Ｂは、本開示の特定の実施形態による、ホストコンピュータ１１０、ＢＭＣ１２０、およびコンピューティングデバイス１４０の間の媒体リダイレクトの手順を示す。動作４１０において、ブラウザプログラム１４３が、ネットワークを介してＢＭＣ１２０に、仮想媒体リダイレクトウェブページを求める要求を送信する。要求は、ＨＴＴＰフォーマットにあってもよい。仮想媒体リダイレクトウェブページを求める要求を受信すると、動作４１２において、ＢＭＣ１２０のウェブサーバ１２６が、ブラウザプログラム１４３に仮想媒体リダイレクトウェブページを送信する。したがって、ブラウザプログラム１４３は、仮想媒体リダイレクトウェブページを表示することができ、コンピューティングデバイス１４０のユーザが、動作４１４において、ＢＭＣ１２０によってエミュレートされることになる仮想媒体の構成情報を入力または選択することを可能にする。仮想媒体の構成情報は、ＢＭＣ１２０によってエミュレートされることになる仮想媒体のタイプ、および、エミュレートされる仮想媒体の内容としてエミュレートされることになるコンピューティングデバイス１４０上のデータを含み得る。特定の実施形態において、仮想媒体ウェブページは、ユーザがそこから選択するための、記憶装置１４２内のＩＳＯイメージファイルのリスト、および、様々なタイプの仮想媒体、たとえば、ＣＤ−ＲＯＭ、ＳＤメモリ、ＵＳＢドライブなどのリストを提供することができる。たとえば、ブラウザプログラム１４３によってレンダリングされる仮想媒体リダイレクトウェブページは、ＪａｖａＳｃｒｉｐｔを使用して、ブラウザプログラム１４３に、コンピューティングデバイス１４０のファイルシステムにアクセスして利用可能なＩＳＯイメージのリストを得るよう命令することができる。
【００５３】
動作４１４において、ユーザは、ブラウザプログラム１４３においてレンダリングされる仮想媒体リダイレクトウェブページを通じて仮想媒体モジュールを構成することができる。たとえば、ユーザは、ホストコンピュータ１１０向けにＣＤ−ＲＯＭをエミュレートして、ＩＳＯイメージ１４８のデータをエミュレートされたＣＤ−ＲＯＭのデータとして使用するようにＢＭＣ１２２を構成することができる。ユーザが構成情報を入力した後、動作４１６において、ブラウザプログラム１４３は、ユーザ入力に従って、選択されたデータ、たとえば、記憶装置１４２内に記憶されているＩＳＯイメージ１４８にアクセスすることができる。たとえば、ブラウザプログラム１４３は、仮想媒体リダイレクトウェブページ内に含まれているＪａｖａＳｃｒｉｐｔを実行し、それに応じて、選択されたＩＳＯイメージ１４８にアクセスするよう命令される。その後、動作４１８において、ブラウザプログラム１４３は、仮想媒体モジュール１２２を設定するためのユーザ命令を、ＢＭＣ１２０のウェブサーバ１２６に送信する。ユーザ命令を受信すると、動作４２０において、仮想媒体モジュール１２２は、要求されたタイプの仮想媒体（たとえば、ＣＤ−ＲＯＭ）を、ホストコンピュータ１１０向けにエミュレートする。
【００５４】
ホストコンピュータ１１０がエミュレートされた仮想媒体を検出し、それを現実の物理媒体と認識すると、動作４２２において、ホストコンピュータ１１０は、エミュレートされた仮想媒体のファイル情報を読み出そうとし得る。特定の実施形態において、ファイル情報は、ファイルシステム構造、たとえば、仮想媒体のファイル名のリストを含む。ファイルシステム構造を求める要求を受信すると、動作４２４において、仮想媒体モジュール１２２は、ウェブサーバに、ＨＴＴＰ応答メッセージ、たとえば、ＩＳＯイメージ１４８のファイルシステム構造を要求するＪａｖａＳｃｒｉｐｔを有するウェブページを、ブラウザプログラム１４３に送信するよう命令することができる。ブラウザプログラム１４３がＨＴＴＰ応答メッセージを受信すると、動作４２６において、ブラウザプログラム１４３は、たとえば、ＪａｖａＳｃｒｉｐｔによって命令されるように、記憶装置１４２内に記憶されているＩＳＯイメージ１４８にアクセスして、ファイルシステム構造を取り出す。
【００５５】
その後、動作４２８において、ブラウザプログラム１４３が、ウェブサーバ１２６に、ウェブ・ソケット・プロトコルの下での通信チャネルを確立することを求めるウェブ・ソケット・ハンドシェイク要求を送信する。ウェブ・ソケット・ハンドシェイク要求を受信すると、動作４３０において、ウェブサーバ１２６は、ＢＭＣ１２０にあるウェブ・ソケット・モジュール１２４に、ウェブソケットを開放するよう命令する。同様に、動作４３２において、ブラウザプログラム１４３は、コンピューティングデバイス１４０にあるウェブ・ソケット・モジュール１４５に、ウェブソケットを開放するよう命令する。動作４３４において、ウェブ・ソケット・モジュール１２４とウェブ・ソケット・モジュール１４５との間にウェブソケット接続（または通信チャネル）が確立され得る。
【００５６】
ウェブソケット接続が確立されると、動作４３６において、ブラウザプログラム１４３が、動作４２６において取り出されたファイルシステム構造を、ウェブ・ソケット・モジュール１４５に送信する。動作４３８において、コンピューティングデバイス１４０にあるウェブ・ソケット・モジュール１４５が、ウェブソケット接続を通じてＢＭＣ１２０にあるウェブ・ソケット・モジュール１２４にファイルシステム構造を送信する。動作４４０において、ウェブ・ソケット・モジュール１２４が、ＢＭＣ１２０のウェブサーバ１２６にファイルシステム構造を送信する。その後、ウェブサーバ１２６が、仮想媒体モジュール１２２にファイルシステム構造を送信する。仮想媒体モジュール１２２は、動作４２２においてホストコンピュータ１１０によって開始される、仮想媒体モジュールによってエミュレートされた仮想媒体を対象とするファイルシステム構造読み出し動作の結果として、動作４４２においてホストコンピュータ１１０にファイルシステム構造を提供する。したがって、ホストコンピュータ１１０は、仮想媒体のエミュレートされたファイルシステム構造を得、仮想媒体からファイルおよびデータを要求することができる。
【００５７】
ホストコンピュータ１１０がエミュレートされた仮想媒体から特定のファイルを読み出すことを試行すると、動作４４４において、仮想媒体モジュール１２２が、ホストコンピュータ１１０によって開始されるそのような読み出し動作を受信する。仮想媒体モジュール１２２はその後、ウェブサーバ１２６に、特定のファイルを求めるホストコンピュータ１１０の要求を指示する。ウェブサーバ１２６は、その後、ウェブソケット接続１５０を通じてブラウザプログラム１４３に、ファイルを求める要求を送信する。具体的には、動作４４６において、ウェブサーバ１２６が、ウェブ・ソケット・モジュール１２４に要求を送信する。動作４４８において、ウェブ・ソケット・モジュール１２４が、ウェブソケット接続を通じてウェブ・ソケット・モジュール１４５に要求を送信する。その後、動作４５０において、ウェブ・ソケット・モジュール１４５が、ブラウザプログラム１４３に要求を送信する。要求を受信すると、動作４５２において、ブラウザプログラム１４３は、ウェブサーバ１２６によって生成されるような、および、ブラウザプログラム１４３によって現在レンダリングされているような、ウェブページ内のイベントをハンドリングするように定義されているルーチンを実行する。たとえば、ルーチンは、ブラウザプログラム１４３に、ウェブソケット接続を通じて受信された要求に従って、記憶装置１４２内に記憶されているＩＳＯイメージ１４８にアクセスして、要求において指定されているファイルを取り出すよう命令することができる。
【００５８】
要求されたファイルが取り出されると、ブラウザプログラム１４３は、レンダリングされているウェブページによって命令されるように、ウェブソケット接続１５０を通じてＢＭＣ１２０に取り出されたファイルを送信することができる。たとえば、ウェブページは、ウェブソケット接続１５０を通じてデータを送信するｓｏｃｋｅｔ．ｓｅｎｄ（”ｄａｔａ”）のようなＪａｖａＳｃｒｉｐｔ関数を含み得る。具体的には、動作４５４において、ブラウザプログラム１４３が、ウェブ・ソケット・モジュール１４５にファイルを送信する。動作４５６において、ウェブ・ソケット・モジュール１４５が、ウェブソケット接続１５０を通じてウェブ・ソケット・モジュール１２４にファイルを送信する。動作４５８において、ウェブ・ソケット・モジュール１２４が、ＢＭＣ１２０にあるウェブサーバ１２６にファイルを送信する。その後、ウェブサーバ１２６が、仮想媒体モジュール１２２にファイルを送信する。仮想媒体モジュール１２２は、動作４４４においてホストコンピュータ１１０によって開始される、仮想媒体モジュール１２２によってエミュレートされた仮想媒体を対象とする読み出しコマンドの結果として、動作４４２においてホストコンピュータ１１０にファイルを提供する。したがって、ホストコンピュータ１１０は、エミュレートされた仮想媒体からファイルを読み出すことができる。
【００５９】
図５Ａおよび図５Ｂは本開示の別の実施形態によるウェブベースの仮想媒体リダイレクトの特徴を概略的に示す。この例において、ホストコンピュータ１１０、ＢＭＣ１２０、コンピューティングデバイス１４０は、下記に説明するいくつかの差はあるが、図４Ａに示すものと同様の構成を有する。コンピューティングデバイス１４０は、Ｉ／Ｏポート１４６を通じてコンピューティングデバイス１４０に接続されている記憶装置１４７、たとえば、記憶装置１４２から分離されている個別の大容量記憶デバイスを有することができる。記憶装置１４７は、ＩＳＯイメージフォーマットには記憶されないファイルを有することができる。たとえば、少なくとも１つのファイル１４９が記憶装置１４７内に記憶される。記憶装置１４７の例は、ＵＳＢドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他の適切なタイプのデータ記憶デバイスを含んでもよい。
【００６０】
特定の実施形態において、ブラウザプログラム１４３は、ネイティブコールを使用して、記憶装置１４７のファイルシステム構造およびファイルを取り出すことができる。たとえば、ブラウザプログラム１４３は、ブラウザプログラムを操作しているユーザの許可を得てＢＭＣ１２０からダウンロードされるＪａｖａオブジェクトを実行することができるＪａｖａバーチャルマシン（ＪＶＭ）を含むことができる。Ｊａｖａオブジェクトは、Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ（ＪＮＩ）関数を呼び出すことができる。ＪＮＩは、ＪＶＭ上で作動しているＪａｖａコードが、ネイティブアプリケーション（ハードウェアおよびオペレーティング・システム・プラットフォームに特有のプログラム）、および、Ｃ、Ｃ＋＋およびアセンブリのような他の言語で書かれたライブラリを呼び出し、またそれらによって呼び出されることを可能にするプログラミングフレームワークである。ＪＮＩ関数は、システムコールのようなオペレーティングシステムの機能にアクセスすることを可能にすることができる。ＢＭＣ１２０は、Ｊａｖａオブジェクト１６４を含むことができ、Ｊａｖａオブジェクト１６４は、コンパイル済みであり、ブラウザプログラム１４３によって、たとえば、ＪＶＭによってサポートされるＪＮＩ関数を通じてコンピューティングデバイス１４０のデータにアクセスするために呼び出すことができる関数を定義する。一例において、Ｊａｖａオブジェクト１６４は、ＪＮＩ関数を利用して、指定された媒体ソースのファイルシステム構造およびファイルを取り出すイメージマウント関数を定義する。ＢＭＣ１２０のウェブサーバ１２６によって生成され、ブラウザプログラム１４３によってレンダリングされるウェブページは、ブラウザプログラムに、ＪＶＭ上のＪａｖａオブジェクト１６４を実行し、Ｊａｖａオブジェクト１６４のイメージマウント関数を呼び出して記憶装置１４７のファイルシステムにアクセスするよう命令するＪａｖａＳｃｒｉｐｔルーチンを有することができる。
【００６１】
図５Ｂは、本開示の特定の論旨による、ホストコンピュータ１１０、ＢＭＣ１２０、およびコンピューティングデバイス１４０の間の媒体リダイレクトの手順を示す。動作５１０において、ブラウザプログラム１４３が、ネットワークを介してＢＭＣ１２０に、仮想媒体リダイレクトウェブページを求める要求を送信する。要求は、ＨＴＴＰフォーマットにあってもよい。要求を受信すると、動作５１２において、ＢＭＣ１２０のウェブサーバ１２６が、ブラウザプログラム１４３に仮想媒体リダイレクトウェブページを送信する。したがって、ブラウザプログラム１４３は、仮想媒体リダイレクトウェブページを表示することができ、コンピューティングデバイス１４０のユーザが、動作５１４において、ＢＭＣ１２０によってエミュレートされることになる仮想媒体の構成情報を入力または選択することを可能にする。仮想媒体の構成情報は、ＢＭＣ１２０によってエミュレートされることになる仮想媒体のタイプ、および、エミュレートされる仮想媒体の内容としてエミュレートされることになるコンピューティングデバイス１４０上のデータを含み得る。特定の実施形態において、仮想媒体ウェブページは、ユーザがそこから選択するための、利用可能な媒体ソースのリスト、および、様々なタイプの仮想媒体、たとえば、ＣＤ−ＲＯＭ、ＳＤメモリ、ＵＳＢドライブなどのリストを提供することができる。
【００６２】
下記に説明するように、特定の実施形態において、ブラウザプログラム１４３によってレンダリングされる仮想媒体リダイレクトウェブページは、ＪａｖａＳｃｒｉｐｔを使用して、ブラウザプログラム１４３に、コンピューティングデバイス１４０の記憶装置１４７のファイルシステムにアクセスするよう命令することができる。
【００６３】
動作５１４において、ユーザは、ブラウザプログラム１４３においてレンダリングされる仮想媒体リダイレクトウェブページを通じて仮想媒体モジュール１２２を構成することができる。たとえば、ユーザは、ホストコンピュータ１１０向けにＣＤ−ＲＯＭをエミュレートして、記憶装置１４７のデータをエミュレートされたＣＤ−ＲＯＭの内容として使用するようにＢＭＣ１２２を構成することができる。
【００６４】
ユーザが構成情報を入力し、ネイティブライブラリおよびファイルシステムへのアクセスを承認した後、動作５１６において、ブラウザプログラム１４３は、仮想媒体モジュール１２２を設定するためにユーザ命令を、ＢＭＣ１２０のウェブサーバ１２６に送信する。ウェブサーバ１２６からユーザ命令を受信すると、仮想媒体モジュール１２２は、それに応じて、要求されたタイプの仮想媒体（たとえば、ＣＤ−ＲＯＭ）を、ホストコンピュータ１１０向けにエミュレートする。
【００６５】
動作５１８において、リダイレクトウェブページは、ブラウザプログラム１４３に、ＢＭＣ１２０にあるウェブサーバ１２６からＪａｖａオブジェクト１６４をダウンロードするよう命令する。安全上の理由から、一般的に、ブラウザプログラム１４３は、Ｊａｖａオブジェクト１６４をダウンロードおよび実行する前に、ユーザの許可を求める。ユーザの許可によって、ブラウザプログラム１４３は、ウェブサーバ１２６からＪａｖａオブジェクト１６４をダウンロードする。Ｊａｖａオブジェクト１６４を受信すると、動作５２０において、ブラウザプログラム１４３は、ＪＶＭのようなＪａｖａ実行環境を起動することができる。
【００６６】
その間、ユーザ命令を受信すると、動作５２２において、仮想媒体モジュール１２２は、要求されたタイプの仮想媒体（たとえば、ＣＤ−ＲＯＭ）を、ホストコンピュータ１１０向けにエミュレートする。ホストコンピュータ１１０がエミュレートされた仮想媒体を検出し、それを現実の物理媒体と認識すると、動作５２４において、ホストコンピュータ１１０は、エミュレートされた仮想媒体のファイル情報を読み出そうとし得る。特定の実施形態において、ファイル情報は、ファイルシステム構造、たとえば、仮想媒体のファイル名のリストを含む。ファイルシステム構造を求める要求を受信すると、動作５２６において、仮想媒体モジュール１２２は、ウェブサーバ１２６に、ＨＴＴＰ応答メッセージ、たとえば、選択される媒体ソース（たとえば、コンピューティングデバイス１４０のＵＳＢドライブ）のファイルシステム構造を要求するＪａｖａＳｃｒｉｐｔを有するウェブページを、ブラウザプログラム１４３に送信するよう命令することができる。ブラウザプログラム１４３がＨＴＴＰ応答メッセージを受信すると、動作５２８において、ブラウザプログラム１４３は、たとえば、ＪａｖａＳｃｒｉｐｔによって命令されるように、選択される媒体ソース１４７にアクセスして、ファイルシステム構造を取り出すよう試行する。より具体的には、ウェブページ内のＪａｖａＳｃｒｉｐｔが、ブラウザプログラム１４３に、ＢＭＣ１２０にあるウェブサーバ１２６からダウンロードされるＪａｖａオブジェクト１６４を使用して、選択される媒体ソース１４７にアクセスするよう命令することができる。それに応じて、ブラウザプログラムは、ブラウザプログラム１４３のＪＶＭ１６６上のＪａｖａオブジェクト１６４を起動または実行する。ＪａｖａＳｃｒｉｐｔは、ブラウザプログラム１４３に、上述したイメージマウント関数を呼び出して、選択される媒体ソース１４７から情報を取り出すよう命令することができる。動作５３０において、Ｊａｖａオブジェクト１６４は、イメージマウント関数において定義されるルーチンに従って、ＪＮＩ関数１６２を呼び出して、システムコールのような、オペレーティングシステムの関数を使用して、選択される媒体ソース１４７からファイルシステム構造を取り出すことができる。動作５３４において、ＪＮＩ関数１６２は、ブラウザプログラム１４３のＪＶＭ１６６上で作動しているＪａｖａオブジェクト１６４に、ファイルシステム構造を返す。
【００６７】
その後、動作５３６において、ブラウザプログラム１４３が、ウェブサーバ１２６に、ウェブ・ソケット・プロトコルの下での通信チャネルを確立することを求めるウェブ・ソケット・ハンドシェイク要求を送信する。ウェブ・ソケット・ハンドシェイク要求を受信すると、動作５３８において、ウェブサーバ１２６は、ＢＭＣ１２０にあるウェブ・ソケット・モジュール１２４に、ウェブソケットを開放するよう命令する。同様に、動作５４０において、ブラウザプログラム１４３は、ウェブ・ソケット・モジュール１４５に、ウェブソケットを開放するよう命令する。動作５４２において、ウェブ・ソケット・モジュール１２４とウェブ・ソケット・モジュール１４５との間にウェブソケット接続が確立され得る。
【００６８】
特定の実施形態において、ウェブソケット接続が確立されると、動作５４４において、Ｊａｖａオブジェクト１６４は、記憶装置１４７（すなわち、選択される媒体）のファイルシステム構造をブラウザプログラム１４３に返す。その後、ブラウザプログラム１４３は、たとえば、リダイレクトウェブページ内のＪａｖａＳｃｒｉｐｔによって命令されるように、ウェブソケット接続１５０を通じてホストコンピュータ１１０に、記憶装置１４７のファイルシステム構造を送信する。ＪａｖａＳｃｒｉｐｔルーチンは、ｓｏｃｋｅｔ．ｓｅｎｄ（”ｄａｔａ”）のようなコードを含むことができる。具体的には、動作５４６において、ブラウザプログラム１４３が、ウェブ・ソケット・モジュール１４５にファイルシステム構造を送信する。動作５４８において、ウェブ・ソケット・モジュール１４５が、ウェブソケット接続１５０を通じてウェブ・ソケット・モジュール１２４にファイルシステム構造を送信する。動作５５０において、ウェブ・ソケット・モジュール１２４が、ＢＭＣ１２０のウェブサーバ１２６にファイルシステム構造を送信する。その後、ウェブサーバ１２６が、仮想媒体モジュール１２２にファイルシステム構造を送信する。仮想媒体モジュールは、動作５２４においてホストコンピュータ１１０によって開始される、仮想媒体モジュール１２２によってエミュレートされた仮想媒体を対象とするファイルシステム構造読み出しコマンドの結果として、動作５５２においてホストコンピュータ１１０にファイルシステム構造を提供する。したがって、ホストコンピュータ１１０は、仮想媒体のエミュレートされたファイルシステム構造を得、仮想媒体からファイルおよびデータを要求することができる。
【００６９】
ホストコンピュータ１１０がエミュレートされた仮想媒体から特定のファイルを読み出すことを試行すると、動作５５４において、仮想媒体モジュール１２２が、ホストコンピュータ１１０によって開始されるそのような読み出しコマンドを受信する。仮想媒体モジュール１２２はその後、ウェブサーバ１２６に、要求特定のファイルを指示する。ウェブサーバ１２６は、その後、ウェブソケット接続１５０を通じてブラウザプログラム１４３に、ファイルを求める要求を送信する。具体的には、動作５５６において、ウェブサーバ１２６が、ウェブ・ソケット・モジュール１２４に要求を送信する。動作５５８において、ウェブ・ソケット・モジュール１２４が、ウェブソケット接続を通じてウェブ・ソケット・モジュール１４５に要求を送信する。その後、動作５６０において、ウェブ・ソケット・モジュール１４５が、ブラウザプログラム１４３に要求を送信する。要求を受信すると、動作５６２において、ブラウザプログラム１４３は、ウェブサーバ１２６によって生成されるような、および、ブラウザプログラム１４３によって現在レンダリングされているような、ウェブページ内のイベントをハンドリングするように定義されているルーチンを実行する。たとえば、ルーチンは、ブラウザプログラム１４３に、ウェブソケット接続を通じて受信された要求に従って、選択される媒体ソース１４７にアクセスして、要求において指定されているようにファイルを取り出すよう命令することができる。
【００７０】
要求を受信すると、動作５６２において、ブラウザプログラム１４３は、たとえば、ＪａｖａＳｃｒｉｐｔによって命令されるように、選択される媒体ソース１４７にアクセスして要求されたファイル１４９を取り出すよう試行する。より具体的には、リダイレクトウェブページ内のＪａｖａＳｃｒｉｐｔが、ブラウザプログラム１４３に、ＢＭＣ１２０にあるウェブサーバ１２６からダウンロードされるＪａｖａオブジェクトを使用して、選択される媒体ソース１４７にアクセスするよう命令することができる。それに応じて、ブラウザプログラムは、ブラウザプログラム１４３のＪＶＭ１６６上のＪａｖａオブジェクト１６４を起動または実行する。ＪａｖａＳｃｒｉｐｔは、ブラウザプログラム１４３に、ファイル取り出し関数を呼び出して、選択される媒体ソース１４７から指定されたファイルを取り出すよう命令することができる。動作５６４において、Ｊａｖａオブジェクト１６４は、ファイル取り出し関数において定義されるルーチンに従って、ＪＮＩ関数を呼び出して、システムコールのような、オペレーティングシステムの関数を使用して、選択される媒体ソース１４７から要求されたファイル１４９を取り出すことができる。動作５６８において、ＪＮＩ関数１６２は、ブラウザプログラム１４３のＪＶＭ１６６上で作動しているＪａｖａオブジェクト１６４に、ファイルを返す。動作５７０において、Ｊａｖａオブジェクト１６４は、ブラウザプログラム１４３にファイル１４９を送信する。
【００７１】
動作５７２において、ブラウザプログラム１４３が、ウェブ・ソケット・モジュール１４５にファイル１４９を送信する。動作５７４において、ウェブ・ソケット・モジュール１４５が、ウェブソケット接続を通じてウェブ・ソケット・モジュール１２４にファイル１４９を送信する。動作５７６において、ウェブ・ソケット・モジュール１２４が、ＢＭＣ１２０のウェブサーバ１２６にファイル１４９を送信する。その後、ウェブサーバ１２６が、仮想媒体モジュール１２２にファイル１４９を送信する。仮想媒体モジュール１２２は、動作５５４においてホストコンピュータ１１０によって開始される、仮想媒体モジュールによってエミュレートされた仮想媒体を対象とするファイル読み出しコマンドの結果として、動作５７８においてホストコンピュータ１１０にファイル１４９を提供する。このように、ホストコンピュータ１１０は、仮想媒体からファイル１４９を得る。
【００７２】
本開示の例示的な実施形態の上記の記載は、例示および説明のみを目的として提示されており、網羅的であること、または、本発明の開示されている厳密な形式に限定するようには意図されていない。上記の教示に照らして多くの修正および変形が可能である。
【００７３】
実施形態は、当業者が、本発明および様々な実施形態を、企図されている特定の用途に適するように様々な修正を施して利用するよう活性化するように、本発明の原理およびその実際の適用を説明するために選択および記載されている。代替的な実施形態が、本発明の精神および範囲から逸脱することなく、本発明が属する技術分野における当業者には明らかとなろう。たとえば、複数のプローブを同時に利用して本発明を実施してもよい。したがって、本開示の範囲は、上記の記載および本明細書に記載されている例示的な実施形態ではなく、添付の特許請求の範囲によって画定される。
【図１】
2016517070.tif 000003
【図２】
2016517070.tif 000004
【図３Ａ】
2016517070.tif 000005
【図３Ｂ】
2016517070.tif 000006
【図４Ａ】
2016517070.tif 000007
【図４Ｂ】
2016517070.tif 000008
【図５Ａ】
2016517070.tif 000009
【図５Ｂ】
2016517070.tif 000010
【国際調査報告】
2016517070.tif 000011
2016517070.tif 000012