Solaris X Window System 開発ガイド

機密保護コンテキストの生成

DPS のコンテキストは通常グローバルデータを使用できるため、あるコンテキストから別のコンテキストの動作を見ることができます。たとえば、あるコンテキストが作成中のドキュメントを、別のコンテキストから横取りすることもできるでしょう。この節では、Solaris 環境での機密保護コンテキストの生成方法を説明します。

PostScript リファレンスマニュアル第 2 版』の 7.1.1 節「コンテキストの作成」は、コンテキストが VM を共有するための方法として、次の 3 つを記載しています。

  1. 「ローカル VM とグローバル VM は、そのコンテキストに完全に固有である。」この機能はレベル 2 の新しいものですが、これに従って生成したコンテキストを「機密保護コンテキスト」といいます。

  2. 「ローカル VM はそのコンテキストに固有であるが、グローバル VM は他のコンテキストと共有されている。」XDPSCreateContextXDPSCreateSimpleContext でコンテキストを生成すると、通常こうなります。

  3. 「ローカル VM とグローバル VM は、他のコンテキストと共有されている。」XDPSCreateContextXDPSCreateSimpleContext で、パラメータの spaceNULL 以外を指定してコンテキストを生成するとこうなります。

    機密保護コンテキストを生成するには、XDPSCreateSecureContext を次のように使用してください。

    XDPSCreateSecureContext
    
    DPSContext XDPSCreateSecureContext(dpy, 			drawable, gc, x, y, eventmask,
    
    grayramp, ccube, actual,  			textProc, errorProc, space) 	Display *dpy;
    
    	Drawable drawable; 	GC gc; 	int x; 	int y; 	unsigned int eventmask;
    
    	XStandardColormap *grayramp; 	XStandardColormap *ccube; 	int actual;
    
    	DPSTextProc textProc; 	DPSErrorProc errorProc;   DPSSpace
    
    space;

パラメータの意味はすべて XDPSCreateContext のものと同じですが、生成されるコンテキストは専用の専用グローバル VM を 1 つ持ちます。パラメータの spaceNULL を指定しない場合は、機密保護コンテキストと一緒に生成する空間を指定しなければなりません。機密保護コンテキストと一緒に生成した空間を、非機密保護コンテキストの生成時に使用することはできません。機密保護コンテキストで非機密保護空間を指定したり、非機密保護コンテキストで機密保護空間を指定したりすると、アクセスエラーになります。