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。 如果 Option 设置为任何其他值, 则 KdChangeOption 返回STATUS_INVALID_INFO_CLASS。 KD_OPTION_SET_BLOCK_ENABLE Option 时,调用方必须将 InBufferBytes 参数设置为 sizeof (BOOLEAN) , 将 OutBufferBytes 参数设置为零, 将 OutBuffer 参数设置为 NULL;否则, KdChangeOption 返回STATUS_INVALID_PARAMETER。 如果 KdBlockEnable 系统变量中的高位 (0x80) 设置为 1,则永远无法重新启用调试器, KdChangeOption 将返回STATUS_ACCESS_DENIED。 否则, KdChangeOptionKdBlockEnable 系统变量设置为 InBuffer 指向的 BOOLEAN 值。

要求

要求
最低受支持的客户端 适用于 Microsoft Windows Server 2003 Service Pack 1 (SP1) 及更高版本的 Windows 和 Windows Server。
目标平台 通用
标头 wdm.h (包括 Wdm.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别