CreateFiber

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

ConvertThreadToFiber, GetFiberData, SwitchToFiber