OB_PRE_CREATE_HANDLE_INFORMATION 结构 (wdm.h)
OB_PRE_CREATE_HANDLE_INFORMATION 结构向 ObjectPreCallback 例程提供有关正在打开的线程或进程句柄的信息。
语法
typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION {
ACCESS_MASK DesiredAccess;
ACCESS_MASK OriginalDesiredAccess;
} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION;
成员
DesiredAccess
一个 ACCESS_MASK 值,该值指定要授予句柄的访问权限。 默认情况下,此成员等于 OriginalDesiredAccess,但 ObjectPreCallback 例程可以修改此值以限制授予的访问权限。
驱动程序可以将以下标志用于进程的句柄:
标志 | 允许的操作 |
---|---|
PROCESS_CREATE_PROCESS | 创建进程的新子进程。 |
PROCESS_CREATE_THREAD | 在进程的上下文中创建新线程。 |
PROCESS_DUP_HANDLE | 与进程的上下文重复句柄,例如通过调用用户模式 DuplicateHandle 例程。 |
PROCESS_SET_QUOTA | 设置进程的工作集大小,例如通过调用用户模式 SetProcessWorkingSetSize 例程。 |
PROCESS_SET_INFORMATION | 修改进程设置,例如通过调用用户模式 SetPriorityClass 例程。 |
PROCESS_SUSPEND_RESUME | 暂停或恢复进程。 |
PROCESS_TERMINATE | 终止进程,例如通过调用用户模式 TerminateProcess 例程。 |
PROCESS_VM_OPERATION | 修改进程的地址空间,例如通过调用用户模式 WriteProcessMemory 和 VirtualProtectEx 例程。 |
PROCESS_VM_WRITE | 写入进程的地址空间,例如通过调用用户模式 WriteProcessMemory 例程。 |
驱动程序可以将以下标志用于线程的句柄:
标志 | 允许的操作 |
---|---|
THREAD_DIRECT_IMPERSONATION | 启用服务器线程以模拟其客户端之一。 |
THREAD_IMPERSONATE | 模拟操作系统的匿名登录令牌,例如通过调用用户模式 ImpersonateAnonymousToken 例程。 |
THREAD_SET_CONTEXT | 修改线程的执行上下文,例如通过调用用户模式 SetThreadContext 例程。 |
THREAD_SET_INFORMATION | 修改线程设置,例如通过调用用户模式 SetThreadIdealProcessor 例程。 此访问权限允许的操作是THREAD_SET_LIMITED_INFORMATION访问权限允许的操作的超集。 |
THREAD_SET_LIMITED_INFORMATION | 修改一组有限的线程设置,例如通过调用用户模式 SetThreadAffinityMask 和 SetThreadPriorityBoost 例程。 |
THREAD_SET_THREAD_TOKEN | 修改线程模拟令牌的属性,例如通过调用用户模式 SetTokenInformation 例程。 |
THREAD_SUSPEND_RESUME | 暂停或恢复线程,例如通过调用用户模式 SuspendThread 和 ResumeThread 例程。 |
THREAD_TERMINATE | 终止线程,例如通过调用用户模式 TerminateThread 例程。 |
OriginalDesiredAccess
一个 ACCESS_MASK 值,该值指定为句柄请求的原始访问权限。
注解
你永远不能添加 超出 DesiredAccess 成员中指定的访问权限。 如果访问权限列为可修改标志,则可以删除访问权限。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Server 2008 及更高版本的 Windows 操作系统中可用。 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |