12#define CheckObject(Handle, Pointers, Handles, Attrib, Access) do \
14 PUBLIC_OBJECT_BASIC_INFORMATION ObjectInfo; \
15 Status = ZwQueryObject(Handle, ObjectBasicInformation, \
16 &ObjectInfo, sizeof ObjectInfo, NULL); \
17 ok_eq_hex(Status, STATUS_SUCCESS); \
18 ok_eq_hex(ObjectInfo.Attributes, Attrib); \
19 ok_eq_hex(ObjectInfo.GrantedAccess, Access); \
20 ok_eq_ulong(ObjectInfo.PointerCount, Pointers); \
21 ok_eq_ulong(ObjectInfo.HandleCount, Handles); \
24#define KERNEL_HANDLE_FLAG ((ULONG_PTR)0xFFFFFFFF80000000)
25#define IsUserHandle(h) (((ULONG_PTR)(h) & KERNEL_HANDLE_FLAG) == 0)
26#define IsKernelHandle(h) (((ULONG_PTR)(h) & KERNEL_HANDLE_FLAG) == KERNEL_HANDLE_FLAG)
41 ULONG RequestedAttributes;
44 ULONG ExpectedAttributes;
96 Tests[
i].RequestedAttributes,
157 HANDLE KernelDirectoryHandle;
158 HANDLE UserDirectoryHandle;
184 ok(
IsUserHandle(UserDirectoryHandle),
"User handle = %p\n", UserDirectoryHandle);
211 ok(
IsKernelHandle(KernelDirectoryHandle),
"Kernel handle = %p\n", KernelDirectoryHandle);
241 DPRINT(
"Closing null handle (NtClose)\n");
244 DPRINT(
"Closing null kernel handle (NtClose)\n");
247 DPRINT(
"Closing -1 handle (NtClose)\n");
250 DPRINT(
"Closing -1 kernel handle (NtClose)\n");
256 DPRINT(
"Closing 123 handle (NtClose)\n");
262 DPRINT(
"Closing 123 kernel handle (NtClose)\n");
267 DPRINT(
"Closing null handle (ObCloseHandle, UserMode)\n");
270 DPRINT(
"Closing null kernel handle (ObCloseHandle, UserMode)\n");
273 DPRINT(
"Closing -1 handle (ObCloseHandle, UserMode)\n");
276 DPRINT(
"Closing -1 kernel handle (ObCloseHandle, UserMode)\n");
282 DPRINT(
"Closing 123 handle (ObCloseHandle, UserMode)\n");
285 DPRINT(
"Closing 123 kernel handle (ObCloseHandle, UserMode)\n");
290 DPRINT(
"Closing null handle (ZwClose)\n");
293 DPRINT(
"Closing null kernel handle (ZwClose)\n");
298 DPRINT(
"Closing -1 kernel handle (ZwClose)\n");
309 DPRINT(
"Closing null handle (ObCloseHandle, KernelMode)\n");
312 DPRINT(
"Closing null kernel handle (ObCloseHandle, KernelMode)\n");
317 DPRINT(
"Closing -1 kernel handle (ObCloseHandle, KernelMode)\n");
#define CheckObject(Handle, Pointers, Handles, Attrib, Access)
#define IsKernelHandle(h)
static HANDLE SystemProcessHandle
static VOID TestDuplicate(_In_ HANDLE Handle)
#define ok_eq_hex(value, expected)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_INVALID_HANDLE
#define NT_SUCCESS(StatCode)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define OBJ_KERNEL_HANDLE
#define KmtEndSeh(ExpectedStatus)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject(_Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
#define DUPLICATE_SAME_ATTRIBUTES
#define PROCESS_ALL_ACCESS
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define DIRECTORY_ALL_ACCESS
POBJECT_TYPE PsProcessType
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI ObOpenObjectByPointer(IN PVOID Object, IN ULONG HandleAttributes, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PHANDLE Handle)
PEPROCESS PsInitialSystemProcess
#define _WIN32_WINNT_WIN10
#define _WIN32_WINNT_WS03
#define _WIN32_WINNT_WIN8
#define _WIN32_WINNT_WIN7
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
#define DUPLICATE_SAME_ACCESS
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
#define ZwCurrentProcess()