HttpSendHttpResponse-Funktion (http.h)
Die HttpSendHttpResponse-Funktion sendet eine HTTP-Antwort an die angegebene HTTP-Anforderung.
Syntax
HTTPAPI_LINKAGE ULONG HttpSendHttpResponse(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] ULONG Flags,
[in] PHTTP_RESPONSE HttpResponse,
[in, optional] PHTTP_CACHE_POLICY CachePolicy,
[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. Dieser Wert kann nicht HTTP_NULL_ID werden.
[in] Flags
Dieser Parameter kann eine Kombination aus einigen der folgenden Flagwerte sein. Diejenigen, die sich gegenseitig ausschließen, werden entsprechend gekennzeichnet.
Flags | Bedeutung |
---|---|
|
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. Vorsicht Die Kombination von HTTP_SEND_RESPONSE_FLAG_DISCONNECT und HTTP_SEND_RESPONSE_FLAG_MORE_DATA in einem einzelnen Aufruf der HttpSendHttpResponse-Funktion führt zu nicht definierten Ergebnissen.
|
|
Zusätzliche Entitätstextdaten für diese Antwort werden von der Anwendung über einen oder mehrere nachfolgende Aufrufe von HttpSendResponseEntityBody gesendet. Beim letzten Aufruf, der Entitätskörperdaten sendet, wird dieses Flag dann auf 0 festgelegt.
Vorsicht Die Kombination von HTTP_SEND_RESPONSE_FLAG_DISCONNECT und HTTP_SEND_RESPONSE_FLAG_MORE_DATA in einem einzelnen Aufruf der HttpSendHttpResponse-Funktion führt zu nicht definierten Ergebnissen.
|
|
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 ausführt, oder von einer Anwendung, die asynchrone E/A-Vorgänge mit jeweils nicht mehr als einem ausstehenden Sendevorgang ausführt. Anwendungen, die asynchrone E/A-Vorgänge verwenden und die möglicherweise mehrere ausstehende Sendevorgänge gleichzeitig aufweisen, sollten dieses Flag nicht verwenden. Wenn dieses Flag festgelegt ist, sollte es auch konsistent in Aufrufen der HttpSendResponseEntityBody-Funktion verwendet werden. Windows Server 2003: Dieses Flag wird nicht unterstützt. Dieses Flag ist neu für Windows Server 2003 mit SP1. |
|
Aktiviert den TCP-Nagling-Algorithmus nur für diesen Sendevorgang.
Windows Server 2003 mit SP1 und Windows XP mit SP2: Dieses Flag wird nicht unterstützt. |
|
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.
Hinweis Dieses Flag wird unterstützt. |
|
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. HttpSendHttpResponse 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. |
[in] HttpResponse
Ein Zeiger auf eine HTTP_RESPONSE-Struktur , die die HTTP-Antwort definiert.
[in, optional] CachePolicy
Ein Zeiger auf die HTTP_CACHE_POLICY Struktur, die zum Zwischenspeichern der Antwort verwendet wird.
Windows Server 2003 mit SP1 und Windows XP mit SP2: Dieser Parameter ist reserviert und muss NULL sein.
[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 pHttpResponse-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, gibt die Funktion NO_ERROR zurück.
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, gibt sie einen der folgenden Fehlercodes zurück.
Wert | Bedeutung |
---|---|
|
Mindestens einer der angegebenen Parameter ist in einer nicht verwendbaren Form. |
|
Ein in WinError.h definierter Systemfehlercode . |
Hinweise
Die HttpSendHttpResponse-Funktion wird verwendet, um einen Antwortheader zu erstellen und zu senden, und die HttpSendResponseEntityBody-Funktion kann verwendet werden, um Entitätskörperdaten nach Bedarf zu senden.
Wenn weder ein Header mit Inhaltslänge noch ein Transfercodierungsheader in der Antwort enthalten ist, muss die Anwendung das Ende der Antwort angeben, indem die Verbindung mithilfe des flags HTTP_SEND_RESPONSE_DISCONNECT explizit geschlossen wird.
Wenn eine Anwendung einen "Server:"-Header in einer Antwort angibt und den HttpHeaderServer-Bezeichner in der HTTP_KNOWN_HEADER-Struktur verwendet, wird dieser angegebene Wert als erster Teil des Headers platziert, gefolgt von einem Leerzeichen und dann "Microsoft-HTTPAPI/1.0". Wenn kein Serverheader angegeben ist, stellt HttpSendHttpResponse als Serverheader "Microsoft-HTTPAPI/1.0" bereit.
Anforderungen
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 |