KdChangeOption 函数 (wdm.h)

KdChangeOption 例程访问和更改内核中与内核调试相关的状态。

语法

NTSTATUS KdChangeOption(
  [in]            KD_OPTION Option,
  [in, optional]  ULONG     InBufferBytes,
  [in]            PVOID     InBuffer,
  [in, optional]  ULONG     OutBufferBytes,
  [out]           PVOID     OutBuffer,
  [out, optional] PULONG    OutBufferNeeded
);

参数

[in] Option

KD_OPTION枚举中的一个值,指示要访问和更改的内核状态。 此参数的值确定 InBufferOutBuffer的格式和所需长度。 目前,唯一的有效值为KD_OPTION_SET_BLOCK_ENABLE。

[in, optional] InBufferBytes

InBuffer的缓冲区的大小(以字节为单位)。 此值是可选的。

[in] InBuffer

指向调用方分配的输入缓冲区的指针,其中包含有关要更改的内核状态的信息。 如果 Option 指定不需要输入数据的内核状态,则可以 NULL此指针。

[in, optional] OutBufferBytes

OutBuffer的缓冲区的大小(以字节为单位)。 此值是可选的。

[out] OutBuffer

指向调用方分配的输出缓冲区的指针,在该缓冲区中返回与内核状态相关的信息。 如果 Option 指定不生成输出数据的内核状态,则可以 NULL此指针。

[out, optional] OutBufferNeeded

返回值

KdChangeOption 如果成功执行请求的作,则返回STATUS_SUCCESS。 否则,返回值可以是以下错误状态代码之一:

STATUS_ACCESS_DENIED

STATUS_INVALID_INFO_CLASS

STATUS_INVALID_PARAMETER

STATUS_DEBUGGER_INACTIVE

言论

如果作系统在没有调试控件的情况下启动,KdChangeOption 返回STATUS_DEBUGGER_INACTIVE。

目前,Option 参数的唯一有效值是KD_OPTION_SET_BLOCK_ENABLE。 如果 选项 设置为任何其他值,KdChangeOption 返回STATUS_INVALID_INFO_CLASS。 当 选项 KD_OPTION_SET_BLOCK_ENABLE时,调用方必须将 InBufferBytes 参数设置为 sizeof(BOOLEAN),将 OutBufferBytes 参数设置为零,并将 OutBuffer 参数设置为 NULL;否则,KdChangeOption 返回STATUS_INVALID_PARAMETER。 如果 KdBlockEnable 系统变量中的高位(0x80),则永远无法重新启用调试器,并且 KdChangeOption 返回STATUS_ACCESS_DENIED。 否则,KdChangeOptionKdBlockEnable 系统变量设置为 InBuffer 指向的 BOOLEAN 值。

要求

要求 价值
最低支持的客户端 Microsoft Windows Server 2003 中提供了 Service Pack 1(SP1)及更高版本的 Windows 和 Windows Server。
目标平台 普遍
标头 wdm.h (包括 Wdm.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别