共用方式為


NDKPI 接聽程式、連接器和端點

NDK 取用者會呼叫 NdkConnect (NDK_FN_CONNECT) NdkConnectWithSharedEndpoint (NDK_FN_CONNECT_WITH_SHARED_ENDPOINT) 函式來連線 NDK 連接器。

處於線上狀態的每個連接器也有基礎端點,代表已建立 NDK 連線的本機端:

  • 透過 NDK 接聽程式接受連入連線所建立的連接器,會自動繼承接聽程式的隱含端點作為其本機隱含端點。
  • 透過 NdkConnect 函式連線的連接器有自己的專用隱含本機端點。
  • 透過 NdkConnectWithSharedEndpoint 函式連接的連接器具有明確的本機端點,可以與其他透過 NdkConnectWithSharedEndpoint 函式連接的連接器共用。

NDK 提供者必須針對每個隱含或明確端點保留某種類型的參考計數,並釋放端點 (亦即,將位址/埠標示為可在參考計數達到零時) 再次使用:

(非共用) 端點的參考計數

當取用者呼叫 NdkListen (NDK_FN_LISTEN) 函式時,提供者會建立隱含端點。 對於這個隱含端點,提供者必須維護參考計數,如下所示:

  • 將接聽程式的參考新增至端點的參考計數。

  • 針對透過該接聽程式接受的每個連接器新增參考。

  • 關閉先前透過接聽程式接受的連接器時,請移除參考。

  • 關閉接聽程式本身時,請移除參考。 注意 在關閉所有連接器之前,您無法關閉接聽程式。

  • 當端點的參考計數傳回零時釋出端點。 (只有在接聽程式和接聽程式上接受的所有連接器都已關閉時,才會發生這種情況。)

  • 只要先前尚未接受的連接器尚未關閉,只要關閉接聽程式就不會釋放端點。 這表示相同的本機位址和埠的新NdkListenNdkConnect 和 NdkConnectWithSharedEndpoint要求將會失敗,直到所有這類連線都關閉為止。 請注意,接聽程式上的關閉要求也會維持擱置狀態,直到所有這類連線都因為 NDKPI 物件存留期需求) 中所述的前項/後續規則而關閉 (。 提供者必須在接聽程式發出關閉要求後立即拒絕進一步的連入連線 (,如此關閉要求擱置時就不會接受任何新的連線) 。

連接器的參考計數

當取用者呼叫 NdkConnect時,提供者會建立和隱含端點。 對於這個隱含端點,提供者必須:

  • 加入連接器的參考。 只有一個連接器,因此只有一個參考。
  • 關閉連接器時,請移除連接器對端點的參考。
  • 當該參考消失時,請釋放端點。

共用端點的參考計數

當取用者呼叫 NdkConnectWithSharedEndpoint時,提供者會建立明確的共用端點。 對於這個明確的共用端點,提供者必須:

  • 將共用端點本身的參考新增至共用端點的參考計數。
  • 針對透過該共用端點連線的每個連接器新增參考。
  • 關閉先前透過共用端點連線的連接器時,請移除參考。
  • 釋放參考計數傳回零的端點。 (這是共用端點和透過共用端點連線的所有連接器已關閉的情況。)
  • 只要先前連線的連接器尚未關閉,只要關閉共用端點,就不會釋放端點。 這表示相同的本機位址和埠的新NdkListenNdkConnect 和 NdkConnectWithSharedEndpoint要求將會失敗,直到所有這類連線都關閉為止。 請注意,共用端點上的關閉要求也會維持擱置狀態,直到所有這類連線都因為 NDKPI 物件存留期需求) 中所述的前項/後續規則而關閉 (。

網路直接核心提供者介面 (NDKPI)