Freigeben über


HttpWaitForDemandStart-Funktion (http.h)

Die HttpWaitForDemandStart-Funktion wartet auf das Eintreffen einer neuen Anforderung, die von einem neuen Anforderungswarteschlangenprozess verarbeitet werden kann.

Syntax

HTTPAPI_LINKAGE ULONG HttpWaitForDemandStart(
  [in]           HANDLE       RequestQueueHandle,
  [in, optional] LPOVERLAPPED Overlapped
);

Parameter

[in] RequestQueueHandle

Ein Handle für die Anforderungswarteschlange, in der der Anforderungsstart registriert ist. Eine Anforderungswarteschlange wird erstellt, und ihr Handle wird durch einen Aufruf der HttpCreateRequestQueue-Funktion zurückgegeben.

[in, optional] Overlapped

Legen Sie für asynchrone Aufrufe pOverlapped so fest, dass er auf eine OVERLAPPED-Struktur verweist. Legen Sie für synchrone Aufrufe den Wert auf NULL fest.

Ein synchroner Aufruf blockiert, bis eine Anforderung in der angegebenen Warteschlange eingetroffen ist, 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.

Rückgabewert

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

Wenn die Funktion fehlschlägt, gibt sie einen der folgenden Fehlercodes zurück.

Wert Bedeutung
ERROR_INVALID_PARAMETER
Der ReqQueueHandle-Parameter enthält keine gültige Anforderungswarteschlange.
ERROR_INVALID_ID_AUTHORITY
Der aufrufende Prozess ist nicht der Controllerprozess für diese Anforderungswarteschlange.
ERROR_INVALID_HANDLE
Der aufrufende Prozess hat bereits ein Herunterfahren der Anforderungswarteschlange initiiert oder das Anforderungswarteschlangenhandle geschlossen.
ERROR_ALREADY_EXISTS
Für die Anforderungswarteschlange ist bereits eine Anforderungsstartregistrierung vorhanden.

Hinweise

Nur der Controllerprozess kann HttpWaitForDemandStart aufrufen, um eine Anforderungsstartbenachrichtigung zu registrieren. Der Controllerprozess ist der Prozess, der die Anforderungswarteschlange erstellt und durch Übergeben des HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER-Flags angegeben hat, dass es sich um einen Controllerprozess handelt. Wenn ein anderer Prozess als der steuernde Prozess HttpWaitForDemandStart aufruft, gibt die HTTP-Server-API ERROR_INVALID_ID_AUTHORITY zurück.

HttpWaitForDemandStart wird abgeschlossen, wenn eine neue Anforderung für die angegebene Anforderungswarteschlange eingeht. Zu diesem Zeitpunkt kann ein Controllerprozess diese API verwenden, um einen neuen Arbeitsprozess für ausstehende Anforderungen auf dem Server zu starten. Durch einen verzögerten Start des Arbeitsprozesses können Anwendungen den Ressourcenverbrauch vermeiden, bis sie benötigt werden.

Die HTTP-Server-API lässt jederzeit nur eine ausstehende Benachrichtigung zu, die in einer Anforderungswarteschlange registriert ist. Die HTTP-Server-API erzwingt keine Einschränkungen hinsichtlich der Anzahl der Aufrufe von HttpWaitForDemandStart in derselben Anforderungswarteschlange. Die Anzahl der ausstehenden Prozesse, die in derselben Anforderungswarteschlange arbeiten, ist nicht begrenzt.

Die HTTP-Server-API unterstützt das Abbrechen asynchroner HttpWaitForDemandStart-Aufrufe . Anwendungen können CancelIoEx mit der im pOverlapped-Parameter angegebenen überlappenden Struktur verwenden, um einen ausstehenden HttpWaitForDemandStart-Aufruf abzubrechen.

Anforderungen

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

Weitere Informationen

Funktionen der HTTP-Server-API, Version 2.0

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue