CreateFiberEx-Funktion (winbase.h)
Weist ein Faserobjekt zu, weist ihm einen Stapel zu und richtet die Ausführung so ein, dass die Ausführung an der angegebenen Startadresse beginnt, in der Regel die Fiberfunktion. Diese Funktion plant die Faser nicht.
Syntax
LPVOID CreateFiberEx(
[in] SIZE_T dwStackCommitSize,
[in] SIZE_T dwStackReserveSize,
[in] DWORD dwFlags,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
Parameter
[in] dwStackCommitSize
Die anfängliche Commitgröße des Stapels in Bytes. Wenn dieser Parameter 0 ist, verwendet die neue Faser die standardmäßige Commitstapelgröße für die ausführbare Datei. Weitere Informationen finden Sie unter Threadstapelgröße.
[in] dwStackReserveSize
Die anfängliche Reservegröße des Stapels in Bytes. Wenn dieser Parameter 0 ist, verwendet die neue Faser die standardmäßige reservierte Stapelgröße für die ausführbare Datei. Weitere Informationen finden Sie unter Threadstapelgröße.
[in] dwFlags
Wenn dieser Parameter 0 ist, wird der Gleitkommazustand auf x86-Systemen nicht umgeschaltet, und Daten können beschädigt werden, wenn eine Faser Gleitkommaarithmetik verwendet. Wenn dieser Parameter FIBER_FLAG_FLOAT_SWITCH ist, wird der Gleitkommazustand für die Faser umgestellt.
Windows XP: Das FIBER_FLAG_FLOAT_SWITCH-Flag wird nicht unterstützt.
[in] lpStartAddress
Ein Zeiger auf die anwendungsdefinierte Funktion, die von der Fasern ausgeführt werden soll, und stellt die Startadresse der Faser dar. Die Ausführung der neu erstellten Faser beginnt erst, wenn eine andere Faser die SwitchToFiber-Funktion mit dieser Adresse aufruft. Weitere Informationen zur Fiber-Rückruffunktion finden Sie unter FiberProc.
[in, optional] lpParameter
Ein Zeiger auf eine Variable, die an die Faser übergeben wird. Die Faser kann diese Daten mithilfe des Makros GetFiberData abrufen.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Adresse der Faser.
Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die Anzahl der Fasern, die ein Prozess erstellen kann, wird durch den verfügbaren virtuellen Arbeitsspeicher begrenzt. Standardmäßig verfügt jede Faser über 1 Megabyte reservierten Stapelspeicher. Daher können Sie maximal 2028 Fasern erstellen. Wenn Sie die Standardstapelgröße reduzieren, können Sie mehr Fasern erstellen. Ihre Anwendung hat jedoch eine bessere Leistung, wenn Sie eine alternative Strategie für die Verarbeitung von Anforderungen verwenden.
Bevor ein Thread eine Faser mit der SwitchToFiber-Funktion planen kann, muss er die ConvertThreadToFiber-Funktion aufrufen, damit dem Thread eine Faser zugeordnet ist.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0400 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |