EXPORTS
EXPORT ステートメントを使用して、作成する DLL からエクスポートされるデータと関数、および I/O ハードウェア特権を使用して実行される関数の名前と属性を定義することができます。
| EXPORTS ステートメントの構文 |
 .------------------------------------------.
V |
>>-EXPORTS----enm=inm-+--------------------+-+-------+-+-------><
| .-DECORATED-. | '-parms-'
'-@ord-+-----------+-'
'-CONSTANT--'
|
他の .EXE または .DLL ファイルが使用できるようにしたい DLL 内の関数やデータに対しては、エクスポート定義を指定します。エクスポートされないデータや関数へは、DLL 内からしかアクセスできません。
EXPORTS キーワードは、エクスポート定義の先頭をマークします。各定義は個別の行に入力します。エクスポートごとに次の情報を指定することができます。
- enm
- データ構成または関数の入り口名。他のファイルがアクセスするときには、この名前を使用します。エクスポートごとに入り口名を指定する必要があります。正しい関数にリンクされるように、各入り口名を装飾することを強くお勧めします。
- inm
- データ構成または関数の内部名。DLL 内に実際に使用される名前です。内部名を指定する場合は、装飾を行う必要があります。内部名を指定しないと、リンカーは内部名が enm と同じであると想定します。
- ord
- モジュール定義テーブル内でのデータ構成または関数の順序位置。順序位置を指定しない場合は、入り口名か序数のいずれかでデータ構成や関数を参照することができます。順序位置を使用した方がアクセスが速く、なおかつスペースを節約できる場合があります。
次の 2 つのいずれかの値のみを指定できます。
- DECORATED
- (デフォルト) 名前を現状のままにすることを示します。関数名には装飾が適用されません。
- CONSTANT
- エクスポート・エンティティーが関数ではなくデータ項目であることを示します。
-
-
- parms
- 関数のパラメーターの合計サイズをワード (バイト数 ÷ 2) 単位で表します。このフィールドが必要となるのは、I/O 特権で関数を実行する場合のみです。オペレーティング・システムは、I/O 特権を持つ関数が呼び出されると、呼び出し元のスタックから I/O 特権関数のスタックへコピーするワード数を parms によって判断します。
次の 3 つの関数のエクスポートを定義する例を示します。
- SampleRead
- StringIn
- CharTest
EXPORTS
SampleRead = read2bin @8
StringIn = str1 @4
CharTest 6
最初の 2 つの関数へは、エクスポート名または序数を使用してアクセスすることができます。なお、モジュールのソース・コード内には、これらの関数がそれぞれ read2bin および str1 として実際に定義されています。最後の関数は I/O 特権で実行されるため、この関数には parms (パラメーターの合計サイズ) が 6 ワードとして定義されています。
|