Share via


HttpDeclarePush-Funktion (http.h)

Deklariert eine Ressourcen-zu-Unterressourcen-Beziehung, die für einen HTTP-Serverpush verwendet werden soll. HTTP.sys führt dann einen HTTP 2.0-Serverpush für die angegebene Ressource aus, wenn das zugrunde liegende Protokoll, die Verbindung, der Client und die Richtlinien den Pushvorgang zulassen.

Syntax

HTTPAPI_LINKAGE ULONG HttpDeclarePush(
  [in]           HANDLE                RequestQueueHandle,
  [in]           HTTP_REQUEST_ID       RequestId,
  [in]           HTTP_VERB             Verb,
  [in]           PCWSTR                Path,
  [in, optional] PCSTR                 Query,
  [in, optional] PHTTP_REQUEST_HEADERS Headers
);

Parameter

[in] RequestQueueHandle

Das Handle für eine HTTP.sys Anforderungswarteschlange, die von der HttpCreateRequestQueue-Funktion zurückgegeben wurde.

[in] RequestId

Der undurchsichtige Bezeichner der Anforderung, die den Pushvorgang deklariert. Die Anforderung muss aus dem angegebenen Warteschlangenhandle stammen.

[in] Verb

Das HTTP-Verb, das für den Pushvorgang verwendet werden soll. Der HTTP.sys Pushvorgang unterstützt nur HttpVerbGET und HttpVerbHEAD.

[in] Path

Der Pfadteil der URL für die Ressource, die per Push übertragen wird.

[in, optional] Query

Der Abfrageteil der URL für die Ressource, die per Push übertragen wird. Diese Zeichenfolge sollte nicht das führende Fragezeichen (?) enthalten.

[in, optional] Headers

Die Anforderungsheader für den Pushvorgang.

Sie sollten keinen Hostheader angeben, da HTTP.sys automatisch die richtigen Hostinformationen generiert. HTTP.sys unterstützt keine ursprungsübergreifenden Pushvorgänge, sodass HTTP.sys Hostinformationen erzwingt und generiert, die der ursprünglichen vom Client initiierten Anforderung entsprechen.

Die Pushanforderung darf nicht über einen Entitätstext verfügen, sodass Sie keinen Inhaltslängenheader oder Transfer-Encoding-Header einschließen können.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird NO_ERROR zurückgegeben.

Wenn die Funktion fehlschlägt, gibt sie einen in WinError.h definierten Systemfehlercode zurück.

Hinweise

Sie sollten HttpDeclarePush aufrufen, bevor Sie Antwortbytes senden, die dazu führen würden, dass der Client die Unterressource selbst ermittelt. Wenn Diese Reihenfolge nicht beachtet wird, führt dies zu einem Wettlauf zwischen dem Server, der die Ressource per Push sendet, und dem Client, der die Ressourcen abruft, wodurch Bandbreite verschwendet werden kann. Die Serveranwendung sollte httpDeclarePush nur verwenden, um Ressourcen zu pushen, von denen die Serveranwendung sehr sicher ist, dass sie benötigt werden und noch nicht vom Client zwischengespeichert werden. Wenn die Serveranwendung andere Ressourcen pusht, kann es zu einer unnötigen Auslastung von Bandbreite und CPU kommen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile http.h
Bibliothek Httpapi.lib
DLL Httpapi.dll

Weitere Informationen

HTTP_REQUEST_HEADERS

HTTP_VERB

HttpCreateRequestQueue