Compartilhar via


Manipulando opções de soquete e códigos de controle para uma SAN

A opção Windows Sockets, em conjunto com o provedor TCP/IP, manipula a maioria das chamadas WSPGetSockOpt, WSPSetSockOpt e WSPIoctl iniciadas por aplicativos. Essas solicitações geralmente são para definir e recuperar opções e parâmetros operacionais associados ao soquete de um aplicativo. A opção geralmente não encaminha essas chamadas para um provedor de serviços SAN, exceto conforme descrito nas seções a seguir.

Recuperando opções de soquete SAN

A opção Windows Sockets chama a função WSPGetSockOpt de um provedor de serviços SAN e passa uma das seguintes opções de soquete para recuperar o valor atual dessa opção, se o provedor de serviços SAN der suporte a essa opção:

SO_DEBUG
Os provedores de serviços SAN não são necessários para dar suporte a essa opção. Eles são incentivados, mas não necessários, a fornecer informações de depuração de saída se os aplicativos definirem a opção SO_DEBUG.

SO_MAX_MSG_SIZE
Um provedor de serviços SAN deverá dar suporte a essa opção se o transporte SAN subjacente for orientado a mensagens e o transporte limitar a quantidade de dados que a opção pode enviar em uma chamada para a função WSPSend do provedor de serviços SAN. A opção não passa posteriormente solicitações de envio para o provedor de serviços SAN que excedem o tamanho que o provedor de serviços SAN retorna para o valor dessa opção.

SO_MAX_RDMA_SIZE
Um provedor de serviços SAN deverá dar suporte a essa opção se o transporte SAN subjacente limitar a quantidade de dados que a opção pode transferir em chamadas para a função WSPRdmaRead ou WSPRdmaWrite do provedor de serviços SAN. A opção não passa posteriormente solicitações de transferência rdma para o provedor de serviços SAN que excedem o tamanho que o provedor de serviços SAN retorna para o valor dessa opção.

SO_RDMA_THRESHOLD_SIZE
Um provedor de serviços SAN dá suporte a essa opção para indicar sua preferência pela quantidade mínima de dados que a opção pode transferir em chamadas para a função WSPRdmaRead ou WSPRdmaWrite do provedor de serviços SAN. No entanto, a opção pode definir o limite real para um valor diferente do valor retornado pelo provedor de serviços SAN. A opção chama posteriormente a função WSPRdmaRead ou WSPRdmaWrite para transferir blocos de dados (transferências rdma) que excedem o tamanho desse limite e a função WSPSend ou WSPRecv para transferir blocos de dados (transferências orientadas a mensagens) que são menores ou iguais ao tamanho desse limite.

SO_GROUP_ID, SO_GROUP_PRIORITY
Um provedor de serviços SAN deve dar suporte a essas opções se oferecer suporte à QoS (qualidade do serviço). Caso contrário, a opção encaminhará essas opções para o provedor TCP/IP, que mantém valores padrão. Um provedor de serviços SAN indica que ele dá suporte ao QoS definindo o bit XP1_QOS_SUPPORTED no membro dwServiceFlags da estrutura WSAPROTOCOL_INFO.

Definindo opções de soquete SAN

A opção Windows Sockets chama a função WSPSetSockOpt de um provedor de serviços SAN e passa uma das seguintes opções de soquete para definir um valor para essa opção, se o provedor de serviços SAN der suporte a essa opção:

SO_DEBUG
Para obter uma descrição dessa opção de soquete, consulte a lista anterior.

SO_GROUP_PRIORITY
Para obter uma descrição dessa opção de soquete, consulte a lista anterior.

Acessando informações do soquete SAN

A opção Windows Sockets chama a função WSPIoctl de um provedor de serviços SAN e passa um dos seguintes códigos de controle para definir ou recuperar informações para esse provedor de serviços SAN, se o provedor de serviços SAN der suporte a esse código de controle:

SIO_GET_EXTENSION_FUNCTION_POINTER
Recupera um ponteiro para uma função de extensão que um provedor de serviços SAN deve dar suporte. Para obter mais informações sobre funções de extensão, consulte Extensões de SPI do Windows Sockets para SANs. O buffer de entrada da chamada WSPIoctl contém o GUID cujo valor identifica a função de extensão especificada. O provedor de serviços SAN retorna o ponteiro para a função solicitada no buffer de saída do WSPIoctl. A tabela a seguir contém GUIDs para funções de extensão que um provedor de serviços SAN pode dar suporte:

Função de extensão 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
Um provedor de serviços SAN deverá dar suporte a esses códigos de controle se ele der suporte a QoS. Caso contrário, a opção encaminhará essas opções para o provedor TCP/IP, que mantém valores padrão. Um provedor indica que ele dá suporte ao QoS definindo o bit XP1_QOS_SUPPORTED no membro dwServiceFlags da estrutura WSAPROTOCOL_INFO.

SIO_ADDRESS_LIST_QUERY
Recupera a lista de endereços IP locais atribuídos às NICs (placas de interface de rede) que o provedor de serviços SAN controla. O provedor de serviços SAN usa uma estrutura SOCKET_ADDRESS_LIST, definida da seguinte maneira, para retornar a lista no buffer de saída do WSPIoctl:

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

Os membros dessa estrutura contêm as seguintes informações:

iAddressCount
Especifica o número de estruturas de endereço na lista.

Endereço
Matriz de estruturas de endereço IP.

A opção usa esse código IOCTL internamente para decidir se deseja usar um determinado provedor de serviços SAN para executar solicitações de um aplicativo para fazer conexões ou escutar conexões de entrada. A opção encaminha solicitações reais de aplicativo para a lista de endereços IP locais para o provedor TCP/IP. A opção também usa o provedor TCP/IP para detectar alterações em listas de endereços que todos os provedores de serviços san service. Depois que o TCP/IP relata uma alteração, a opção consulta todos os provedores de serviços SAN para atualizar suas listas.