HttpSendResponseEntityBody-Funktion (http.h)

Die HttpSendResponseEntityBody-Funktion sendet Entitäts-Textdaten, die einer HTTP-Antwort zugeordnet sind.

Syntax

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
);

Parameter

[in] RequestQueueHandle

Ein Handle für die Anforderungswarteschlange, aus der die angegebene Anforderung abgerufen wurde. Eine Anforderungswarteschlange wird erstellt, und ihr Handle wird durch einen Aufruf der HttpCreateRequestQueue-Funktion zurückgegeben.

Windows Server 2003 mit SP1 und Windows XP mit SP2: Das Handle für die Anforderungswarteschlange wird von der HttpCreateHttpHandle-Funktion erstellt.

[in] RequestId

Ein Bezeichner der HTTP-Anforderung, der diese Antwort entspricht. Dieser Wert wird im RequestId-Member der HTTP_REQUEST-Struktur durch einen Aufruf der HttpReceiveHttpRequest-Funktion zurückgegeben. Sie kann nicht HTTP_NULL_ID werden.

[in] Flags

Ein Parameter, der einen der folgenden sich gegenseitig ausschließenden Flagwerte enthalten kann.

Flags Bedeutung
HTTP_SEND_RESPONSE_FLAG_DISCONNECT
Die Netzwerkverbindung sollte nach dem Senden dieser Antwort getrennt werden, wobei alle features für persistente Verbindungen überschrieben werden, die der verwendeten HTTP-Version zugeordnet sind. Anwendungen sollten dieses Flag verwenden, um das Ende der Entität in Fällen anzugeben, in denen weder die Inhaltslänge noch die blockierte Codierung verwendet wird.
HTTP_SEND_RESPONSE_FLAG_MORE_DATA
Zusätzliche Entitätstextdaten für diese Antwort werden von der Anwendung über einen oder mehrere nachfolgende Aufrufe von HttpSendResponseEntityBody gesendet. Beim letzten Aufruf wird dieses Flag dann auf 0 festgelegt.
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Dieses Flag ermöglicht das Puffern von Daten im Kernel auf Antwortbasis.

Sie sollte von einer Anwendung verwendet werden, die synchrone E/A-Vorgänge durchführt, oder von einer Anwendung, die asynchrone E/A-Vorgänge ausführt, wobei nicht mehr als eine ausstehende Sendezeit gleichzeitig gesendet wird.

Anwendungen, die asynchrone E/A-Vorgänge verwenden, bei denen möglicherweise mehrere ausstehende Sendevorgänge gleichzeitig vorhanden sind, sollten dieses Flag nicht verwenden.

Wenn dieses Flag festgelegt ist, sollte es auch in Aufrufen der HttpSendHttpResponse-Funktion konsistent verwendet werden.

Windows Server 2003: Dieses Flag wird nicht unterstützt. Dieses Flag ist neu für Windows Server 2003 mit SP1.

HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING
Aktiviert den TCP-Nagling-Algorithmus nur für diesen Sendevorgang.

Windows Vista und höher: Dieses Flag wird nicht unterstützt.

HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES
Gibt an, dass für eine Bereichsanforderung der vollständige Antwortinhalt übergeben wird und der Aufrufer möchte, dass die HTTP-API Bereiche entsprechend verarbeitet.
Hinweis Dieses Flag wird nur für Antworten auf HTTP GET-Anforderungen unterstützt und bietet eine begrenzte Teilmenge von Funktionen. Anwendungen, die eine Vollständige Bereichsverarbeitung erfordern, sollten diese im Benutzermodus ausführen und sich nicht auf HTTP.sys verlassen. Von der Verwendung wird abgeraten.
 
Windows Server 2008 R2 und Windows 7 oder höher.

Hinweis Dieses Flag wird unterstützt.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Gibt an, dass die Anforderung/Antwort nicht HTTP-konform ist und alle nachfolgenden Bytes als Entitätstext behandelt werden sollen. Anwendungen geben dieses Flag an, wenn sie eine Web Socket-Upgradeanforderung akzeptiert und HTTP.sys informiert, die Verbindungsdaten als undurchsichtige Daten zu behandeln.

Dieses Flag ist nur zulässig, wenn das StatusCode-Element von pHttpResponse101 ist und protokolle wechselt. HttpSendResponseEntityBody gibt ERROR_INVALID_PARAMETER für alle anderen HTTP-Antworttypen zurück, wenn dieses Flag verwendet wird.

