ネームサービス
動的データ交換管理ライブラリ (DDEML) を使用すると、サーバー アプリケーションがサポートするサービス名を登録し、DDEML がサポートされていないサービス名のトランザクション XTYP_CONNECT サーバーの動的データ交換 (DDE) コールバック関数に送信できないようにすることができます。
次のトピックでは、ネーム サービスについて説明します。
サービス名の登録
サービス名を DDEML に登録することで、サーバーはシステム内の他の DDE アプリケーションに、新しいサーバーが使用可能であることを通知します。 サーバーは、 DdeNameService 関数を呼び出し、名前を識別する文字列ハンドルを指定することで、サービス名を登録します。 これに対して、DDEML はシステム内の各 DDEML アプリケーションのコールバック関数に XTYP_REGISTER トランザクションを送信します (DdeInitialize 関数で CBF_SKIP_REGISTRATIONSフィルター フラグを指定した場合を除きます)。 XTYP_REGISTER トランザクションは、コールバック関数に 2 つの文字列ハンドルを渡します。1 つ目は基本サービス名を指定する文字列を識別し、2 つ目はインスタンス固有のサービスを指定する文字列を識別します。 クライアントは通常、使用可能なサーバーの一覧で基本サービス名を使用するため、ユーザーは一覧からサーバーを選択できます。 クライアントは、インスタンス固有のサービス名を使用して、複数のインスタンスが実行されている場合に、サーバー アプリケーションの特定のインスタンスとの会話を確立します。
サーバーは DdeNameService を使用してサービス名の登録を解除できます。 この関数により、DDEML は XTYP_UNREGISTER トランザクションをシステム内の他の DDE アプリケーションに送信し、名前を使用して会話を確立できなくなったことを通知します。
サーバーは、 DdeInitialize を呼び出した直後に DdeNameService を呼び出してサービス名を登録する必要があります。 サーバーは、 DdeUninitialize 関数を呼び出す直前に DdeNameService を使用してそのサービス名の登録を解除する必要があります。
サービス名フィルター
DdeNameService では、サービス名の登録に加えて、サーバーでサービス名フィルターのオンとオフを切り替えられます。 サーバーがサービス名フィルターをオフにすると、DDEML は、関数で指定されたサービス名に関係なく、クライアントが DdeConnect 関数を呼び出すたびに、 XTYP_CONNECT トランザクションをサーバーの DDE コールバック関数に送信します。 サーバーがサービス名フィルターをオンにすると、DDEML は、 DdeConnect が DdeNameService の呼び出しでサーバーが指定したサービス名を指定した場合にのみ、 XTYP_CONNECT トランザクションをサーバーに送信します。
既定では、アプリケーションが DdeInitialize を呼び出 すと、サービス名フィルターがオンになります。 この既定値により、DDEML は、サーバーが必要な文字列ハンドルを作成する前に、 XTYP_CONNECT トランザクションをサーバーに送信できなくなります。 サーバーは、 DdeNameService の呼び出しで DNS_FILTEROFF フラグを指定することで、サービス名フィルターをオフにすることができます。 DNS_FILTERON フラグによってフィルターがオンになります。