winsock2

winsock2

WinSock2是連接系統和用戶使用的軟體之間用於交流的一個介面,這個功能就是修復軟體與系統正確的通訊的作用。

Winsock2 SPI(Service Provider Interface)服務提供者介面建立在Windows開放系統架構WOSA(Windows Open System Architecture)之上,是Winsock系統組件提供的面向系統底層的編程介面。Winsock系統組件向上面向用戶應用程序提供一個標準的API介面;向下在Winsock組件和Winsock服務提供者(比如TCP/IP協議棧)之間提供一個標準的SPI介面。各種服務提供者是Windows支持的DLL,掛載在Winsock2 的Ws2_32.dll模塊下。對用戶應用程序使用的Winsock2 API中定義的許多內部函數來說,這些服務提供者都提供了它們的對應的運作方式(例如API函數WSAConnect有相應的SPI函數WSPConnect)。多數情況下,一個應用程序在調用Winsock2 API函數時,Ws2_32.dll會調用相應的Winsock2 SPI函數,利用特定的服務提供者執行所請求的服務。

簡介


Winsock2 SPI允許開發兩類服務提供者——傳輸服務提供者和名字空間服務提供者。“傳輸提供者”(Transport Providers, 一般稱作協議堆棧,例如TCP/IP)能夠提供建立通信、傳輸數據、日常數據流控制和錯誤控制等傳輸功能方面的服務。“名字空間提供者”(Name Space Providers,例如DNS域名解析服務)則把一個網路協議的地址屬性和一個或多個用戶友好名稱關聯到一起,以便啟用與應用無關的域名解析方案。
如果 Winsock註冊表項已損壞,則可能出現這些問題。
如果名稱與此列表中的名稱不同,則表明 Winsock2 項已損壞或者已安裝了第三方載入項,如代理軟體。
如果安裝了第三方載入項,則載入項的名稱將替換列表中的字母“MSAFD”。
如果列表中的節多於 10 個,則表明安裝了第三方載入項。
如果少於 10 個節,則說明缺少信息。
注意:這些條目所代表的是僅裝有 TCP/IP 協議的安裝。您可能有一個正在工作的 Winsock,如果安裝了另一個協議,則可能會看到其他條目。例如,如果安裝了 NWLink IPX/SPX,那麼您將另外看到 7 個節,這時總共會有 17 個節。下面是某個新節的節標頭示例:
MSAFD nwlnkipx [IPX]
另外,安裝 NWLink IPX/SPX 時所創建的每個新節都以“MSAFD”開頭。因此,仍然只有兩個節不以這些字母開頭。
如果 Netdiag 測試失敗,或者您通過查看 Msinfo32 確定 Winsock 已損壞,則必須使用下一節中的步驟修復 Winsock2。
從 Winsock2 損壞中恢復的手動步驟
帶 Service Pack 2 的 Windows XP 說明
要在已安裝 Windows XP Service Pack 2 (SP2) 的情況下修復 Winsock,請在命令提示符處鍵入 netsh winsock reset,然後按 Enter。
http://www.microsoft.com/china/t ... ntain/sp2netwk.mspx (http://www.microsoft.com/china/t ... tain/sp2netwk.mspx)
警告:在運行 netsh winsock reset 命令時,訪問或監視 Internet 的程序(如防病毒程序、防火牆或代理客戶端)可能會受到不良影響。如果使用此解決方案后某個程序無法正常工作,請重新安裝該程序以恢復功能。
注意:如果這些步驟無法解決問題,請執行下一節中的步驟。
不帶 Service Pack 2 的 Windows XP 說明
要在未安裝 Windows XP SP2 的情況下修復 Winsock,請刪除已損壞的註冊表項,然後重新安裝 TCP/IP 協議。
步驟 1:刪除已損壞的註冊表項
警告:如果使用註冊表編輯器或其他方法錯誤地修改了註冊表,則可能導致嚴重問題。這些問題可能需要重新安裝操作系統才能解決。Microsoft 不能保證您可以解決這些問題。修改註冊表需要您自擔風險。
有關如何備份註冊表的更多信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
1. 單擊“開始”,然後單擊“運行”。
2. 在“打開”框中,鍵入 regedit,然後單擊“確定”。
3. 在註冊表編輯器中,找到下列項,右鍵單擊各項,然後單擊“刪除”:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
4. 在系統提示您確認刪除時,單擊“是”。
步驟 2:安裝 TCP/IP
1. 右鍵單擊網路連接,然後單擊“屬性”。
2. 單擊“安裝”。
3. 單擊“協議”,然後單擊“添加”。
4. 單擊“從磁碟安裝”。
6. 在可用協議列表中,單擊“Internet 協議(TCP/IP)”,然後單擊“確定”。
7. 重新啟動計算機。

