Função HttpSendResponseEntityBody (http.h)
A função HttpSendResponseEntityBody envia dados de entidade-corpo associados a uma resposta HTTP.
Sintaxe
HTTPAPI_LINKAGE ULONG HttpSendResponseEntityBody(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] ULONG Flags,
[in] USHORT EntityChunkCount,
[in] PHTTP_DATA_CHUNK EntityChunks,
[out] PULONG BytesSent,
[in] PVOID Reserved1,
[in] ULONG Reserved2,
[in] LPOVERLAPPED Overlapped,
[in, optional] PHTTP_LOG_DATA LogData
);
Parâmetros
[in] RequestQueueHandle
Um identificador para a fila de solicitação da qual a solicitação especificada foi recuperada. Uma fila de solicitação é criada e seu identificador retornado por uma chamada para a função HttpCreateRequestQueue .
Windows Server 2003 com SP1 e Windows XP com SP2: O identificador para a fila de solicitação é criado pela função HttpCreateHttpHandle .
[in] RequestId
Um identificador da solicitação HTTP à qual essa resposta corresponde. Esse valor é retornado no membro RequestId da estrutura HTTP_REQUEST por uma chamada para a função HttpReceiveHttpRequest . Não pode ser HTTP_NULL_ID.
[in] Flags
Um parâmetro que pode incluir um dos seguintes valores de sinalizador mutuamente exclusivos.
Flags | Significado |
---|---|
|
A conexão de rede deve ser desconectada após o envio dessa resposta, substituindo todos os recursos de conexão persistente associados à versão do HTTP em uso. Os aplicativos devem usar esse sinalizador para indicar o fim da entidade nos casos em que nem o comprimento do conteúdo nem a codificação em partes são usados. |
|
Dados adicionais do corpo da entidade para essa resposta são enviados pelo aplicativo por meio de uma ou mais chamadas subsequentes para HttpSendResponseEntityBody. Em seguida, a última chamada define esse sinalizador como zero. |
|
Esse sinalizador permite o buffer de dados no kernel por resposta.
Ele deve ser usado por um aplicativo que faz E/S síncrona ou por um aplicativo que faz E/S assíncrona com não mais de um envio pendente por vez. Aplicativos que usam E/S assíncrona que podem ter mais de um envio pendente por vez não devem usar esse sinalizador. Quando esse sinalizador é definido, ele também deve ser usado consistentemente em chamadas para a função HttpSendHttpResponse . Windows Server 2003: Não há suporte para esse sinalizador. Esse sinalizador é novo para o Windows Server 2003 com SP1. |
|
Habilita o algoritmo de navegação TCP somente para este envio.
Windows Vista e posterior: Não há suporte para esse sinalizador. |
|
Especifica que, para uma solicitação de intervalo, o conteúdo de resposta completo é passado e o chamador deseja que a API HTTP processe intervalos adequadamente.
Nota Esse sinalizador só tem suporte para respostas a solicitações HTTP GET e oferece um subconjunto limitado de funcionalidade. Os aplicativos que exigem processamento de intervalo completo devem executá-lo no modo de usuário e não depender de HTTP.sys. Seu uso é desencorajado.
Nota Há suporte para esse sinalizador. |
|
Especifica que a solicitação/resposta não está em conformidade com HTTP e todos os bytes subsequentes devem ser tratados como entidade-corpo. Os aplicativos especificam esse sinalizador quando ele está aceitando uma solicitação de atualização do Web Socket e informando HTTP.sys para tratar os dados de conexão como dados opacos.
Esse sinalizador só é permitido quando o membro StatusCode do pHttpResponse é 101, alternando protocolos. HttpSendResponseEntityBody retornará ERROR_INVALID_PARAMETER para todos os outros tipos de resposta HTTP se esse sinalizador for usado. Windows 8 e posteriores: há suporte para esse sinalizador. |
[in] EntityChunkCount
Várias estruturas na matriz apontadas por pEntityChunks. Essa contagem não pode exceder 9999.
[in] EntityChunks
Um ponteiro para uma matriz de HTTP_DATA_CHUNK estruturas a serem enviadas como dados de entidade-corpo.
[out] BytesSent
Opcional. Um ponteiro para uma variável que recebe o número, em bytes, enviado se a função opera de forma síncrona.
Ao fazer uma chamada assíncrona usando pOverlapped, defina pBytesSent como NULL. Caso contrário, quando pOverlapped é definido como NULL, pBytesSent deve conter um endereço de memória válido e não ser definido como NULL.
[in] Reserved1
Esse parâmetro é reservado e deve ser NULL.
[in] Reserved2
Esse parâmetro é reservado e precisa ser zero.
[in] Overlapped
Para chamadas assíncronas, defina pOverlapped para apontar para uma estrutura OVERLAPPED ; para chamadas síncronas, defina-a como NULL.
Uma chamada síncrona bloqueia até que todos os dados de resposta especificados no parâmetro pEntityChunks sejam enviados , enquanto uma chamada assíncrona retorna imediatamente ERROR_IO_PENDING e o aplicativo de chamada usa as portas de conclusão GetOverlappedResult ou E/S para determinar quando a operação é concluída. Para obter mais informações sobre como usar estruturas OVERLAPPED para sincronização, consulte Sincronização e entrada e saída sobrepostas.
[in, optional] LogData
Um ponteiro para a estrutura de HTTP_LOG_DATA usada para registrar a resposta em log. Passe um ponteiro para a estrutura HTTP_LOG_FIELDS_DATA e converta-o em PHTTP_LOG_DATA.
Lembre-se de que, mesmo quando o registro em log estiver habilitado em um grupo de URL ou sessão de servidor, a resposta não será registrada, a menos que o aplicativo forneça a estrutura de dados dos campos de log.
Windows Server 2003 e Windows XP com SP2: Esse parâmetro é reservado e deve ser NULL.
Windows Vista e Windows Server 2008: Esse parâmetro é novo para Windows Vista e Windows Server 2008
Retornar valor
Se a função for bem-sucedida, o valor retornado será NO_ERROR.
Se a função for usada de forma assíncrona, um valor retornado de ERROR_IO_PENDING indicará que a próxima solicitação ainda não está pronta e será recuperada posteriormente por meio de mecanismos normais de conclusão de E/S sobrepostos.
Se a função falhar, o valor retornado será um dos seguintes códigos de erro.
Valor | Significado |
---|---|
|
Um ou mais dos parâmetros fornecidos estão em uma forma inutilizável. |
|
Há uma chamada pendente para HttpSendHttpResponse ou HttpSendResponseEntityBody com a mesma RequestId. |
|
Um código de erro do sistema definido em WinError.h. |
Comentários
Se nem um cabeçalho de comprimento de conteúdo nem um cabeçalho de codificação de transferência estiverem incluídos nos cabeçalhos de resposta, o aplicativo deverá indicar o final da resposta fechando explicitamente a conexão usando o sinalizador HTTP_SEND_RESPONSE_DISCONNECT .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | http.h |
Biblioteca | Httpapi.lib |
DLL | Httpapi.dll |