The CreateFiber function allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address, typically the fiber function. This function does not schedule the fiber.
LPVOID CreateFiber(
DWORD dwStackSize, | // initial thread stack size, in bytes |
LPFIBER_START_ROUTINE lpStartAddress, | // pointer to fiber function |
LPVOID lpParameter | // argument for new fiber |
); |
Parameters
dwStackSize
Specifies the size, in bytes, of the stack for the new fiber. If zero is specified, the stack size defaults to the same size as that of the main thread. The function fails if it cannot commit dwStackSize bytes. Note that the system increases the stack size dynamically, if necessary. The stack is freed when the thread terminates.
lpStartAddress
Points to the application-supplied function to be executed by the fiber and represents the starting address of the fiber. The function accepts a single argument and does not return a value. Execution of the newly created fiber does not begin until another fiber calls the SwitchToFiber function with this address.
lpParameter
Specifies a single argument that is passed to the fiber. This value can be retrieved by the fiber using the GetFiberData function.
Return Values
If the function succeeds, the return value is the address of the fiber.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
Remarks
Before a thread can schedule a fiber using the SwitchToFiber function, it must call the ConvertThreadToFiber function so there is a fiber associated with the thread.
The fiber function is of type FIBER_START_ROUTINE. It accepts a single value of type PVOID (fiber data) and does not return a value. The prototype for this function is as follows:
VOID WINAPI FiberFunc( PVOID lpParameter );
See Also