癥狀


在嘗試使用 Ipconfig 程序 (Ipconfig.exe) 釋放或更新 IP 地址時,可能會收到下列錯誤消息之一。
消息 1
An error occurred while renewing interface 'Internet':An operation was attempted on something that is not a socket.
消息 2
An error occurred while renewing interface Local Area Connection:the requested service provider could not be loaded or initialized.
在啟動 Internet Explorer 時,可能會收到以下錯誤消息:
The page cannot be displayed
在使用計算機時,您可能會收到以下錯誤消息:
Initialization function INITHELPERDLL in IPMONTR.DLL failed to start with error code 10107
另外,您可能沒有 IP 地址或沒有自動專用 IP 地址 (APIPA),您可能正在接收而不是正在發送 IP 數據包。
使用 ipconfig /renew 命令時,您可能會收到以下錯誤消息。
消息 1
An error occurred while renewing interface local area connection:an operation was attempted on something that is not a socket.Unable to contact driver Error code 2.
消息 2
The operation failed since no adapter is in the state permissible for this operation.
消息 3
The attempted operation is not supported for the type of object referenced.
在“設備管理器”中,在單擊“顯示隱藏的設備”時,“TCP/IP Protocol Driver”會在“非即插即用驅動程序”下以禁用狀態列出,並且您會收到錯誤代碼 24。
在創建撥號連接時,您可能會收到以下錯誤消息:
Error 720:No PPP Control Protocols Configured

解決方案


確定 Winsock2 是否損壞的手動步驟
要確定癥狀是否由 Winsock2 項的問題引起,請使用以下方法。
方法 1:使用 Netdiag 工具
要使用 Netdiag 工具,必須安裝 Microsoft Windows XP 支持工具。為此,請按照下列步驟操作。
注意· 如果已安裝支持工具,請轉到本節中的步驟 2。
· 如果未安裝支持工具,並且沒有 Windows XP 安裝 CD,請轉到方法 2。
1. 插入 Windows XP 安裝 CD,然後找到 Support\Tools 文件夾。
2. 雙擊“Setup.exe”文件。
3. 按照屏幕上的步驟操作,直到出現“選擇安裝類型”屏幕。
4. 在“選擇安裝類型”屏幕上,單擊“完全”,然後單擊“下一步”。
完成安裝后,請按照下列步驟操作: 1. 單擊“開始”,單擊“運行”,鍵入 command,然後單擊“確定”。
2. 鍵入 netdiag /test:winsock,然後按 Enter。
Netdiag 工具將返回對若干個網路組件的測試結果,其中包括 Winsock。有關測試的更多信息,請在 netdiag 命令的末尾使用 /v:netdiag /test:winsock /v
方法 2:使用 Msinfo32 程序
2. 依次展開“組件”、“網路”,然後單擊“協議”。
3. “協議”下包含 10 個節。如果 Winsock2 項未損壞,則節標頭中將包括以下名稱: · MSAFD Tcpip [TCP/IP]
· MSAFD Tcpip [UDP/IP]
· RSVP UDP Service Provider
· RSVP TCP Service Provider
· MSAFD NetBIOS [\Device\NetBT_Tcpip...
· MSAFD NetBIOS [\Device\NetBT_Tcpip...
· MSAFD NetBIOS [\Device\NetBT_Tcpip...
· MSAFD NetBIOS [\Device\NetBT_Tcpip...
· MSAFD NetBIOS [\Device\NetBT_Tcpip...
· MSAFD NetBIOS [\Device\NetBT_Tcpip...