Windows 通訊端錯誤代碼、 值和意義


摘要



本文說明WSAGetLastError (Wsapiref_2tiq.asp) 函式所傳回的可能的錯誤代碼。錯誤是依字母順序列出錯誤的巨集。從任何函式,不會傳回某些 Winsock2.h 中所定義的錯誤碼。 本文不包含這些錯誤碼。

更多的資訊


WSAEINTR (10004)

  • 轉譯︰ 插斷函式呼叫。
  • 描述︰ 封鎖作業已中斷呼叫 WSACancelBlockingCall (Wsapiref_704y.asp)。

WSAEACCES (10013)

  • 轉譯︰ 拒絕的權限。
  • 描述︰ 嘗試存取通訊端被拒絕其存取權限的方式。比方說,廣播的位址用於 sendto,但並未設定廣播的權限使用 setsockopt(SO_BROADCAST) 時,就會發生這個錯誤。WSAEACCES 錯誤的另一個可能的原因是,當呼叫繫結 (Wsapiref_6vzm.asp) 函式 (在 Microsoft Windows NT 4.0 Service Pack 4 [SP4] 或更新版本),另一個程式、 服務或核心模式驅動程式繫結至相同的地址,以獨佔式存取。此種獨佔的存取是一項新功能的 Windows NT 4.0 SP4 和更新版本中,並使用 SO_EXCLUSIVEADDRUSE 選項,它實作。

WSAEFAULT (10014)

  • 轉譯︰ 錯誤的位址。
  • 描述︰ 系統偵測到無效的指標位址,嘗試使用指標引數的呼叫時發生。如果程式通過無效的指標值,或如果緩衝區的長度太小,就會發生此錯誤。例如,如果是 SOCKADDR 結構引數的長度小於 sizeof(SOCKADDR) 值,就會發生這個問題。

WSAEINVAL (10022)

  • 轉譯︰ 無效的引數。
  • 描述︰ 無效的引數 (例如,引數指定無效的層級) 提供給setsockopt (Wsapiref_94aa.asp) 函式。有時候,這也表示通訊端的目前狀態,例如,電話未接聽的通訊端上接受 (Wsapiref_13aq.asp)。

WSAEMFILE (10024)

  • 轉譯︰ 太多開啟的檔案。
  • 描述︰ 有太多開啟的通訊端。每個實作可能會有可用的通訊端控制碼的最大數目。 這些控點可能是全域的每個處理程序,或每個執行緒時才可用。

WSAEWOULDBLOCK (10035)

  • 轉譯︰ 暫時無法使用的資源。
  • 描述︰ 會傳回這個錯誤,無法立即完成,例如,未封鎖通訊端作業從接收 (Wsapiref_2i9e.asp),當沒有資料從通訊端讀取佇列時。非嚴重的錯誤,而且可以稍後再重試操作。 當呼叫的結果會連線在未封鎖的 SOCK_STREAM 通訊端 (Wsapiref_8m7m.asp) 因為必須經過一些時間,才能建立連線時,通常被報告 WSAEWOULDBLOCK。

WSAEINPROGRESS (10036)

  • 轉譯︰ 操作正在進行中的。
  • 描述︰ 目前正在執行封鎖作業。Windows 通訊端,只允許單一封鎖作業,每個任務,或每個執行緒尚未完成。如果進行任何其他的函式呼叫時 (無論它所參考,或任何其他的通訊端),函式會失敗,發生 WSAEINPROGRESS 錯誤。

WSAEALREADY (10037)

  • 轉譯︰ 已在進行中的作業。
  • 描述︰ 未封鎖通訊端上嘗試的作業時的作業已在進行中。例如,撥號連線 (Wsapiref_8m7m.asp) 已經連接的未封鎖通訊端上嘗試第二次,或嘗試,已經取消或完成的非同步要求 (WSAAsyncGetXbyY)。

