CreateFiberEx 関数 (winbase.h)
ファイバー オブジェクトを割り当て、スタックを割り当て、指定した開始アドレス (通常はファイバー関数) から開始するように実行を設定します。 この関数は、ファイバーをスケジュールしません。
構文
LPVOID CreateFiberEx(
[in] SIZE_T dwStackCommitSize,
[in] SIZE_T dwStackReserveSize,
[in] DWORD dwFlags,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
パラメーター
[in] dwStackCommitSize
スタックの初期コミット サイズ (バイト単位)。 このパラメーターが 0 の場合、新しいファイバーは実行可能ファイルの既定のコミット スタック サイズを使用します。 詳細については、「 スレッド スタック サイズ」を参照してください。
[in] dwStackReserveSize
スタックの初期予約サイズ (バイト単位)。 このパラメーターが 0 の場合、新しいファイバーは実行可能ファイルの既定の予約済みスタック サイズを使用します。 詳細については、「 スレッド スタック サイズ」を参照してください。
[in] dwFlags
このパラメーターが 0 の場合、x86 システムの浮動小数点状態は切り替えされず、ファイバーで浮動小数点演算を使用するとデータが破損する可能性があります。 このパラメータが FIBER_FLAG_FLOAT_SWITCHの場合、ファイバの浮動小数点状態が切り替わります。
Windows XP: FIBER_FLAG_FLOAT_SWITCH フラグはサポートされていません。
[in] lpStartAddress
ファイバーによって実行されるアプリケーション定義関数へのポインターであり、ファイバーの開始アドレスを表します。 新しく作成されたファイバーの実行は、別のファイバーがこのアドレスで SwitchToFiber 関数を呼び出すまで開始されません。 ファイバー コールバック関数の詳細については、「 FiberProc」を参照してください。
[in, optional] lpParameter
ファイバーに渡される変数へのポインター。 ファイバーは 、GetFiberData マクロを使用してこのデータを取得できます。
戻り値
関数が成功した場合、戻り値はファイバーのアドレスです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
プロセスで作成できるファイバーの数は、使用可能な仮想メモリによって制限されます。 既定では、すべてのファイバーには 1 メガバイトの予約済みスタック領域があります。 そのため、最大 2028 本のファイバーを作成できます。 既定のスタック サイズを小さくすると、より多くのファイバーを作成できます。 ただし、要求の処理に別の方法を使用すると、アプリケーションのパフォーマンスが向上します。
スレッドが SwitchToFiber 関数を使用してファイバーをスケジュールする前に、スレッドに関連付けられたファイバーが存在するように ConvertThreadToFiber 関数を呼び出す必要があります。
この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNT を 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |