廣告伺服器介面

使用自動控制碼的應用程式伺服器端必須呼叫 RpcNsBindingExport 函式,讓用戶端可以使用伺服器的系結資訊。 自動系結控制碼需要在用戶端可存取的伺服器上執行的名稱服務。 Microsoft 定位器名稱服務的 Microsoft 實作會管理自動控制碼。 使用隱含和明確系結控制碼的伺服器應用程式也可以在名稱服務資料庫中公告其存在。

一般而言,伺服器會呼叫下列執行時間函式:

/* auto handle server application (fragment) */
 
//interface header file that the MIDL compiler generates
#include "auto.h" 
 
void main(void)
{
    RpcUseProtseqEp(...);
    RpcServerRegisterIf(...);
    RpcServerInqBindings(...);
    RpcNsBindingExport(...);
    ...
}

此程式碼片段中前兩個函式的呼叫類似于 Hello, World 範例。 這些函式會讓系結的相關資訊可供用戶端使用。 RpcServerInqBindingsRpcNsBindingExport的呼叫會將資訊放在名稱服務資料庫中。 對 RpcServerInqBindings的呼叫會以有效的系結控制碼填入系結向量,再將控制碼匯出至名稱服務。 在伺服器程式將控制碼匯出至資料庫之後,用戶端 (或用戶端存根) 可以呼叫 RpcNsBindingImportBeginRpcNsBindingImportNext 來取得此資訊。 如需詳細資訊,請參閱 尋找伺服器主機系統

RpcServerInqBindingsRpcNsBindingExport的呼叫及其相關聯的資料結構看起來如下:

RPC_BINDING_VECTOR * pBindingVector;
RPCSTATUS status;
 
status = RpcServerInqBindings(&pBindingVector);
 
status = RpcNsBindingExport(
                fNameSyntaxType,      // name syntax type 
                pszAutoEntryName,     // nsi entry name 
                autoh_ServerIfHandle, // if server handle
                pBindingVector,       // set in previous call 
                NULL);                // UUID vector

請注意, RpcServerInqBindings 參數 pBindingVector指向RPC_BINDING_VECTOR指標的指標。 也請記住,對 RpcNsBindingExport 的每個呼叫都必須接在 RpcBindingVectorFree的呼叫後面。

若要從名稱服務資料庫移除匯出的介面,伺服器會呼叫 RpcNsBindingUnexport ,如下所示:

status = RpcNsBindingUnexport(
                fNameSyntaxType, 
                pszAutoEntryName,  
                auto_ServerIfHandle,
                NULL);              // unexport handles only

只有在永久移除服務時,才應該使用 RpcNsBindingUnexport 函式。 當服務暫時停用時,不應該使用它,例如當伺服器關機以進行維護時。 伺服器程式可以向名稱服務資料庫註冊本身,但因為伺服器暫時離線而無法使用。 用戶端應用程式應該包含這類條件的例外狀況處理常式代碼。

如需名稱服務資料庫內容和格式的詳細資訊,請參閱 RPC 名稱服務資料庫

如果用戶端和伺服器程式都在 Windows 2000 下執行,應用程式就可以利用 Active Directory 服務。 執行用戶端和伺服器程式的電腦必須是 Windows 2000 網域的成員。

若要使用 Active Directory 服務公告其存在狀態,伺服器程式應該在網域系統管理員的安全性內容中執行。 如果在網域使用者的內容中執行,網域系統管理員必須在 RPC 服務容器上修改 ACL) (存取控制清單。 如需詳細資訊,請參閱 Active Directory 檔。