共用方式為


處理 SAN 的通訊端選項和控制程式代碼

Windows Sockets 參數會與 TCP/IP 提供者搭配使用,處理應用程式起始的大部分 WSPGetSockOptWSPSetSockOptWSPIoctl 呼叫。 這些要求通常會設定和擷取與應用程式通訊端相關聯的選項和作業參數。 參數通常不會將這些呼叫轉送到 SAN 服務提供者,但下列各節所述。

擷取 SAN 通訊端選項

如果 SAN 服務提供者支援該選項,Windows Sockets 參數會呼叫 SAN 服務提供者的 WSPGetSockOpt 函式,並傳遞下列其中一個通訊端選項來擷取該選項的目前值:

SO_DEBUG
不支援此選項不需要 SAN 服務提供者。 如果應用程式設定SO_DEBUG選項,則建議他們提供輸出偵錯資訊,但並非必要。

SO_MAX_MSG_SIZE
如果基礎 SAN 傳輸是訊息導向,而且傳輸會限制交換器可以在呼叫 SAN 服務提供者 的 WSPSend 函式中傳送的資料量,則 SAN 服務提供者必須支援此選項。 交換器後續不會將傳送要求傳遞給超過 SAN 服務提供者針對此選項值傳回的大小的 SAN 服務提供者。

SO_MAX_RDMA_SIZE
如果基礎 SAN 傳輸限制交換器可以在呼叫 SAN 服務提供者的 WSPRdmaReadWSPRdmaWrite 函式時傳輸的資料量,則 SAN 服務提供者必須支援此選項。 交換器後續不會將 RDMA 傳輸要求傳遞給超過 SAN 服務提供者針對此選項值傳回的大小的 SAN 服務提供者。

SO_RDMA_THRESHOLD_SIZE
SAN 服務提供者支援此選項,以指出交換器可以在呼叫 SAN 服務提供者的 WSPRdmaReadWSPRdmaWrite 函式時傳輸的資料量下限。 不過,參數可以將實際閾值設定為不同于 SAN 服務提供者所傳回的值。 交換器接著會呼叫 WSPRdmaReadWSPRdmaWrite 函式來傳輸資料區塊, (RDMA 傳輸) 超過此閾值的大小,以及 WSPSendWSPRecv 函式來傳輸資料區塊, (訊息導向傳輸) 小於或等於此閾值的大小。

SO_GROUP_ID,SO_GROUP_PRIORITY
如果 SAN 服務提供者支援服務品質 (QoS) ,則 SAN 服務提供者必須支援這些選項。 否則,交換器會將這些選項轉送到 TCP/IP 提供者,以維護預設值。 SAN 服務提供者會藉由在WSAPROTOCOL_INFO結構的 dwServiceFlags 成員中設定XP1_QOS_SUPPORTED位,來指出它支援 QoS。

設定 SAN 通訊端選項

如果 SAN 服務提供者支援該選項,Windows Sockets 參數會呼叫 SAN 服務提供者的 WSPSetSockOpt 函式,並傳遞下列其中一個通訊端選項來設定該選項的值:

SO_DEBUG
如需此通訊端選項的描述,請參閱上述清單。

SO_GROUP_PRIORITY
如需此通訊端選項的描述,請參閱上述清單。

存取 SAN 通訊端資訊

如果 SAN 服務提供者支援該控制程式代碼,Windows Sockets 參數會呼叫 SAN 服務提供者的 WSPIoctl 函 式,並傳遞下列其中一個控制程式代碼來設定或擷取該 SAN 服務提供者的資訊:

SIO_GET_EXTENSION_FUNCTION_POINTER
擷取 SAN 服務提供者必須支援的擴充功能函式指標。 如需擴充功能的詳細資訊,請參閱 SAN 的 Windows Sockets SPI 延伸模組WSPIoctl呼叫的輸入緩衝區包含 GUID,其值會識別指定的擴充函式。 SAN 服務提供者會傳回 WSPIoctl輸出緩衝區中要求函式的指標。 下表包含 SAN 服務提供者可支援的擴充功能 GUID:

擴充功能函式 GUID

WSPRegisterMemory

{C0B422F5-F58C-11d1-AD6C-00C04FA34A2D}

WSPDeregisterMemory

{C0B422F6-F58C-11d1-AD6C-00C04FA34A2D}

WSPRegisterRdmaMemory

{C0B422F7-F58C-11d1-AD6C-00C04FA34A2D}

WSPDeregisterRdmaMemory

{C0B422F8-F58C-11d1-AD6C-00C04FA34A2D}

WSPRdmaWrite

{C0B422F9-F58C-11d1-AD6C-00C04FA34A2D}

WSPRdmaRead

{C0B422FA-F58C-11d1-AD6C-00C04FA34A2D}

WSPMemoryRegistrationCacheCallback

{E5DA4AF8-D824-48CD-A799-6337A98ED2AF}

SIO_GET_QOS、SIO_GET_GROUP_QOS、SIO_SET_QOS SIO_SET_GROUP_QOS
如果 SAN 服務提供者支援 QoS,則必須支援這些控制程式代碼。 否則,交換器會將這些選項轉送到 TCP/IP 提供者,以維護預設值。 提供者會藉由在 WSAPROTOCOL_INFO 結構的 dwServiceFlags 成員中設定 XP1_QOS_SUPPORTED 位,以指出它支援 QoS。

SIO_ADDRESS_LIST_QUERY
擷取指派給網路介面卡的本機 IP 位址清單, (NIC) SAN 服務提供者所控制。 SAN 服務提供者會使用定義如下的 SOCKET_ADDRESS_LIST 結構,以傳回 WSPIoctl輸出緩衝區中的清單:

typedef struct _SOCKET_ADDRESS_LIST {
    INT             iAddressCount; 
    SOCKET_ADDRESS  Address[1]; 
} SOCKET_ADDRESS_LIST, FAR * LPSOCKET_ADDRESS_LIST;

此結構的成員包含下列資訊:

iAddressCount
指定清單中的位址結構數目。

位址
IP 位址結構的陣列。

參數會在內部使用此 IOCTL 程式碼,以決定是否要使用指定的 SAN 服務提供者來執行應用程式的連線要求,或接聽連入連線。 交換器會將本機 IP 位址清單的實際應用程式要求轉送至 TCP/IP 提供者。 交換器也會使用 TCP/IP 提供者來偵測所有 SAN 服務提供者服務地址清單中的變更。 TCP/IP 報告變更之後,交換器會查詢所有 SAN 服務提供者以重新整理其清單。