<Return[C]><Top>

CreateFiber

Declare Function Api_CreateFiber& Lib "kernel32" Alias "CreateFiber" (ByVal dwStackSize&, ByRef lpStartAddress As LPFIBER_START_ROUTINE, lpParameter As Any)

Declare Function CreateFiber Lib "kernel32" Alias "CreateFiber" (ByVal dwStackSize As Long, ByRef lpStartAddress As LPFIBER_START_ROUTINE, lpParameter As Any) As Long

ファイバオブジェクトを確保し、そのオブジェクトにスタックを割り当て、指定された開始アドレス(通常はファイバ関数)から実行を開始するための準備を行う。この関数は、ファイバをスケジューリングしない。

パラメータ
dwStackSize
    新しいファイバに割り当てるスタックのサイズをバイト単位で指定する。0 を指定すると、スタックは既定値でメインスレッドと同じサイズにな

    る。dwStackSize で指定したサイズをコミットできないと、関数は失敗する。システムは必要に応じてスタックサイズを動的に増やす。スタッ

    クは、スレッドを終了すると解放される。
lpStartAddress
    ファイバによって実行する LPFIBER_START_ROUTINE 型のアプリケーション定義関数へのポインタを指定する。このポインタは、ファイバ

    の開始アドレスを表す。新しく作成したファイバの実行は、このアドレスを指定して SwitchToFiber 関数を呼び出すまで開始されない。
lpParameter
    ファイバに渡す引数を 1 つだけ指定する。ファイバは、GetFiberData 関数を使ってこの値を取得できる。

戻り値
    関数が成功すると、ファイバのアドレスが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    スレッドが SwitchToFiber 関数を使ってファイバをスケジューリングするためには、ConvertThreadToFiber 関数を呼び出し、そのスレッドに

    関連付けられたファイバが存在するようにしておく必要がある。