共用方式為


針對其他 WSDAPI 應用程式進行疑難解答

應用程式可以直接呼叫 WSDAPI 介面和函式,以執行裝置探索和元數據交換。 這些應用程式所使用的訊息模式會有所不同。

此疑難解答指南的目標是協助 WSDAPI 應用程式開發人員成功實作裝置 Proxy。 本指南並非用來協助針對 WSDAPI 的所有層面進行疑難解答。 如果已成功建立裝置 Proxy,且用戶端和主機可以在網路上彼此看到,則本指南無法解決應用程式的問題。 若要針對這些應用程式問題進行疑難解答,請遵循 啟用WSDAPI追蹤 中的指示,並連絡Microsoft支援以取得進一步協助。

針對呼叫 WSDCreateDeviceProxy 的用戶端進行疑難解答

應用程式會呼叫 WSDCreateDeviceProxy,以建立和初始化 IWSDDeviceProxy 介面的實例。 此裝置 Proxy 物件可用來公告裝置上的服務,也可以交換元數據。

呼叫 WSDCreateDeviceProxy 的應用程式 一律會使用下列訊息。

呼叫 WSDCreateDeviceProxy 的應用程式 有時會使用下列訊息。

ResolveResolveMatches 訊息是在將邏輯裝置位址(也就是格式為 urn:uuid:{guid} 的裝置位址)傳遞至 pszDeviceId時產生的。 當實體裝置位址傳遞至 pszDeviceId 時,不會產生這些訊息。 當使用 Resolve 和 ResolveMatches 訊息時,這些訊息會在 GetGetResponse 訊息之前被傳送。

應依次使用下列診斷程序,以協助識別將實體裝置位址用於呼叫 WSDCreateDeviceProxy 的應用程式問題。

  1. 檢查配卡和防火牆設定
  2. 使用一般主機和用戶端進行 HTTP 元資料交換
  3. 使用 WinHTTP 日誌來驗證 GET 請求流量
  4. 檢查 HTTP 元資料交換的網路追蹤

應使用下列診斷程序來協助識別呼叫 WSDCreateDeviceProxy 的應用程式邏輯裝置位址的問題。

  1. 檢查配卡和防火牆設定
  2. 使用通用主機和用戶端進行 UDP WS-Discovery
  3. 使用 WSD 偵錯客戶端來驗證多播流量
  4. 檢查 UDP WS-Discovery的網絡痕跡。
  5. 使用一般主機和用戶端進行 HTTP 元資料交換
  6. 使用 WinHTTP 記錄來確認取得流量
  7. 檢查網路追蹤以交換 HTTP 元資料

確認已產生 ResolveResolveMatches 訊息,並符合流量需求。 不需要在 WSD 偵錯客戶端的輸出或網路追蹤中尋找 探測探測匹配 訊息。

針對呼叫 WSDCreateDeviceProxyAdvanced 的用戶端進行疑難解答

應用程式會呼叫 WSDCreateDeviceProxyAdvanced,以建立和初始化 IWSDDeviceProxy 介面的實例。 與 WSDCreateDeviceProxy不同,WSDCreateDeviceProxyAdvanced 具有 pDeviceAddress 參數,可用來定義裝置傳輸位址。 如果指定此傳輸位址,則不需要邏輯位址解析,而且不會產生 ResolveResolveMatches 訊息。

如果 pDeviceAddress 設定為 NULL而 pszDeviceId 為邏輯位址,則需要位址解析,並 ResolveResolveMatches 訊息產生。

應使用下列診斷程序來協助識別呼叫 WSDCreateDeviceProxyAdvanced 且具有非NULLpDeviceAddress 參數的應用程式問題。 當 pDeviceAddress pDeviceAddress NULL而且 pszDeviceId 是實體位址時,也可以使用這些程式。

  1. 檢查配卡和防火牆設定
  2. 使用一般主機和用戶端進行 HTTP 元資料交換
  3. 使用 WinHTTP 記錄來驗證 GET 流量
  4. 檢查網路追蹤以進行 HTTP 元資料交換

應使用下列診斷程式來協助識別呼叫 WSDCreateDeviceProxyAdvanced且 pDeviceAddress 設定為 NULL,並使用 pszDeviceId 設為邏輯位址的應用程式發生問題。

  1. 檢查配卡和防火牆設定
  2. 使用通用主機和用戶端進行 UDP WS-Discovery
  3. 使用 WSD 偵錯客戶端來驗證多播流量
  4. 檢查 UDP WS-Discovery的網路追蹤。
  5. 使用一般主機和用戶端進行 HTTP 元資料交換
  6. 使用 WinHTTP 記錄來確認GET流量
  7. 檢查 HTTP 元資料交換的網路追蹤

確認已產生 ResolveResolveMatches 訊息,並符合流量需求。 不需要在 WSD 偵錯客戶端輸出或網路追蹤中尋找 探查ProbeMatches 訊息。

使用 IWSDiscoveryProvider 介面對客戶端進行疑難解答

呼叫 IWSDiscoveryProvider 介面的應用程式不會執行元數據交換。 此介面僅用於探索。 IWSDiscoveryProvider 介面上呼叫的每個方法,其訊息模式和疑難排除程序都不同。

當應用程式呼叫 IWSDiscoveryProvider::SearchByType時,會產生 探查 訊息。 探查訊息是由UDP多播傳送至埠3702。 回應中會產生 ProbeMatches 訊息。 ProbeMatches 訊息是由UDP單播傳送,且源自埠3702。

當應用程式呼叫 IWSDiscoveryProvider::SearchById時,會產生 解析 訊息。 UDP 多播會將解析訊息傳送到埠 3702。 回應中會產生 ResolveMatches 訊息。 ResolveMatches 是由 UDP 單播傳送,且源自埠 3702。

應按照順序使用下列診斷程序,以協助識別呼叫 IWSDiscoveryProvider::SearchByTypeIWSDiscoveryProvider::SearchById的應用程式問題。 確認所呼叫 API 所產生的訊息符合流量需求。

  1. 檢查配卡和防火牆設定
  2. 使用一般主機和用戶端進行 UDP WS-Discovery
  3. 使用 WSD 偵錯客戶端來驗證多播流量
  4. 檢查 UDP WS-Discovery的網路追蹤。

如果應用程式呼叫 IWSDiscoveryProvider::SearchByAddress,則它是導向的探索應用程式。 如需更多疑難排解的資訊,請參閱「使用導向探索疑難排解應用程式 」。

WSDAPI 疑難解答入門