WSAENOTSOCK (10038)

  • 轉譯︰ 通訊端作業在 nonsocket 上的。
  • 描述︰ 作業已經嘗試對象不是通訊端。通訊端控制碼的參數並沒有參照有效的通訊端,或是選取 [(Wsapiref_1ab6.asp) 中,為 fd_set 的成員不正確。

WSAEDESTADDRREQ (10039)

  • 轉譯︰ 需要目的位址。
  • 描述︰ 通訊端上的作業遺漏了必要的位址。比方說,如果 sendto (Wsapiref_4sqa.asp) 稱為 ADDR_ANY 的遠端位址,會傳回這個錯誤。

WSAEMSGSIZE (10040)

  • 轉譯︰ 訊息太長。
  • 描述︰ 在資料表 socket 傳送的訊息大於內部訊息緩衝區或是某些其他網路限制,或者用來接收資料包的緩衝區容量小於資料包本身。

WSAEPROTOTYPE (10041)

  • 轉譯︰ 通訊協定通訊端的型別錯誤。
  • 描述︰ 通訊端 (Wsapiref_2qr6.asp) 的函式呼叫中所指定的通訊協定不支援要求的通訊端類型語法。例如,ARPA 網際網路 UDP 通訊協定不能指定與 SOCK_STREAM 通訊端類型。

WSAENOPROTOOPT (10042)

  • 轉譯︰ 錯誤的通訊協定選項。
  • 描述︰ getsockopt (Wsapiref_8qcy.asp) 呼叫或 setsockopt (Wsapiref_94aa.asp) 呼叫中指定了未知、 無效或不支援的選項或層級。

WSAEPROTONOSUPPORT (10043)

  • 轉譯︰ 不支援的通訊協定。
  • 描述︰ 要求的通訊協定可能尚未設定在系統中,或沒有它的實作。例如,通訊端 (Wsapiref_2qr6.asp) 呼叫的要求 SOCK_DGRAM 通訊端,但是它會指定資料流通訊協定。

WSAESOCKTNOSUPPORT (10044)

  • 轉譯︰ 通訊端不支援的類型。
  • 描述︰ 這個通訊協定家族不支援指定的通訊端類型。例如,選擇性可能在通訊端 (Wsapiref_2qr6.asp) 呼叫中選取型別,但實作不支援 SOCK_RAW SOCK_RAW 通訊端根本。

WSAEOPNOTSUPP (10045)

  • 轉譯︰ 不支援此作業。
  • 描述︰ 所參考物件的型別不支援嘗試的作業。 到無法支援這項作業的通訊端的通訊端描述項嘗試接受資料包通訊端上的連線時,通常會發生這個錯誤。

WSAEPFNOSUPPORT (10046)

  • 轉譯︰ 通訊協定系列不支援。
  • 描述︰ 系統中尚未設定通訊協定家族,或沒有它的實作。這個訊息已經稍有不同的意義,從 WSAEAFNOSUPPORT。不過,它是經常可以交換。 所有的 Windows 通訊端函式會傳回其中一種訊息也會指定 WSAEAFNOSUPPORT。

WSAEAFNOSUPPORT (10047)

  • 轉譯︰ 通訊協定系列不支援位址。
  • 描述︰ 使用與要求的通訊協定不相容的位址。所有的通訊端會建立相關聯的通訊協定家族 (也就是網際網路通訊協定的 AF_INET) 與一般的通訊協定的類型 (也就是 SOCK_STREAM)。如果不正確的通訊協定明確要求通訊端 (Wsapiref_2qr6.asp) 呼叫中,或錯誤的家族位址用於通訊端,比方說,在 sendto (Wsapiref_4sqa.asp),則會傳回這個錯誤。

WSAEADDRINUSE (10048)

  • 轉譯︰ 位址正在使用中的。
  • 描述︰ 一般而言,允許只有一個使用的每個通訊端位址 (通訊協定/IP 位址/連接埠)。如果程式嘗試繫結 (Wsapiref_6vzm.asp) 的 IP 位址或已經在使用中的現有通訊端,未正確,關閉通訊端的連接埠的通訊端,就會發生這個錯誤或通訊端仍在結尾。伺服器必須繫結到相同的連接埠號碼的多個通訊端的程式,請考慮使用 setsockopt (Wsapiref_94aa.asp)(SO_REUSEADDR)。用戶端程式通常並不需要完全呼叫繫結,連接 (Wsapiref_8m7m.asp) 會自動選擇未使用的連接埠。當繫結的呼叫時使用萬用字元位址 (牽涉到 ADDR_ANY) 時,直到特定的地址已認可,可能會延遲 WSAEADDRINUSE 錯誤。這可能會發生更新版本,包括連接、 接聽、 WSAConnect 或 WSAJoinLeaf,就會發生的另一個函式的呼叫。

WSAEADDRNOTAVAIL (10049)

  • 轉譯︰ 無法指派要求的位址。
  • 描述︰ 要求的位址不正確,在它的內容。這個錯誤通常是嘗試繫結 (Wsapiref_6vzm.asp) 位址不是有效的本機電腦。這個錯誤也可能造成從連線 (Wsapiref_8m7m.asp),sendto (Wsapiref_4sqa.asp),WSAConnect (Wsapiref_8kc2.asp),WSAJoinLeaf (Wsapiref_7dv6.asp) 或 WSASendTo (Wsapiref_752q.asp) 時的遠端位址或連接埠不正確的遠端電腦 (例如,位址或連接埠 0)。

WSAENETDOWN (10050)

  • 轉譯︰ 網路已關閉。
  • 描述︰ 通訊端作業遇到停用的網路。這個錯誤可能表示嚴重的網路系統 (也就是透過執行的 Windows 通訊端 DLL 的通訊協定堆疊)、 網路介面或本機網路本身失敗。

WSAENETUNREACH (10051)

  • 轉譯︰ 網路是不可能執行到。
  • 描述︰ 通訊端操作嘗試不可能執行到的網路。此錯誤通常表示本機的軟體知道沒有連到遠端主機的路由。

WSAENETRESET (10052)

  • 轉譯︰ 網路中斷重設。
  • 描述︰ 連線可能因為在作業期間,偵測到失敗的持續作用活動都已中斷。它也可能會傳回由 setsockopt (Wsapiref_94aa.asp) 如果嘗試在已經失敗的連線上設定 SO_KEEPALIVE。

WSAECONNABORTED (10053)

  • 轉譯︰ 軟體造成連線中止。
  • 描述︰ 已建立的連線已停止您的主機電腦的軟體可能是因為資料傳輸逾時或通訊協定錯誤。

WSAECONNRESET (10054)

  • 轉譯︰ 對等已重設連線。
  • 描述︰ 遠端主機已強制關閉現有的連線。如果遠端主機上的對等程式突然停止、 重新啟動主應用程式時,或遠端主機會使用硬碟的關閉,通常就會發生這個錯誤。如需有關在遠端的通訊端上的 [SO_LINGER] 選項,請參閱 setsockopt (Wsapiref_94aa.asp)。如果連線已中斷,因為當一個或多個作業正在進行時,偵測到失敗的持續作用活動,也可能會造成這個錯誤。進行中的作業失敗,並 WSAENETRESET。後續的操作失敗,並 WSAECONNRESET。

WSAENOBUFS (10055)

  • 轉譯︰ 沒有可用的緩衝區空間。
  • 描述︰ 通訊端操作無法執行,因為系統缺乏足夠的緩衝區空間,或因為佇列已滿。

WSAEISCONN (10056)

  • 轉譯︰ 通訊端已經連線。
  • 描述︰ 已連線的通訊端上進行的連線要求。某些實作在 sendto (Wsapiref_4sqa.asp) 稱為連接的 SOCK_DGRAM 通訊端上 (如 SOCK_STREAM 的通訊端,到參數,在 sendto (Wsapiref_4sqa.asp) 會被略過) 雖然其他實作會將這視為有效的項目,也會傳回這個錯誤。

WSAENOTCONN (10057)

  • 轉譯︰ 通訊端並未連線。
  • 描述︰ 因為通訊端並未連線,而且 (在資料包通訊端使用 sendto [Wsapiref_4sqa.asp] 進行傳送時, 並未提供位址),將不允許傳送或接收資料的要求。任何其他類型的作業也可能會傳回這個錯誤,例如,如果連線已經重設設定 SO_KEEPALIVE 的 setsockopt (Wsapiref_94aa.asp)。

WSAESHUTDOWN (10058)

  • 轉譯︰ 通訊端關閉後無法傳送。
  • 描述︰ 不允許傳送或接收資料的要求,因為通訊端必須已經關閉先前的關機 (Wsapiref_60z6.asp) 呼叫該方向中。 當呼叫關機時,通訊端部份關閉要求。這表示,傳送或接收程序 (或兩者) 已經不再提供。

WSAETIMEDOUT (10060)

  • 轉譯︰ 連線逾時。
  • 描述︰ 連線嘗試失敗,因為連線對象沒有正確回應之後一段時間,或已建立的連線失敗因為連線的主機無法回應。

WSAECONNREFUSED (10061)

  • 轉譯︰ 連線被拒。
  • 描述︰ 可以建立沒有連線,因為目標電腦主動拒絕。這個錯誤通常在嘗試連接到不在作用中的外部索引的主機,也就是一個沒有已執行的伺服器程式上的服務。

WSAEHOSTDOWN (10064)

  • 轉譯︰ 主機當機。
  • 描述︰ 通訊端作業失敗,因為目標主機已關閉。通訊端作業遇到無作用的主機。本機主機上的網路活動尚未初始化。這些條件是更有可能會指出錯誤 WSAETIMEDOUT。

WSAEHOSTUNREACH (10065)

  • 轉譯︰ 沒有路由至主機。
  • 描述︰ 通訊端操作嘗試連線到主機。請參閱 WSAENETUNREACH。

WSAEPROCLIM (10067)

  • 轉譯︰ 太多的處理程序。
  • 描述︰ Windows 通訊端實作可能會對可以同時使用它的程式數目限制。WSAStartup (Wsapiref_1v8y.asp) 可能會因這項錯誤,如果已經到達限制。

WSASYSNOTREADY (10091)

  • 轉譯︰ 網路子系統是無法使用。
  • 描述︰ 如果 Windows 通訊端實作目前無法運作,因為它會使用來提供網路服務的基礎系統目前無法使用 WSAStartup (Wsapiref_1v8y.asp) 便會傳回這個錯誤。確認下列項目︰
    • 確認適當的 Windows 通訊端的 DLL 檔案位在目前的路徑。
    • 請確認他們正不試圖使用一個以上的 Windows 通訊端實作一次。
    • 如果有一個以上的 Winsock DLL 在您的系統上,確認路徑中第一個的 Winsock DLL 是適用於目前載入的網路子系統。
    • 請確認所有必要的元件是目前已安裝與 Windows 通訊端實作文件根據的正確設定。

WSAVERNOTSUPPORTED (10092)

  • 轉譯︰ 超出範圍的 Winsock.dll 版本。
  • 描述︰ 目前的 Windows 通訊端實作不支援程式所要求的 Windows 通訊端規格版本。請確定任何舊的 Windows 通訊端的 DLL 檔案目前正在存取。

WSANOTINITIALISED (10093)

  • 轉換︰ 成功 WSAStartup 尚未執行。
  • 描述︰ 不論是在程式已不會呼叫 WSAStartup (Wsapiref_1v8y.asp) 或 WSAStartup (Wsapiref_1v8y.asp) 失敗。程式可能正在存取不屬於目前的使用中工作的通訊端 (也就它正試著要共用的任務之間的通訊端),或呼叫 WSACleanup 太多次。

WSAEDISCON (10101)

  • 轉譯︰ 非失誤性的關機進行中。
  • 描述︰ WSARecv (Wsapiref_4z1u.asp) 和 WSARecvFrom (Wsapiref_4wky.asp),以指出遠端群體已經啟動一連串的非失誤性的關機,會傳回這個錯誤。

WSATYPE_NOT_FOUND (10109)

  • 轉譯︰ 找不到類型的類別。
  • 描述︰ 找不到指定的類別。

WSAHOST_NOT_FOUND (11001)

  • 轉譯︰ 找不到主機。沒有這種主機。
  • 描述︰ 名稱不是正式主機名稱或別名,或它找不到所要查詢的資料庫中。這項錯誤可能也會傳回通訊協定和服務查詢,以及它表示在相關資料庫中找不到指定的名稱。

WSATRY_AGAIN (11002)

  • 轉譯︰ 找不到的非授權主機。
  • 描述︰ 這個錯誤通常是暫時性的錯誤主機名稱解析,和它表示本機伺服器並未收到回應從授權伺服器。稍後重試可能會成功。

WSANO_RECOVERY (11003)

  • 轉譯︰ 這是無法復原的錯誤。
  • 描述︰ 這個錯誤表示某種無法復原的錯誤發生時進行資料庫查詢。如果找不到資料庫檔案 (例如,BSD 相容主機、 服務或通訊協定檔案),或者 DNS 要求傳回伺服器因嚴重的錯誤,可能會發生這個錯誤。

WSANO_DATA (11004)

  • 轉譯︰ 有效的名稱、 沒有資料的記錄要求的型別。
  • 描述︰ 要求的名稱無效,而且已在資料庫中,找到,但它並沒有解決的正確關聯的資料。典型的範例,這是主機名稱-位址轉譯嘗試 (使用 [Wsapiref_0q5u.asp] gethostbyname 或 WSAAsyncGetHostByName [Wsapiref_7bhu.asp]),而使用 DNS 伺服器。MX 記錄會傳回但沒有 A 記錄。這表示主應用程式本身的話,但它不是直接連線。

WSA_INVALID_HANDLE (作業系統相依)

  • 轉譯︰ 指定事件的物件控制代碼無效。
  • 描述︰ 程式嘗試使用一個事件的物件,但指定的控制代碼不正確。

WSA_INVALID_PARAMETER (作業系統相依)

  • 轉譯︰ 一或多個參數不正確。
  • 描述︰ 使用直接對應至 Win32 函式的 Windows 通訊端函式的程式。Win32 函式代表一或多個參數有問題。

WSA_IO_INCOMPLETE (作業系統相依)

  • 轉譯︰ 重疊的 I/O 事件物件未在收到信號狀態。
  • 描述︰ 程式嘗試判斷重疊作業尚未完成的狀態。輪詢模式中使用 WSAGetOverlappedResult (含 fWait 旗標設定為 FALSE),來判斷何時完成重疊的作業的程式會收到這個錯誤碼,直到作業完成為止。

WSA_IO_PENDING (作業系統相依)

  • 轉譯︰ 重疊的作業將稍後完成。
  • 描述︰ 程式已啟始重疊無法立即完成的作業。作業完成後,完成表示將稍後才傳送。

WSA_NOT_ENOUGH_MEMORY (作業系統相依)

  • 轉譯︰ 記憶體不足。
  • 描述︰ 使用直接對應至 Win32 函式的 Windows 通訊端函式的程式。Win32 函式指示的必需的記憶體資源不足。

WSA_OPERATION_ABORTED (作業系統相依)

  • 轉譯︰ 重疊作業中止。
  • 描述︰ 重疊的作業已取消,因為通訊端已關閉或 WSAIoctl (Wsapiref_6ik2.asp) 中的 [SIO_FLUSH] 命令可讓您正在執行。

WSAINVALIDPROCTABLE (作業系統相依)

  • 轉譯︰ 無效的程序從服務提供者的資料表。
  • 描述︰ Ws2_32.dll 服務提供者傳回無效的程序資料表。(這是通常因一或多個函式指標是 null。)

WSAINVALIDPROVIDER (作業系統相依)

  • 轉譯︰ 不正確的服務提供者的版本號碼。
  • 描述︰ 服務提供者傳回 2.0 以外的版本數字。

WSAPROVIDERFAILEDINIT (作業系統相依)

  • 轉譯︰ 無法初始化服務提供者。
  • 描述︰ 不論是哪一服務提供者的 DLL 無法載入 (失敗的 LoadLibrary),或提供者的 WSPStartup/NSPStartup 函數失敗。

WSASYSCALLFAILURE (作業系統相依)

  • 轉譯︰ 系統呼叫發生失敗。
  • 描述︰ 不應該失敗的系統呼叫失敗時,會傳回這個錯誤。例如,如果 WaitForMultipleObjects 的呼叫失敗,或其中一個登錄函數失敗嘗試變更通訊協定或名稱空間類別目錄,就會發生這個錯誤。