Windows 8 und höher: Dieses Flag wird unterstützt.

 
Vorsicht Das Kombinieren beider Flags in einem einzigen Aufruf der HttpSendHttpResponse-Funktion führt zu nicht definierten Ergebnissen.
 

[in] EntityChunkCount

Eine Reihe von Strukturen im Array, auf die von pEntityChunks verwiesen wird. Dieser Wert darf 9999 nicht überschreiten.

[in] EntityChunks

Ein Zeiger auf ein Array von HTTP_DATA_CHUNK Strukturen, die als Entitätskörperdaten gesendet werden sollen.

[out] BytesSent

Optional. Ein Zeiger auf eine Variable, die die Zahl in Bytes empfängt, die gesendet wird, wenn die Funktion synchron arbeitet.

Legen Sie bei einem asynchronen Aufruf mit pOverlappedpBytesSent auf NULL fest. Andernfalls muss pBytesSent eine gültige Speicheradresse enthalten und nicht auf NULL festgelegt werden, wenn pOverlapped auf NULL festgelegt ist.

[in] Reserved1

Dieser Parameter ist reserviert und muss NULL sein.

[in] Reserved2

Dieser Parameter ist reserviert und muss null sein.

[in] Overlapped

Legen Sie bei asynchronen Aufrufen pOverlapped so fest, dass er auf eine OVERLAPPED-Struktur verweist. Legen Sie für synchrone Aufrufe auf NULL fest.

Ein synchroner Aufruf blockiert, bis alle im pEntityChunks-Parameter angegebenen Antwortdaten gesendet werden, während ein asynchroner Aufruf sofort ERROR_IO_PENDING zurückgibt und die aufrufende Anwendung dann GetOverlappedResult - oder E/A-Vervollständigungsports verwendet, um zu bestimmen, wann der Vorgang abgeschlossen ist. Weitere Informationen zur Verwendung von OVERLAPPED-Strukturen für die Synchronisierung finden Sie unter Synchronisierung und überlappende Eingabe und Ausgabe.

[in, optional] LogData

Ein Zeiger auf die HTTP_LOG_DATA Struktur, die zum Protokollieren der Antwort verwendet wird. Übergeben Sie einen Zeiger an die HTTP_LOG_FIELDS_DATA-Struktur , und wandeln Sie ihn in PHTTP_LOG_DATA um.

Beachten Sie, dass selbst wenn die Protokollierung für eine URL-Gruppe oder Serversitzung aktiviert ist, die Antwort nur protokolliert wird, wenn die Anwendung die Datenstruktur der Protokollfelder bereitstellt.

Windows Server 2003 und Windows XP mit SP2: Dieser Parameter ist reserviert und muss NULL sein.

Windows Vista und Windows Server 2008: Dieser Parameter ist neu für Windows Vista und Windows Server 2008.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert NO_ERROR.

Wenn die Funktion asynchron verwendet wird, gibt der Rückgabewert ERROR_IO_PENDING an, dass die nächste Anforderung noch nicht bereit ist und später über normale überlappende E/A-Vervollständigungsmechanismen abgerufen wird.

Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der folgenden Fehlercodes.

Wert Bedeutung
ERROR_INVALID_PARAMETER
Mindestens einer der angegebenen Parameter ist in einer nicht verwendbaren Form.
ERROR_BAD_COMMAND
Es steht ein Aufruf von HttpSendHttpResponse oder HttpSendResponseEntityBody mit derselben RequestId aus.
Andere
Ein in WinError.h definierter Systemfehlercode .

Hinweise

Wenn weder ein Content-Length-Header noch ein Transfercodierungsheader in den Antwortheadern enthalten ist, muss die Anwendung das Ende der Antwort angeben, indem sie die Verbindung mithilfe des flags HTTP_SEND_RESPONSE_DISCONNECT explizit schließt.

HinweisHttpSendResponseEntityBody (oder HttpSendHttpResponse) und HttpSendResponseEntityBody dürfen nicht gleichzeitig aus verschiedenen Threads auf derselben RequestId aufgerufen werden.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista, Windows XP mit SP2 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile http.h
Bibliothek Httpapi.lib
DLL Httpapi.dll

Weitere Informationen

Funktionen der HTTP-Server-API, Version 1.0

HTTP_DATA_CHUNK

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendHttpResponse