次の方法で共有


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 ルーチンを使用することを検討してください。 KeExpandKernelStackAndCalloutExKeExpandKernelStackAndCallout に似ていますが、追加のパラメーターがあり、IRQL <= DISPATCH_LEVELで呼び出すことができます。

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

要件

要件
サポートされている最小のクライアント x64 ベースのプロセッサの Windows Server 2003 以降、およびすべてのプロセッサの Windows Vista 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

ExpandedStackCall

KeExpandKernelStackAndCalloutEx

PsTerminateSystemThread