IAsyncReader::Request-Methode (strmif.h)
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Die Request
-Methode stellt eine asynchrone Anforderung für Daten in die Warteschlange.
Syntax
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Parameter
pSample
Zeiger auf die IMediaSample-Schnittstelle eines vom Aufrufer bereitgestellten Medienbeispiels.
[in] dwUser
Gibt einen beliebigen Wert an, der zurückgegeben wird, wenn die Anforderung abgeschlossen ist.
Rückgabewert
Gibt einen HRESULT-Wert zurück. Die folgenden Werte sind möglich.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Erfolg. |
|
Der Puffer ist nicht ordnungsgemäß ausgerichtet. |
|
Das Beispiel war nicht zeitstempelt. |
|
Der Stift wird geleert. |
|
Die angeforderte Startposition befindet sich am Ende der Datei. |
|
Nicht genügend Arbeitsspeicher. |
Hinweise
Rufen Sie vor dem Aufrufen dieser Methode ein Medienbeispiel aus dem Zuteilungsgeber des Pins ab. Zeitstempel des Beispiels mit den Byteoffsets, die Sie anfordern, einschließlich erster und letzter, multipliziert mit 10.000.000. Byteoffsets sind relativ zum Anfang des Datenstroms.
Die Start- und Stopppositionen sollten mit der Ausrichtung übereinstimmen, die beim Verbinden der Pins festgelegt wurde. Andernfalls gibt die Methode möglicherweise VFW_E_BADALIGN zurück. Wenn die vereinbarte Ausrichtung gröber als die tatsächliche Ausrichtung des Streams ist, kann die Stoppposition die tatsächliche Dauer überschreiten. Wenn ja, rundet die Methode die Stoppposition auf die tatsächliche Ausrichtung ab.
Obwohl dies technisch eine Verletzung der COM-Regeln ist, muss der Aufrufer eine ausstehende Referenzanzahl für die Stichprobe hinterlassen. Die Request
-Methode ruft weder AddRef noch Release auf, sodass die Verweisanzahl erforderlich ist, um das Beispiel aktiv zu halten.
Die -Methode gibt zurück, bevor die Anforderung abgeschlossen ist. Rufen Sie die IAsyncReader::WaitForNext-Methode auf, um auf die Anforderung zu warten. Verwenden Sie das originale Medienbeispiel nicht wieder, während die Anforderung aussteht. Die WaitForNext-Methode gibt einen Zeiger auf das ursprüngliche Beispiel zurück. Wenn die Anforderung erfolgreich war, enthält das Beispiel die angeforderten Daten. Die WaitForNext-Methode gibt auch den im dwUser-Parameter angegebenen Wert zurück. Der Aufrufer kann diesen Wert verwenden, um das Beispiel zu identifizieren.
Beispiele
Das folgende Beispiel zeigt eine mögliche Hilfsfunktion für einen Eingabenadel, um Anforderungen in die Warteschlange zu stellen:
C++ |
---|
|
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | strmif.h (include Dshow.h) |
Bibliothek | Strmiids.lib |