(57)【要約】  印刷操作を開始するアプリケーションによって使用される印刷インタフェース技術に関係なく、印刷操作が監視され、ＤＬＰポリシーが適用される。ＤＬＰ構成要素は、印刷スプーラにロードされる印刷ドライバを監視し、検出する。印刷ドライバがロードされると、印刷スプーラは対応するドライバオブジェクトを作成し、これが傍受される。インスタンス化されたドライバオブジェクトは、様々な印刷関数を実行するため、複数のデバイスオブジェクトを作成する。対象となるデバイスオブジェクト印刷関数が傍受される。傍受されたデバイスオブジェクト関数による印刷ドライバレベルでプリンタにテキストを送信する試みが監視され、関連ユーザなどのアプリケーションレベルのコンテキスト情報が識別される。ＤＬＰポリシーは、アプリケーションレベルのコンテキスト情報と、監視対象の試みの特定のテキストと、を考慮に入れて、印刷ドライバレベルでプリンタにテキストを送信する監視対象の試みに適用される。
2019513254.tif 000002
【特許請求の範囲】
【請求項１】
印刷操作を開始するコンピュータ上で実行する特定のアプリケーションに関係なく、また、前記特定のアプリケーションによって使用される特定の印刷インタフェースに関係なく、印刷操作を監視し、前記コンピュータ上でデータ損失防止ポリシーを施行するためのコンピュータ実装方法であって、
印刷スプーラにロードされている印刷ドライバを監視し、検出することと、
前記印刷ドライバが前記印刷スプーラにロードされるときに作成されるドライバオブジェクトの作成を傍受することと、
前記ドライバオブジェクトがデバイスオブジェクトを作成するときに、デバイスオブジェクト印刷関数を傍受することと、
印刷ドライバレベルでプリンタにテキストを送信する試みを監視することであって、前記監視対象の試みが少なくとも１つの傍受されたデバイスオブジェクト関数によって行われている、ことと、
前記プリンタに特定のテキストを送信する特定の監視対象の試みごとに、前記特定の監視対象の試みに起因する印刷操作を開始した特定のアプリケーションに関連付けられた、特定のアプリケーションレベルのコンテキスト情報を識別することと、
前記印刷ドライバレベルで前記プリンタに特定のテキストを送信する監視対象の試みに、データ損失防止ポリシーを適用することであって、特定の監視対象の試みへの前記データ損失防止ポリシーの前記適用において、特定の識別されたアプリケーションレベルのコンテキスト情報と、前記特定の監視対象の試みの特定のテキストと、を考慮に入れる、ことと、を含む、方法。
【請求項２】
印刷スプーラにロードされている印刷ドライバを監視し、検出することが、
印刷ドライバを前記印刷スプーラにロードするシステム関数を傍受することを更に含む、請求項１に記載の方法。
【請求項３】
印刷ドライバを前記印刷スプーラにロードするシステム関数を傍受することが、
印刷フックを前記印刷スプーラに注入することと、
前記印刷フックにより、印刷ドライバを前記印刷スプーラにロードする前記システム関数を傍受することと、を更に含む、請求項２に記載の方法。
【請求項４】
印刷ドライバを前記印刷スプーラにロードするシステム関数を傍受することが、
印刷フックコードを印刷ドライバとして登録することと、
前記印刷フックコードが印刷ドライバとして前記印刷スプーラにロードされるときに、前記印刷フックコードによって、印刷ドライバを前記印刷スプーラにロードする前記システム関数を傍受することと、を更に含む、請求項２に記載の方法。
【請求項５】
印刷ドライバを前記印刷スプーラにロードするシステム関数を傍受することが、
ドライバをロードするためのＷｉｎｄｏｗｓシステム関数を傍受することと、
前記傍受されたＷｉｎｄｏｗｓシステム関数によって、前記スプーラへのあらゆる印刷ドライバのロードを検出することと、を更に含む、請求項２に記載の方法。
【請求項６】
前記印刷ドライバが前記印刷スプーラにロードされるときに作成されるドライバオブジェクトの作成を傍受することが、
クラスオブジェクトを検索するための前記ロードされた印刷ドライバのメソッドを傍受することと、
前記作成されたドライバオブジェクトをフックするための、オブジェクトのインスタンスを作成するメソッドを傍受することと、を更に含む、請求項１に記載の方法。
【請求項７】
デバイスオブジェクト印刷関数を傍受することが、
前記印刷スプーラが、オブジェクトのインスタンスを作成するメソッドを介して、前記ドライバオブジェクトをインスタンス化するときに、ドライバ関数のテーブルをエクスポートするドライバオブジェクトメソッドを傍受することと、
前記印刷スプーラが前記テーブルを取り込むときに、特定のテーブルエントリを置換することと、を更に含む、請求項１に記載の方法。
【請求項８】
デバイスオブジェクト印刷関数を傍受することが、
前記プリンタへのコンテンツの送信に関連付けられたデバイスオブジェクト印刷関数を傍受することを更に含む、請求項１に記載の方法。
【請求項９】
デバイスオブジェクト印刷関数を傍受することが、
前記プリンタへの行及びページレベルの出力に関与するデバイスオブジェクト印刷関数を傍受することと、
状態管理関数に関与する少なくとも１つのデバイスオブジェクト印刷関数を傍受することと、を更に含む、請求項１に記載の方法。
【請求項１０】
デバイスオブジェクト印刷関数を傍受することが、
ドキュメントの状態管理の開始及び終了を実行し、コンテンツをキャプチャしてそれをバッファに送信し、キャプチャ及びバッファリングの前後の操作を識別し、前記バッファから前記プリンタにコンテンツを送信するためのデバイスオブジェクト印刷関数を傍受することを更に含む、請求項１に記載の方法。
【請求項１１】
印刷ドライバレベルでプリンタにテキストを送信する試みを監視することが、
傍受されたデバイスオブジェクト印刷関数が、ページを前記プリンタに送信するために呼び出されるたびに、テキストを１ページずつ監視することを更に含む、請求項１に記載の方法。
【請求項１２】
前記特定の監視対象の試みに起因する印刷操作を開始した特定のアプリケーションに関連付けられている特定のアプリケーションレベルのコンテキスト情報を識別することが、
遠隔手続き呼び出しなりすましアプリケーションプログラムインタフェースを傍受することと、
遠隔手続き呼び出しなりすまし印刷呼び出しを行っている前記印刷スプーラを検出することと、
前記印刷スプーラが前記傍受される遠隔手続き呼び出しなりすまし呼び出しに渡したアプリケーション識別子を読み取ることと、を更に含む、請求項１に記載の方法。
【請求項１３】
前記特定の監視対象の試みに起因する印刷操作を開始した特定のアプリケーションに関連付けられている特定のアプリケーションレベルのコンテキスト情報を識別することが、
前記特定の監視対象の試みに起因する前記印刷操作を開始した前記特定のアプリケーションに関連付けられているユーザを識別することを更に含む、請求項１に記載の方法。
【請求項１４】
前記印刷ドライバレベルで前記プリンタに特定のテキストを送信する監視対象の試みに、データ損失防止ポリシーを適用することが、
前記プリンタにコンテンツを送信する試みをブロックすることと、
制限付きコンテンツを編集するが非制限付きコンテンツは前記プリンタに送信することと、
前記プリンタにコンテンツを送信する試みのログを取ることと、
前記プリンタにコンテンツを送信する試みに関する通知を管理者に送信することと、
前記プリンタにコンテンツを送信する試みに関連付けられたユーザに関する追加操作をブロックすることと、からなる群から少なくとも２つの処置を実施することを更に含む、請求項１に記載の方法。
【請求項１５】
印刷操作を開始する特定のアプリケーションに関係なく、また、前記特定のアプリケーションによって使用される特定の印刷インタフェースに関係なく、印刷操作を監視し、データ損失防止ポリシーを施行するためのコンピュータシステムであって、
少なくとも１つのプロセッサと、
システムメモリと、
前記システムメモリに存在する印刷ドライバロード検出モジュールであって、印刷スプーラにロードされている印刷ドライバを監視し、検出するようにプログラムされている、印刷ドライバロード検出モジュールと、
前記システムメモリに存在する印刷ドライバ傍受モジュールであって、前記印刷ドライバが前記印刷スプーラにロードされるときに作成されるドライバオブジェクトの作成を傍受するようにプログラムされている、印刷ドライバ傍受モジュールと、
前記システムメモリに存在するデバイスオブジェクト関数傍受モジュールであって、前記ドライバオブジェクトがデバイスオブジェクトを作成するときに、デバイスオブジェクト印刷関数を傍受するようにプログラムされている、デバイスオブジェクト関数傍受モジュールと、
前記システムメモリに存在するテキスト監視モジュールであって、前記テキスト監視モジュールは、印刷ドライバレベルでプリンタにテキストを送信する試みを監視するようにプログラムされており、前記監視対象の試みは、少なくとも１つの傍受されるデバイスオブジェクト関数によって行われる、テキスト監視モジュールと、
前記システムメモリに存在するアプリケーション識別モジュールであって、前記プリンタに特定のテキストを送信する特定の監視対象の試みごとに、前記特定の監視対象の試みに起因する印刷操作を開始した特定のアプリケーションに関連付けられている、特定のアプリケーションレベルのコンテキスト情報を識別するようにプログラムされている、アプリケーション識別モジュールと、
前記システムメモリに存在するポリシー適用モジュールであって、前記ポリシー適用モジュールは、前記印刷ドライバレベルで前記プリンタに特定のテキストを送信する監視対象の試みにデータ損失防止ポリシーを適用するようにプログラムされており、特定の監視対象の試みへの前記データ損失防止ポリシーの前記適用において、特定の識別されたアプリケーションレベルのコンテキスト情報と、前記特定の監視対象の試みの特定のテキストと、を考慮に入れる、ポリシー適用モジュールと、を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概ね、コンピュータセキュリティ及びデータ損失防止、より具体的には、印刷操作を介した印刷インタフェース技術診断によるデータ損失防止に関する。
【背景技術】
【０００２】
クラウドベースのストレージ及びモバイルコンピューティングデバイスの普及に伴い、企業及び他の組織は、不注意なユーザアクティビティ及び悪意のあるユーザアクティビティの両方の結果として、その機密情報の損失及び漏洩を被っている。データ損失防止（「ＤＬＰ」）システムは、機密情報がアクセス、送信、及び記憶されるときに、その情報に対する操作を監視、検出、及びブロックすることができる。そうすることにより、ＤＬＰシステムは、組織ポリシーに応じて機密情報を保護することができる。例えば、所定の会社内の人事部のある社員が、自宅住所及び社会保障番号などの従業員個人情報にアクセスすることを許可されている場合がある。しかし、そのような従業員個人情報を印刷する、又は会社以外のクラウドストレージにその情報をコピーすることは、会社のポリシー違反になり得る。ＤＬＰシステムは、特定の情報を機密として分類し、そのような情報を識別して監視し、望ましくない出来事を検出してブロックすることができる。
【０００３】
印刷は、デジタル情報が物理媒体に変換される、ＤＬＰにとって固有な脅威ベクタである。このため、印刷は、ＤＬＰシステムにとって監視することが重要な操作である。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）下では、印刷操作を監視することは、従来、ＭｉｃｒｏｓｏｆｔのＧｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ（「ＧＤＩ」）アプリケーションプログラムインタフェース（「ＡＰＩ」）を傍受することによって実施された。しかし、これは、当該のアプリケーションがＧＤＩベースの印刷を使用している場合のみに機能する。Ｗｉｎｄｏｗｓの印刷技術は、実質的に長年にわたって発展し、現在、ＧＤＩ、拡張マークアップ言語（「ＸＭＬ」）Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（「ＸＰＳ」）、Ｐｒｉｎｔ  Ｔｉｃｋｅｔ、及びＤｏｃｕｍｅｎｔ  Ｐａｃｋａｇｅ  ＡＰＩなどのインタフェース技術を利用している。
【０００４】
更に、いくつかのシナリオにおいては、例えば、アプリケーションのサンドボックス化及びコードの整合性チェックを用いて、アプリケーションレベルで印刷操作を傍受するために特定のアプリケーションを認識することさえ、ＤＬＰシステムにとっては実用的ではない。
【０００５】
これらの問題に対処することが望ましいと考えられる。
【発明の概要】
【０００６】
印刷操作は、印刷操作を開始する特定のアプリケーションとは関係なく、また、アプリケーションによって使用される特定の印刷インタフェース技術とは関係なく、監視され、ＤＬＰポリシーが適用される。ＤＬＰ構成要素は、印刷スプーラにロードされる印刷ドライバを監視し、検出する。これは、印刷ドライバを印刷スプーラ内にロードするシステム関数（例えば、Ｗｉｎｄｏｗｓシステム関数ＬｏａｄＬｉｂｒａｒｙ）を傍受する形態を取り得る。一実施形態では、印刷フックが印刷スプーラに注入され、印刷フックは関連のあるシステム関数を傍受する。別の実施形態では、印刷フックコードは印刷ドライバとして登録され、それによってＷｉｎｄｏｗｓは、印刷フックコードを印刷スプーラにロードする。ドライバとしてスプーラで稼働する印刷フックコードは、次いで、関連のあるシステム関数を傍受する。関連のあるシステム関数（例えば、ＬｏａｄＬｉｂｒａｒｙ）を傍受することにより、スプーラへのあらゆる印刷ドライバのロードが検出される（例えば、フォルダＳｙｓｔｅｍ３２￥ｓｐｏｏｌ￥ｄｒｉｖｅｒｓから）。
【０００７】
印刷ドライバが印刷スプーラにロードされると、印刷スプーラは、対応するドライバオブジェクトを作成する。例えば、ロードされた印刷ドライバのＤｌｌＧｅｔＣｌａｓｓＯｂｊｅｃｔメソッドを傍受する、及び作成されたドライバオブジェクトをフックするためのＩＣｌａｓｓＦａｃｔｏｒｙ．ＣｒｅａｔｅＩｎｓｔａｃｅメソッドを傍受することにより、ドライバオブジェクトの作成が傍受される。インスタンス化されたドライバオブジェクトは、様々な印刷関数を実行するため、複数のデバイスオブジェクトを作成する。ドライバオブジェクトがデバイスオブジェクトを作成すると、対象となるデバイスオブジェクト印刷関数が傍受される。これは、印刷スプーラがＩＣｌａｓｓＦａｃｔｏｒｙ．ＣｒｅａｔｅＩｎｓｔａｃｅメソッドを介してドライバオブジェクトをインスタンス化するときに、ドライバ関数のテーブルをエクスポートするドライバオブジェクトメソッドを傍受する形態を取り得る。印刷スプーラがテーブルを取り込むと、対象となる特定のテーブルエントリが置換される。対象となるデバイスオブジェクト印刷関数は、実施形態間で変わり得るが、典型的には、行及びページレベルの出力に関与する関数、並びに状態管理に関与する関数など、プリンタへのコンテンツの送信に関連付けられたデバイスオブジェクト印刷関数を含む。一実施形態では、ＳｔａｒｔＤｏｃ、ＥｎｄＤｏｃ、ＴｅｘｔＯｕｔ、ＳｅｎｄＰａｇｅ、Ｓｔａｒｔ  Ｂａｎｄｉｎｇ、及びＮｅｘｔ  Ｂａｎｄが傍受される。
【０００８】
傍受されたデバイスオブジェクト関数によって印刷ドライバレベルでプリンタにテキストを送信する試みが監視される。これは、傍受されたデバイスオブジェクト印刷関数が、プリンタにページを送信するために呼び出されるたびに、１ページずつテキストを監視することを含み得る。このレベルで処理されるコンテンツがグリフ形式である場合には、グリフはユニコードに変換され得る。
【０００９】
特定のテキストをプリンタに送信する監視対象の試みごとに、基礎をなす印刷操作を開始した特定のアプリケーションに関連付けられているアプリケーションレベルのコンテキスト情報が識別される。一実施形態では、遠隔手続き呼び出し（「ＲＰＣ」）ＡＰＩが傍受され、印刷スプーラがＲＰＣなりすまし印刷呼び出しを行った時点で検出される。これが発生すると、印刷スプーラが傍受されたＲＰＣなりすまし印刷呼び出しに渡したアプリケーションＩＤが読み取られる。このアプリケーションＩＤから、関連ユーザ及び規定するＤＬＰポリシーなど、追加のアプリケーションレベルのコンテキスト情報が判別され得る。
【００１０】
ＤＬＰポリシーは、印刷ドライバレベルでプリンタに特定のテキストを送信する監視対象の試みに適用される。特定の監視対象の各試みへのＤＬＰポリシーの適用には、識別された特定のアプリケーションレベルのコンテキスト情報及び監視対象の試みの特定のテキストを考慮に入れることができる。ＤＬＰポリシーを適用することは、例えば、プリンタにコンテンツを送信する試みをブロックすること、制限付きコンテンツは編集するが非制限付きコンテンツはプリンタに送信すること、プリンタにコンテンツを送信する試みのログを取ること、プリンタにコンテンツを送信する試みに関する通知を管理者に送信すること、プリンタにコンテンツを送信する試みに関連付けられたユーザに関する追加の操作をブロックすること、などの処置を取ることを更に含み得る。監視は、印刷ドライバレベルで行われるため、ＤＬＰポリシーは、発信元のアプリケーションによって使用される特定の印刷インタフェースに関わらず（例えば、ＧＤＩ、ＸＰＳ、Ｄｏｃｕｍｅｎｔ  Ｐａｃｋａｇｅなど）、印刷操作に適用され得る。
【００１１】
この発明の概要及び後述の発明を実施するための形態において説明される特徴及び利点は、すべてを包含したものではなく、特に、本特許の図面、明細書、及び特許請求の範囲を考慮すれば、関連分野の当業者には、数多くの追加の特徴及び利点が明らかとなろう。更に、本明細書で使用する言語は読みやすさ及び指示上の目的で主に選択されたものであり、本発明の主題を線引きする又は制限するために選択されたものではない場合があり、そうした本発明の主題を決定するには特許請求の範囲に頼ることが必要であることに留意すべきである。
【図面の簡単な説明】
【００１２】
【図１】いくつかの実施形態における、印刷ＤＬＰマネージャを実装可能なネットワークアーキテクチャの一例を示すブロック図である。
【００１３】
【図２】いくつかの実施形態における、印刷ＤＬＰマネージャの実装に適したコンピュータシステムのブロック図である。
【００１４】
【図３】いくつかの実施形態における、印刷ＤＬＰマネージャの動作を示すブロック図である。
【００１５】
図面は、単に例示目的のために、様々な実施形態を描写する。当業者は、本明細書に説明される原理から逸脱することなく、本明細書に例示される構造及び方法の代替の実施形態を採用し得ることが、以下の考察から容易に認識されるであろう。
【発明を実施するための形態】
【００１６】
図１は、印刷ＤＬＰマネージャ１０１を実装可能なネットワークアーキテクチャ１００の一例を示すブロック図である。例示されるネットワークアーキテクチャ１００は、複数のクライアント１０３Ａ、１０３Ｂ、及び１０３Ｎ、並びに複数のサーバ１０５Ａ及び１０５Ｎを備える。図１では、印刷ＤＬＰマネージャ１０１は、クライアント１０３Ａ〜Ｃのそれぞれに存在するように例示されている。これは一例にすぎず、様々な実施形態において、このシステム１０１の様々な機能が、クライアント１０３、サーバ１０５上でインスタンス化され得るか、又は複数のクライアント１０３間及び／若しくはサーバ１０５間に分散され得ることを理解されたい。
【００１７】
クライアント１０３及びサーバ１０５は、図２に例示され、以降で説明されるものなどのコンピュータシステム２１０を使用して実装することができる。クライアント１０３及びサーバ１０５は、図２に関連して以降で説明されるように、ネットワークインタフェース２４８又はモデム２４７を介して、ネットワーク１０７に通信可能に連結される。クライアント１０３は、例えば、ウェブブラウザ又は他のクライアントソフトウェア（図示せず）を使用して、サーバ１０５上のアプリケーション及び／又はデータにアクセスすることができる。クライアント１０３は、ネットワーク１０７に接続し、アプリケーションを実行することが可能なポータブルコンピュータシステムを備える、デスクトップ／ラップトップコンピュータ、又はモバイルコンピューティングデバイスの形態であり得る。そのようなモバイルコンピューティングデバイスは、時にはスマートフォンと称されるが、そのような名称がない多くの携帯電話も、これらの能力を有する。タブレットコンピュータは、モバイルコンピューティングデバイスの別の例である。
【００１８】
図１には３つのクライアント１０３及び２つのサーバ１０５が一例として例示されているが、実際にはもっと多くの（又はもっと少ない）数のクライアント１０３及び／又はサーバ１０５を配備することができる。一実施形態では、ネットワーク１０７はインターネットの形態である。他の実施形態において、他のネットワーク１０７又はネットワークベースの環境を使用することができる。
【００１９】
図２は、印刷ＤＬＰマネージャ１０１の実装に適したコンピュータシステム２１０のブロック図である。クライアント１０３及びサーバ１０５の両方が、そのようなコンピュータシステム２１０の形態で実装され得る。例示されるように、コンピュータシステム２１０の１つの構成要素は、バス２１２である。バス２１２は、コンピュータシステム２１０の他の構成要素、例えば、少なくとも１つのプロセッサ２１４、システムメモリ２１７（例えば、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ）、入力／出力（Ｉ／Ｏ）コントローラ２１８、スピーカ２２０などの外部オーディオデバイスに通信可能に連結されるオーディオ出力インタフェース２２２、ディスプレイ画面２２４などの外部ビデオ出力デバイスに通信可能に連結されるディスプレイアダプタ２２６、ユニバーサルシリアルバス（ＵＳＢ）ポート２２８、シリアルポート２３０、パラレルポート（例示せず）などといった１つ以上のインタフェース、キーボード２３２に通信可能に連結されるキーボードコントローラ２３３、少なくとも１つのハードディスク２４４（若しくは他の形態（複数を含む）の磁気媒体）に通信可能に連結される記憶インタフェース２３４、ファイバチャネル（ＦＣ）ネットワーク２９０と接続するように構成されるホストバスアダプタ（ＨＢＡ）インタフェースカード２３５Ａ、ＳＣＳＩバス２３９に接続するように構成されるＨＢＡインタフェースカード２３５Ｂ、光ディスク２４２を受容するように構成される光ディスクドライブ２４０、例えば、ＵＳＢポート２２８を介してバス２１２に連結されるマウス２４６（若しくは他のポインティングデバイス）、例えば、シリアルポート２３０を介してバス２１２に連結されるモデム２４７、並びに、例えば、直接バス２１２に連結される１つ以上の有線及び／又は無線ネットワークインタフェース（複数を含む）２４８に通信可能に連結する。
【００２０】
他の構成要素（図示せず）は、類似の様態で接続され得る（例えば、ドキュメントスキャナ、デジタルカメラ、プリンタなど）。逆に、図２に例示される構成要素のすべてが、存在する必要があるわけではない（例えば、スマートフォン及びタブレットは、典型的に、光ディスクドライブ２４０、外部キーボード２４２、又は外部ポインティングデバイス２４６を有しないが、様々な外部構成要素が、例えば、ＵＳＢポート２２８を介して、モバイルコンピューティングデバイスに連結され得る）。様々な構成要素は、図２に示されるものとは異なる方法で相互接続することができる。
【００２１】
バス２１２は、プロセッサ２１４と、上で記載されるようにＲＯＭ及び／又はフラッシュメモリ、並びにＲＡＭを含み得るシステムメモリ２１７との間のデータ通信を可能にする。ＲＡＭは、典型的には、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ＲＯＭ及び／又はフラッシュメモリは、他のコードと共に、特定の基本的なハードウェアオペレーションを制御するベーシックインプット・アウトプットシステム（ＢＩＯＳ）を含み得る。アプリケーションプログラムはローカルコンピュータ可読媒体（例えばハードディスク２４４、光ディスク２４２）に格納され、システムメモリ２１７にロードされ、そしてプロセッサ２１４により実行され得る。アプリケーションプログラムは、例えばネットワークインタフェース２４８又はモデム２４７を介して、遠隔の場所（すなわち、遠隔に配置されたコンピュータシステム２１０）からシステムメモリ２１７にロードすることもできる。図２では、印刷ＤＬＰマネージャ１０１は、システムメモリ２１７に存在するように例示されている。印刷ＤＬＰマネージャ１０１の作用は、図３に関連して以下に詳細に説明される。
【００２２】
記憶インタフェース２３４は、１つ以上のハードディスク２４４（及び／又はその他の標準記憶媒体）に連結される。ハードディスク（複数可）２４４は、コンピュータシステム２１０の一部であってもよく、又は物理的に別個であり、他のインタフェースシステムを介してアクセスされてもよい。
【００２３】
ネットワークインタフェース２４８及び／又はモデム２４７は、例えばインターネットなどのネットワーク１０７に、直接的又は間接的に、通信可能に連結され得る。そのような連結は、有線又は無線であり得る。
【００２４】
図３は、一部の実施形態における、印刷ＤＬＰマネージャ１０１の操作を例示する。前述のように、印刷ＤＬＰマネージャ１０１の機能は、クライアント１０３、サーバ１０５上に存在し得るか、又は印刷ＤＬＰマネージャ１０１の機能がネットワーク１０７上のサービスとして提供される、クラウドベースのコンピューティング環境内を含む、複数のコンピュータシステム２１０間に分散され得る。印刷ＤＬＰマネージャ１０１が単一のエンティティとして図３に例示されているが、例示される印刷ＤＬＰマネージャ１０１は、所望のとおりに単一又は複数のモジュールとしてインスタンス化され得る機能の集合を表すことを理解されたい（印刷ＤＬＰマネージャ１０１の特定の複数のモジュールのインスタンス化が、図３に例示される）。印刷ＤＬＰマネージャ１０１のモジュールは、任意のコンピュータシステム２１０のシステムメモリ２１７（例えばＲＡＭ、ＲＯＭ、フラッシュメモリ）内でインスタンス化することができ（例えばオブジェクトコード又は実行可能画像として）、これによって、コンピュータシステム２１０のプロセッサ２１４がモジュールを処理する際、コンピュータシステム２１０が関連する機能を実行することを理解されたい。本明細書で使用されるとき、「コンピュータシステム」、「コンピュータ」、「クライアント」、「クライアントコンピュータ」、「サーバ」、「サーバコンピュータ」及び「コンピューティングデバイス」という用語は、記載される機能を実行するように構成及び／又はプログラミングされた１つ以上のコンピュータを意味する。更に、印刷ＤＬＰマネージャ１０１の機能を実装するためのプログラムコードは、コンピュータ可読記憶媒体上に記憶され得る。この文脈において、磁気又は光学記憶媒体などの任意の形態の有形のコンピュータ可読記憶媒体を使用することができる。本明細書で使用されるとき、「コンピュータ可読記憶媒体」という用語は、内在する物理的な媒体とは別個の電気信号を意味しない。
【００２５】
図３に例示されるように、印刷ＤＬＰマネージャ１０１は、エンドポイントコンピュータ２１０（例えば、クライアント１０３）上で稼働する。図３はまた、ＤＬＰエンドポイントエージェント３０１を例示する。図及び説明の効率を高めるため、印刷ＤＬＰマネージャ１０１及びＤＬＰエンドポイントエージェント３０１は、別個のエンティティとして例示される。これらのアイテムは機能の集合を表し、いくつかの実施形態では、印刷ＤＬＰマネージャ１０１は、ＤＬＰエンドポイントエージェント３０１の構成要素としてインスタンス化されることを理解されたい。ＤＬＰエンドポイントエージェント３０１によって又はそれと共に実施される、本明細書に記載の機能のいくつかは、いくつかの実施形態では、１つ以上のリモートコンピュータ２１０（例えば、クラウドベースサーバ１０５）上で実行中の１つ以上のバックエンドＤＬＰ構成要素（例示せず）によって実施され得る。
【００２６】
後述するように、印刷ＤＬＰマネージャ１０１は、印刷操作を監視し、どのような特定のアプリケーション３０３が印刷操作を開始するかに関係なく、また、どのような特定の印刷インタフェースがこれらのアプリケーション３０３で使用されるかに関係なく、ＤＬＰポリシー３００を施行する。このため、印刷ＤＬＰマネージャ１０１は、印刷スプーラ３０７において印刷ドライバ３０５を傍受し、これにより、印刷ＤＬＰマネージャ１０１に、発信元のアプリケーション３０３より下のシステムレベルで印刷されたすべてのコンテンツへのアクセスが付与される。以下に詳細に説明するように、ＤＬＰポリシー３００を施行するためにシステムレベルの動作を発信元のアプリケーション３０３及び対応するユーザと一致させるため、印刷ＤＬＰマネージャ１０１は、遠隔手続き呼び出し（ＲＰＣ）なりすましＡＰＩを傍受する。アプリケーション３０３がＲＰＣを介して印刷を呼び出し、印刷時に印刷スプーラ３０７がアプリケーション３０３になりすますため、ＲＰＣなりすましＡＰＩを傍受することにより、所定の印刷操作を開始したアプリケーション３０３のＩＤへのシステムレベルのアクセスと、それゆえに対応するユーザ及び関連のある権限と、が提供される。印刷ＤＬＰマネージャ１０１はこのように、印刷されるコンテンツを監視し、アプリケーション３０３によって使用される印刷プラットフォームに関係なく、また、特定のアプリケーション３０３を監視することも、又は更にはそれらを認識することも必要とせずに、ＤＬＰポリシー３００を施行する（例えば、あるユーザが特定の機密情報を任意の所望されるレベルの粒度で印刷することをブロックする）ことができる。
【００２７】
より具体的には、印刷ＤＬＰマネージャ１０１の印刷ドライバロード検出モジュール３０９は、印刷スプーラ３０７への印刷ドライバ３０５のロードを監視し、検出する。一実施形態では、印刷ドライバロード検出モジュール３０９は、印刷スプーラ３０７に印刷フックを注入することによりこれを行う。印刷フックは、印刷ドライバ３０５を印刷スプーラ３０７にロードするシステム関数を傍受する。Ｗｉｎｄｏｗｓでは、この関数は現在ＬｏａｄＬｉｂｒａｒｙであるが、システム関数名は、Ｗｉｎｄｏｗｓのバージョン間など、経時的に変化し得る。ＬｏａｄＬｉｂｒａｒｙを傍受することにより、印刷フックは、Ｓｙｓｔｅｍ３２￥ｓｐｏｏｌ￥ｄｒｉｖｅｒｓからなど、印刷スプーラ３０７へのあらゆる印刷ドライバ３０５のロードを検出する。別の実施形態では、印刷ドライバロード検出モジュール３０９は、印刷ドライバとして印刷フックコードを登録し、次いでその印刷フックコードをＷｉｎｄｏｗｓが印刷スプーラ３０７にロードする。フックコードを含むこの疑似印刷ドライバは、続けてＬｏａｄＬｉｂｒａｒｙを傍受し、また印刷スプーラ３０７へのあらゆる実際の印刷ドライバ３０５のロードを検出する。どちらにしても、印刷ドライバロード検出モジュール３０９は、コードを印刷スプーラ３０７に持続的にロードする。このコード（注入された印刷フック又はロードされた疑似印刷ドライバ）は次いで、印刷ドライバ３０５を印刷スプーラ３０７にロードするＬｏａｄＬｉｂｒａｒｙを傍受する。印刷ドライバのロード関数を傍受することにより、印刷ドライバロード検出モジュール３０９は、より高いレベルの印刷インタフェース技術の使用にかかわらず（例えば、ＧＤＩ、ＸＰＳ、Ｄｏｃｕｍｅｎｔ  Ｐａｃｋａｇｅなど）、印刷ドライバ３０５が、データをプリンタ３１１に送信するため、印刷スプーラ３０７にロードされるたびに検出する。
【００２８】
印刷ドライバ３０５が印刷スプーラ３０７にロードされると、印刷スプーラ３０７は、対応するドライバオブジェクトを作成する。印刷ＤＬＰマネージャ１０１の印刷ドライバ傍受モジュール３１３は、ドライバオブジェクトの作成を傍受する。これは、ロードされた印刷ドライバがクラスオブジェクトを検索するためのメソッド（例えば、実際の印刷ドライバ３０５のＤｌｌＧｅｔＣｌａｓｓＯｂｊｅｃｔメソッド）を傍受することによって、また、ドライバオブジェクトをフックするためにオブジェクトのインスタンスを作成するためのメソッド（例えば、ＩＣｌａｓｓＦａｃｔｏｒｙ．ＣｒｅａｔｅＩｎｓｔａｃｅメソッド）を傍受することによって、実行され得る。これらの操作を実施するメソッドは、例えば、異なるバージョンのＷｉｎｄｏｗｓでは、名前が異なる場合があることを理解されたい。
【００２９】
インスタンス化されたドライバオブジェクトは、様々な印刷関数を実行するため、複数のデバイスオブジェクトを作成する。印刷ＤＬＰマネージャ１０１のデバイスオブジェクト関数傍受モジュール３１５は、所望のＤＬＰ機能を実装するための対象となるデバイスオブジェクト印刷関数を傍受する。これを可能にするため、印刷スプーラ３０７がＩＣｌａｓｓＦａｃｔｏｒｙ．ＣｒｅａｔｅＩｎｓｔａｎｃｅメソッドを介してドライバオブジェクトをインスタンス化しているときに、デバイスオブジェクト関数傍受モジュール３１５は、ドライバ関数のテーブルをエクスポートするドライバオブジェクトメソッドを傍受し得る。印刷スプーラ３０７がテーブルを取り込むと、デバイスオブジェクト関数傍受モジュール３１５は、対象となるエントリを印刷ＤＬＰマネージャ１０１の関数に置換する。
【００３０】
傍受するための特定のデバイスオブジェクト印刷関数は、実施形態間で変わり得るが、典型的には、プリンタ３１１へのコンテンツの送信に関連付けられたものが傍受され、それによってプリンタに送信されるコンテンツが監視されて、特定のＤＬＰポリシーが所望のとおりに施行される。例えば、デバイスオブジェクト関数傍受モジュール３１５は、プリンタ３１１への行及びページレベルの出力に関与するデバイスオブジェクト印刷関数、並びに関連のある状態管理関数を傍受し得る。一実施形態では、デバイスオブジェクト関数傍受モジュール３１５は、ＳｔａｒｔＤｏｃ、ＥｎｄＤｏｃ、ＴｅｘｔＯｕｔ、ＳｅｎｄＰａｇｅ、Ｓｔａｒｔ  Ｂａｎｄｉｎｇ、及びＮｅｘｔ  Ｂａｎｄを傍受する。ＳｔａｒｔＤｏｃ及びＥｎｄＤｏｃは、ドキュメントの状態管理の開始及び終了を実行する。ＴｅｘｔＯｕｔは、ページ内のコンテンツをキャプチャし、それをバッファに送信するために使用される。ＳｔａｒｔＢａｎｄｉｎｇ及びＮｅｘｔＢａｎｄは、複数回呼び出されるＴｅｘｔＯｕｔの前操作及び後操作を識別するために使用される（具体的には、ＳｔａｒｔＤｏｃが呼び出された後、ＳｔａｒｔＢａｎｄｉｎｇ及びＴｅｘｔＯｕｔがバッファに行を送信するために呼び出され、ＮｅｘｔＢａｎｄ及びＴｅｘｔＯｕｔが次いで後処理確認のコンテキスト内で呼び出される。この呼び出しシーケンスは、ページが１行ずつバッファに送信されるまで繰り返される）。ＳｅｎｄＰａｇｅは、バッファからプリンタ３１１にコンテンツのページを送信する。これらの関数を実施する印刷関数の名前、並びに前処理操作及び後処理操作の実装の詳細は、例えば、異なるバージョンのＷｉｎｄｏｗｓで変わり得ることを理解されたい）。
【００３１】
印刷ＤＬＰマネージャ１０１のテキスト監視モジュール３１７は、より詳細に後述するように、所望のＤＬＰ機能の実施を有効にするテキストをプリンタ３１１に送信する試みを監視する。プリンタ３１１にテキストを送信する監視対象の試みは、傍受されるデバイスオブジェクト印刷関数によって、印刷ドライバレベルで行われることを理解されたい。一実施形態では、ＳｅｎｄＰａｇｅ（又は同等の関数）がバッファからプリンタ３１１にページを送信するために呼び出されるたびに、テキスト監視モジュール３１７は、１ページずつテキストを監視する。上述のデバイスオブジェクト印刷関数は、ドキュメントからバッファへ１行ずつ、及びバッファからプリンタ３１１へ１ページずつテキストを送信する。ＤＬＰ分析は、プリンタ３１１に送信されるテキストに対して実施されるため、この実施形態では、分析はページ単位で実施される。他のシナリオでは、ページ以外のテキストの単位は、プリンタ３１１に送信され得（例えば、印刷機能の特定のインスタンス化によって異なるサイズに設定されたブロック）、そのような場合、テキスト監視モジュール３１７は、ページではなくそのようなブロックを処理する。
【００３２】
場合によっては、ＴｅｘｔＯｕｔによって処理されるドキュメント内のデータは、データの代わりにグリフ形式である（例えば、ＰＤＦファイルの場合）。グリフは、文字、文字の一部、又は複数の文字の画像のバイナリ表現である。グリフコンテンツに対するＤＬＰ分析を実施するため、グリフはユニコード（又は別の符号化文字マッピング）に変換される。例えば、印刷ＤＬＰマネージャ１０１がこの目的のために利用できるユニコードに、グリフを変換するためのＷｉｎｄｏｗｓサービスが存在する。より具体的には、一実施形態では、実行時に印刷ＤＬＰマネージャ１０１がｗｉｎ３２ｋ．ｓｙｓ（カーネルＧＵＩサブシステム）をユーザモードにロードし、フォント翻訳にそのメソッドを使用する。他の実施形態では、グリフをユニコードに変換するために、異なる実装が使用され得る。いくつかの実施形態では、グリフ以外のグラフィック形式は、所望のとおりにＤＬＰ分析用のテキストに変換される。
【００３３】
上述の機能は、印刷操作を開始した特定のアプリケーション３０３より下のプリンタドライバのレベルにおける、プリンタ３１１に送信されるテキストの監視を可能にする。しかし、これは、印刷されるすべてのコンテンツへのアクセスを提供するが、印刷操作を開始したアプリケーション３０３及びユーザなどのアプリケーションレベルの情報を識別しない。印刷操作は、システムコンテキストで実行する印刷スプーラ３０７において傍受されるが、実際の監視対象の印刷操作はそれぞれ、アプリケーションコンテキストにおいてアプリケーション３０３を操作するユーザによって開始される。印刷は、バックグラウンドで稼働し得る非同期操作であり、そのため、印刷ＤＬＰマネージャ１０１は、印刷操作がドライバレベルで行われるときにアクティブであるアプリケーション３０３が、印刷操作を実施したアプリケーション３０３であると簡単に想定することができない。例えば、印刷ジョブがドライバレベルで処理されているときに、あるアプリケーション３０３（例えば、ワードプロセッサ）を実行中のユーザは、ドキュメントを印刷し、それを保存し、ワードプロセッサを閉じるか又は最小化し、別のアプリケーション３０３（例えば、スプレッドシートプログラム）を開き、アクティブに作業している場合がある。アプリケーションのコンテキスト情報並びに印刷されるコンテンツは、印刷操作を介したＤＬＰ分析の一部として使用されるため（例えば、ＤＬＰポリシー３００に従って特定のユーザを監視し、特定のコンテンツの印刷をブロックするため）、印刷ＤＬＰマネージャ１０１のアプリケーション識別モジュール３１９は、特定の印刷操作を発信した特定のアプリケーション３０３を識別する。後述のように、識別されたアプリケーション３０３から、関連のあるアプリケーションコンテキスト情報の残部（例えば、ユーザ及び権限）が判別され得る。
【００３４】
ドライバレベルで行われる印刷操作を発信した特定のアプリケーション３０３を識別するため、アプリケーション識別モジュール３１９は、関連のある遠隔手続き呼び出し（ＲＰＣ）処理関数（例えば、ＲＰＣなりすましＡＩＰ）を傍受する。印刷要求は、アプリケーション３０３によってＲＰＣとして行われる。印刷スプーラ３０７が、アプリケーション３０３によって行われる印刷要求のＲＰＣ呼び出しを受信すると、印刷スプーラ３０７は、アプリケーションになりすまして印刷操作を実行する。これを行うため、印刷スプーラ３０７は、印刷するためのＲＰＣなりしまし呼び出しをアプリケーション３０３として行う。ＲＰＣなりすましＡＰＩを傍受することにより、アプリケーション識別モジュール３１９は、印刷スプーラ３０７がＲＰＣなりすまし印刷呼び出しを行った時点で検出する。アプリケーション識別モジュール３１９は、印刷スプーラ３０７が傍受されたＲＰＣなりすまし印刷呼び出しに渡したアプリケーションＩＤを読み取り、それにより、特定の印刷操作を発信したアプリケーション３０３を識別する。アプリケーションＩＤから、アプリケーション識別モジュール３１９は、ユーザＩＤ及びそのユーザに係る特定のＤＬＰポリシー３００などの追加のアプリケーションコンテキスト情報を判別し得る。このように、特定の印刷操作によってドライバレベルでプリンタ３１１に送信されるコンテンツは、発信元のアプリケーション３０３及びその関連ユーザに一致させられ得る。
【００３５】
ドライバレベルでプリンタ３１１に送信されるテキストのそれぞれのページ（又は他のサイズに設定されたブロック）に関する発信元のアプリケーション３０３及び関連ユーザの識別の両方により、印刷ＤＬＰマネージャ１０１のポリシー適用モジュール３２１は、ＤＬＰポリシー３００を施行する、ないしは別の方法で印刷操作を介して任意の所望するレベルの粒度でＤＬＰ分析を実行することができる。例えば、所定のユーザがあるコンテンツ（例えば、社会保障番号などの特定の秘密情報）を印刷することを制限されている場合、特定のコンテンツに関して、そのユーザにより開始されたあらゆる操作においてプリンタ３１１に送信されたテキストのそれぞれのページが監視される。ユーザが制限付きコンテンツを印刷しようとすると、その試みは検出され、ＤＬＰポリシー３００に従って１つ以上の処置がとられ得る（例えば、試みられた印刷操作をブロックする、制限付きコンテンツを編集するが、非制限コンテンツはプリンタ３１１に送信する、試みられた操作のログを取る、ユーザに警告する又は別の方法で（例えば、ユーザインタフェースを介して）注意喚起する、通知（例えば、Ｅメール、テキストなど）を管理者に送信する、ユーザに関する他の動作をブロックする、など）。ＤＬＰ分析及び施行は、任意の所望されるレベルの粒度で（例えば、ユーザ、グループ、部門、アプリケーション又はアプリケーションのタイプ、ドキュメント／ファイル、特定のコンテンツ、特定のコンテキストなどのレベルで）印刷操作を介して実施され得ることを理解されたい。実際のＤＬＰ分析及び施行は、ＤＬＰエンドポイントエージェント３０１と共に又はそれによって実施され得ることを更に理解されたい。ＤＬＰポリシー３００に基づいて、一部のユーザは、制限なしに任意のコンテンツを印刷することが許可されている場合があり、一部のユーザは印刷することをまったく許可されてない場合があり、他のユーザは、特定の秘密情報を印刷すること及び／又は特定の状況下若しくは特定のコンテキストにおいて印刷することを制限されている場合があることに留意されたい。
【００３６】
上述の機能を使用して、印刷操作がドライバレベルで検出されると、ユーザ及び／又はユーザアプリケーションレベルのコンテキスト情報が判別され、必要に応じてＤＬＰポリシー３００に従って、印刷操作がプリンタ３１１に送信することを試みるコンテンツが監視され、ＤＬＰ操作（例えば、分析、施行など）が所望のとおりに適用される。換言すれば、ＤＬＰポリシー３００は、発信元のアプリケーションに関連付けられたユーザなどのアプリケーションレベルのコンテキスト情報、及び操作が印刷を試みている特定のテキストに基づいて、印刷ドライバレベルでプリンタ３１１にテキストを送信するすべての試みに適用され得る。
【００３７】
当業者によって理解されるであろうように、本発明は、本発明の趣旨又は本質的な特性から逸脱することなく、他の特定の形態で具現化され得る。同様に、部分、モジュール、エージェント、マネージャ、構成要素、機能、手順、行為、階層、特徴、属性、方法論、データ構造及びその他の態様の具体的な名称及び区分は、必須のものでも重要なものでもなく、本発明又はその特徴を実装するメカニズムは、別の名称、区分、及び／又は形式を有し得る。上記の記載は、説明を目的として特定の実施形態を参照して記載してきた。しかしながら、上述の例示の考察は、包括的であること、又は開示される正確な形態に限定することを意図するものではない。上述の教示を考慮して、多くの修正及び変形が可能である。実施形態は、関連する原理及びその実際的な適用を最適に説明するよう選択及び記述されており、これにより、他の当業者が、想到される特定の使用に好適であり得るような様々な改変を行うか行わないかにかかわらず、様々な実施形態を最適に利用できる。
【図１】
2019513254.tif 000003
【図２】
2019513254.tif 000004
【図３】
2019513254.tif 000005
【国際調査報告】
2019513254.tif 000006