Compartilhar via


WSANSPIoctl

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função permite que os desenvolvedores façam chamadas controle E/S um espaço para nome registrado.

Syntax

int  WSAAPI WSANSPIoctl(
  HANDLE hLookup,
  DWORD dwControlCode,
  LPVOID lpvInBuffer,
  DWORD cbInBuffer,
  LPVOID lpvOutBuffer,
  DWORD cbOutBuffer,
  LPDWORD lpcbBytesReturned,
  LPWSACOMPLETION lpCompletion
);

Parameters

  • dwControlCode
    [no] Controlar codificar da operação para executar.
  • lpvInBuffer
    [no] Ponteiro para o buffer de entrada.
  • cbInBuffer
    [in, Out] Tamanho do buffer de entrada, em bytes.
  • lpvOutBuffer
    [out] Ponteiro para a reserva saída.
  • cbOutBuffer
    [in, Out] Ponteiro para uma integral valor para o tamanho da reserva de saída.
  • lpcbBytesReturned
    [out] Ponteiro para o número de bytes retornada.
  • lpCompletion
    [no] Ponteiro para um WSACOMPLETION estrutura, usada para assíncrono processamento. Defina lpCompletion como NULL para bloqueio forçar execução (síncrono).

Return Value

Bem-sucedidos retorna NO_ERROR. Falha retorna SOCKET_ERROR. Um código de erro específicos podem ser recuperadas por chamado de WSAGetLastError função. A seguinte tabela descreve os códigos de erro.

Código de erro Descrição

WSA_INVALID_HANDLE

hLookup não era um válido consulta identificador retornado por WSALookupServiceBegin.

WSA_IO_PENDING

Uma operação sobreposta foi iniciada com êxito e conclusão será indicada em um tempo posterior.

WSAEFAULT

O argumento lpvInBuffer, cbInBuffer, lpvOutBuffer, cbOutBuffer ou lpCompletion não é totalmente contido em um válido parte espaço de endereço o usuário. Como alternativa, o argumento cbInBuffer ou cbOutBuffer é muito pequeno e o argumento é modificado para refletir o exigido tamanho alocação.

WSAENETDOWN

Um parâmetro fornecido não é aceitável, ou a operação inadequadamente retorna os resultados de múltiplo espaços para nome quando ele não fizer sentido para a operação especificada.

WSAEOPNOTSUPP

Falha no subsistema da rede.

WSAEWOULDBLOCK

O Soquete não está usando E/S sobreposto, assíncrono processamento, mas o parâmetro lpCompletion é não-NULL.

Remarks

Essa função é usada para definir ou recuperar parâmetros operacionais associado com um identificador consulta espaço para nome.

Qualquer IOCTL pode bloco indefinidamente, dependendo implementação do namespace relevantes. Se um aplicativo não pode tolerar bloqueio em um WSANSPIoctl função chamar, E/S sobreposto é aconselhável e conclusão subseqüentemente é indicada por meio de mecanismo especificado no parâmetro de lpCompletion, que é um ponteiro para uma estrutura WSACOMPLETION. Se estiver lpCompletion NULL, a função WSANSPIoctl executa como um bloqueio chamar.

Para fazer um WSANSPIoctl de não bloqueio chamada de função e retornar imediatamente, definido WSACOMPLETION::Type para NSP_NOTIFY_IMMEDIATELY.

Observação

Todos os E/S iniciada por um determinado segmento será cancelada quando sai desse segmento.Para os soquetes sobrepostos, pendente assíncrono operações podem falhar se o segmento está fechado antes completo de operações.Para obter mais informações, consulte ExitThread.

A seguinte é codificar IOCTL com suporte:

  • SIO_NSP_NOTIFY_CHANGE

    Observação

    Os provedores usar como padrão em Windows Embedded CE suporte somente a NSP_NOTIFY_IMMEDIATELY e NSP_NOTIFY_EVENT conclusão tipos.Terceira parte provedores podem suporte outros tipos de conclusão.

    Esta operação verifica se os resultados da consulta retornado usando chamadas para o WSALookupServiceBegin (Soquetes do Windows) e WSALookupServiceNext (Soquetes do Windows) funções permanecerão válido. Se estiver lpCompletion NULL, essa operação é uma chamada seletiva e retorna imediatamente. Se a consulta conjunto permanecerá válido, código de erro WSAEWOULDBLOCK é retornado como notificação que a invalidação requer assíncrono notificação e lpCompletion é NULL. Se o conjunto consulta foi alterada e for inválido, NO_ERROR é retornado. Isso indica êxito na pesquisa de invalidação do conjunto de consulta.

    Nem todos os protocolos resolução de nomes são capazes suporte esse recurso e, portanto, chamar esta função podem falhar com código de erro WSAEOPNOTSUPP. Uma consulta que contém dados de múltiplo provedores não é possível chamar este IOCTL e retornará código de erro WSAEINVAL.

    Os parâmetros lpvInBuffer, cbInBuffer, lpvOutBuffer e cbOutBuffer serão ignorados.

    Alguns protocolos podem simplesmente armazenar em cache as informações localmente e invalidá-lo após algum tempo, no qual maiúsculas e minúsculas notificação pode ser emitida para indicar o local armazenar em cache foi invalidado.

    Para protocolos resolução de nomes onde as alterações são raros, é possível para um provedor serviço namespace para indicar um evento alteração global que pode não ser aplicável para a consulta na qual notificação de alteração foi solicitada e emitidos.

    Operações de chamada seletiva imediata geralmente são muito menos caro porque eles não exigem um objeto notificação. Na maioria dos casos, isso é implementado como um simples Boolean variável verificar. Notificação assíncrona, no entanto, pode exigir a criação de thread(s) de trabalho dedicado e / ou de comunicação entre processos channel(s), depending on implementação provedor serviço namespace e irá incorridas processamento sobrecarga relacionado para o objeto notificação envolvido sinalização evento de alteração.

    Para cancelar um assíncrono solicitação notificação, final o original consulta com um WSALookupServiceEnd (Soquetes do Windows) chamada de função no identificador de consulta afetado. Cancelando assíncrono notificação para LUP_NOTIFY_HWND não irá postagem qualquer mensagem, no entanto, uma operação sobreposta vai ser concluída e notificação será enviada com o erro WSA_OPERATION_ABORTED.

Requirements

Header winsock2.h
Library Ws2.lib
Windows Embedded CE Windows CE .NET 4.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

WSALookupServiceBegin (Windows Sockets)
WSALookupServiceEnd (Windows Sockets)