ISSONotification.InitializeAdapter 方法

對 ENTSSO 系統初始化密碼同步配接器。

語法

  
HRESULT InitializeAdapter(  
BSTR strAdapterName,  
ULONG lFlags,  
ULONGLONG* hNotifyEvent,  
GUID* guidTrackingId);  

參數

bstrAdapterName
[in] 唯一的配接器名稱。

ulFlags
SSO_NOTIFICATION_FLAG 值的位元組合。

phNotifyEvent
[out] 這個方法傳回時,包含 PS Helper 所建立的事件處理常式。 您應該將傳回值在傳回時轉換為 HANDLE,因為 MIDL 不支援 HANDLE 資料型別。 如果配接器不需要事件控制代碼,則此參數可以為 NULL。

pguidTrackingId
[out] 當這個方法傳回時,會包含 ENTSSO 所產生的追蹤識別碼。 追蹤識別碼可用於稽核用途。 如果配接器不需要追蹤識別碼,則此參數可以為 NULL。

傳回值

這個方法會傳回 HRESULT,表示它是否正確完成。 如需詳細資訊,請參閱「錯誤值」一節。

錯誤值

這個方法會傳回 HRESULT,其中包含下表的一個值。

描述
S_OK 初始化成功。
S_FALSE 初始化成功,但是為重新連接。 如需詳細資訊,請參閱<備註>一節。
E_ACCESSDENIED 存取遭到拒絕。
ENTSSO_E_NO_SERVER 無法連絡 ENTSSO 伺服器。 請檢查 ENTSSO 服務是否正在執行。

備註

在呼叫 InitializeAdapter之前,您必須先將相關的介面卡名稱輸入 ENTSSO。

InitializeAdapter應該是您介面卡所呼叫的第一個方法,因為您在呼叫InitializeAdapter之前無法呼叫任何其他ISSONotification方法。 在呼叫ShutdownAdapter之前,您不應該再次呼叫InitializeAdapter 。 不過,一旦關閉介面卡,您就可以隨時呼叫 InitializeAdapter 來重新連接。

InitializeAdapter 會起始 PS 協助程式和介面卡之間的通訊。 當您的介面卡呼叫InitializeAdapter時,PS 協助程式會透過加密 LRPC 呼叫 Enterprise 單一 Sign-On (ENTSSO) service。 ENTSSO 服務會根據針對目前配接器所定義的存取帳戶,使用配接器名稱而授與或拒絕存取。

在呼叫 InitializeAdapter之前,您必須先啟動 ENTSSO 服務。 「PS 協助程式」無法自動啟動 ENTSSO,因為執行配接器處理序所使用的權限可能不足以啟動服務。 因此,您的配接器必須初始化配接器與 ENTSSO 之間的所有通訊。

「PS 協助程式」會先與 ENTSSO 服務建立連線,然後再建立具名事件。 接下來「PS 協助程式」會將具名事件傳遞到 ENTSSO 服務。 當配接器的通知抵達時,ENTSSO 會使用「PS 協助程式」的事件信號。 ENTSSO 會將事件傳回配接器,以讓配接器服務該事件,或忽略該事件,而改讓「PS 協助程式」等候。 對於配接器執行緒模型而言,這可以讓配接器享有更多彈性。 在 ENTSSO 完成由呼叫 ShutdownAdapter所起始的處理常式之前,該事件對介面卡而言是有效的。

如果 ENTSSO 正在執行,則 ENTSSO 服務會接受「PS 協助程式」的初始遠端程序呼叫 (RPC)。 接下來 ENTSSO 會執行存取檢查。 如果 ENTSSO 無法存取資料庫以取得配接器組態資訊,則 ENTSSO 會傳回 E_ACCESSDENIED 事件。 如果 ENTSSO 擁有配接器組態資訊,但目前無法連絡資料庫,則 ENTSSO 會接受密碼變更通知,把通知儲存在本機的緩衝區內,並且以本機暫存檔加密通知。

如果已刪除或停用介面卡, InitializeAdapter也會傳回 E_ACCESSDENIED。

Windows 事件記錄檔可針對所有的錯誤提供更詳細的資訊。

假設配接器知道與 ENTSSO 通訊時要使用的正確名稱。

InitializeAdapter 是單一執行緒。 在InitializeAdapter完成之前,會封鎖所有其他呼叫InitializeAdapter的執行緒。 它也會與 ShutdownAdapter 方法同步處理。

介面卡進程可能會先終止,您才能發出 ShutdownAdapter。 在此情況下,如果 ENTSSO 在 ENTSSO 收到對應的ShutdownAdapter之前收到另一個InitializeAdapter ,ENTSSO 會將第二個ShutdownAdapter呼叫視為重新連接。 此時,ENTSSO 會清除現有的事件並使其失效,然後建立新的控制代碼。 ENTSSO 也會使用關機通知,為舊的事件控制碼完成任何暫止的 ReceiveNotifications

重新連線時,會從 InitializeAdapter傳回新的追蹤識別碼。 ENTSSO 會傳回新的追蹤識別碼,因為從 InitializeAdapter 傳回的追蹤識別碼可以視為會話識別碼。 此外,ENTSSO 會會重新發出任何暫止的 (但無法確認對介面卡的) 通知。

規格需求

平臺: Windows 7、Windows Server 2008 R2、Windows Server 2008 SP2、Windows Vista SP2、Windows Server 2003 R2 SP2

另請參閱

ISSONotification 介面 (COM)
ISSONotification 成員
企業單一登入程式設計