WSDCreateDeviceHostAdvanced 函式 (wsdhost.h)
建立裝置主機,並傳回 IWSDDeviceHost 介面的指標。
語法
HRESULT WSDCreateDeviceHostAdvanced(
[in] LPCWSTR pszLocalId,
[in] IWSDXMLContext *pContext,
[in] IWSDAddress **ppHostAddresses,
[in] DWORD dwHostAddressCount,
[out] IWSDDeviceHost **ppDeviceHost
);
參數
[in] pszLocalId
裝置的邏輯或實體位址。 邏輯位址格式為 urn:uuid:{guid}
。 如果 pszLocalId 是邏輯位址,主機將會宣告邏輯位址,然後在接收解析或探查訊息時將位址轉換為實體位址。
如果 pszLocalId 是實體位址 (,例如 URL 前面加上 HTTP 或 https) ,主機會使用地址作為實體位址,並將裝載在該位址上,而不是預設位址。
若要安全通訊, pszLocalId 必須是 HTTPs 前置詞的 URL,而且主機會在 URL 中指定的埠上使用 SSL/TLS 通訊協定。 建議的埠是埠 5358,因為此埠會保留給 WSDAPI 的安全連線。 如果未指定埠,則主機會使用埠 443。 在呼叫 WSDCreateDeviceHostAdvanced 之前,必須先使用 SSL 伺服器證書來設定主機埠。 如需主機埠設定的詳細資訊,請參閱 HttpSetServiceConfiguration。
如果 pszLocalId 或 ppHostAddresses 所參考的傳輸地址是 HTTPs 前置詞的 URL,則這兩個 URL 都必須相同。 如果這不是這種情況, WSDCreateDeviceHostAdvanced 會傳回E_INVALIDARG。
任何 URL (HTTP 或 HTTPs) 都必須以結尾斜線終止。 URL 必須包含有效的IP位址或主機名。
下列清單顯示 pszLocalId 的一些範例值。 這不是有效值的完整清單。
- http://192.168.0.1:5357/
- http://localhost/
- http://myHostname:5357/
- https://192.168.0.1:5358/
- https://myHostname/
- https://myHostname/myDevice/
- https://myHostname:5358/
[in] pContext
定義自訂訊息類型或命名空間的 IWSDXMLContext 介面。
如果為 NULL,則會使用代表內建訊息類型和命名空間的預設內容。
[in] ppHostAddresses
單一 IWSDAddress 介面或 IWSDTransportAddress 介面。 物件會提供主機應該接聽之特定位址的相關信息。
如果 pszLocalId 包含邏輯位址,則產生的行為是邏輯位址與特定實體位址集之間的對應 (,而不是邏輯位址與預設實體地址之間的對應) 。
[in] dwHostAddressCount
ppHostAddresses 陣列中的項目數。 如果 ppHostAddresses 是 IWSDAddress 介面,計數必須是 1。
[out] ppDeviceHost
IWSDDeviceHost 介面的指標,您用來公開與回應傳入要求之伺服器相關聯的 WSD 特定裝置語意。
傳回值
可能的傳回值包括但不限於下列各項:
傳回碼 | 描述 |
---|---|
|
方法已順利完成。 |
|
pszLocalId 為 NULL,pszLocalId 的字元長度超過 WSD_MAX_TEXT_LENGTH (8192) ,或 pszLocalId 指向以 https 開頭的 URL,且該 URL 不符合 ppHostAddresses 所參考之傳輸位址的 URL。 |
|
ppDeviceHost 為 NULL。 |
|
記憶體不足,無法完成作業。 |
備註
WSDCreateDeviceHostAdvanced 函式會呼叫 IWSDDeviceHost::Init 方法,它會初始化 IWSDDeviceHost 對象的實例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wsdhost.h (包含 Wsdapi.h) |
程式庫 | Wsdapi.lib |
Dll | Wsdapi.dll |