次の方法で共有


KeExpandKernelStackAndCallout 関数 (ntddk.h)

KeExpandKernelStackAndCallout ルーチンは、保証された量のスタック領域でルーチンを呼び出します。

構文

NTSTATUS
KeExpandKernelStackAndCallout (
    _In_ PEXPAND_STACK_CALLOUT Callout,
    _In_opt_ PVOID Parameter,
    _In_ SIZE_T Size
    );

パラメーター

[in] Callout

ExpandedStackCall ルーチンへのポインター。

[in, optional] Parameter

ExpandedStackCall ルーチンに渡すパラメーターを指定します。

[in] Size

ExpandedStackCall ルーチンに提供するスタック上のバイト数を指定します。 この値は、ExpandedStackCall ルーチンのスタック使用と、このルーチンが行う可能性のある呼び出しに対応できる十分な大きさにする必要があります。 この値はMAXIMUM_EXPANSION_SIZEを超えてはなりません。

戻り値

スタックの割り当てが成功し、コールアウトが呼び出された場合に成功を返します。 それ以外の場合は、エラー状態を返します。

備考

KeExpandKernelStackAndCallout ExpandedStackCall ルーチンで使用するために、Size バイト単位でカーネル スタックを拡張します。 スタックに十分な空き領域がない場合は、KeExpandKernelStackAndCallout 新しいカーネル スタック セグメントを割り当てます。 その後、このルーチンは ExpandedStackCall ルーチンを呼び出します。

Windows 7、Windows Server 2008 R2、およびそれ以降のバージョンの Windows では、KeExpandKernelStackAndCallout ではなく、KeExpandKernelStackAndCalloutEx ルーチン使用することを検討してください。 KeExpandKernelStackAndCalloutEx は、KeExpandKernelStackAndCallout に似ていますが、追加のパラメーターを持ち、IRQL <= DISPATCH_LEVEL で呼び出すことができます。

呼び出し元のスレッドは、PsTerminateSystemThread ルーチンを呼び出して、スレッドの ExpandedStackCall ルーチンが戻るまで呼び出してはなりません。 PsTerminateSystemThread は、ExpandedStackCall ルーチンがまだアクティブであるかどうかを確認し、アクティブな場合はバグ チェックを行います。

必要条件

要件 価値
サポートされる最小クライアント x64 ベースのプロセッサでは Windows Server 2003 以降、すべてのプロセッサで Windows Vista 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Ntddk.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

ExpandedStackCall

KeExpandKernelStackAndCalloutEx

PsTerminateSystemThread