2020-09-30 17:17:25 +02:00

238 lines
4.5 KiB
C

/*++ BUILD Version: 0002 // Increment this if a change has global effects
Copyright (c) 1989-1999 Microsoft Corporation
Module Name:
ntobapi.h
Abstract:
This is the include file for the Object Manager sub-component of NTOS
Author:
Steve Wood (stevewo) 28-Mar-1989
Revision History:
--*/
#ifndef _NTOBAPI_
#define _NTOBAPI_
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
// begin_ntddk begin_wdm
#define OBJ_NAME_PATH_SEPARATOR ((OCHAR)L'\\')
// end_ntddk end_wdm
#define OBJ_MAX_REPARSE_ATTEMPTS 32
// begin_ntddk begin_wdm begin_nthal
//
// Object Manager Object Type Specific Access Rights.
//
#define OBJECT_TYPE_CREATE (0x0001)
#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
//
// Object Manager Directory Specific Access Rights.
//
#define DIRECTORY_QUERY (0x0001)
#define DIRECTORY_TRAVERSE (0x0002)
#define DIRECTORY_CREATE_OBJECT (0x0004)
#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
//
// Object Manager Symbolic Link Specific Access Rights.
//
#define SYMBOLIC_LINK_QUERY (0x0001)
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
// end_ntddk end_wdm end_nthal
typedef struct _OBJECT_NAME_INFORMATION { // ntddk wdm nthal
OBJECT_STRING Name; // ntddk wdm nthal
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; // ntddk wdm nthal
NTSYSCALLAPI
NTSTATUS
NTAPI
NtDuplicateObject(
IN HANDLE SourceHandle,
OUT PHANDLE TargetHandle,
IN ULONG Options
);
// begin_ntddk begin_wdm
#define DUPLICATE_CLOSE_SOURCE 0x00000001 // winnt
#define DUPLICATE_SAME_ACCESS 0x00000002 // winnt
#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
// end_ntddk end_wdm
NTSYSCALLAPI
NTSTATUS
NTAPI
NtMakeTemporaryObject(
IN HANDLE Handle
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtSignalAndWaitForSingleObject(
IN HANDLE SignalHandle,
IN HANDLE WaitHandle,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtSignalAndWaitForSingleObjectEx(
IN HANDLE SignalHandle,
IN HANDLE WaitHandle,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtWaitForSingleObject(
IN HANDLE Handle,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtWaitForSingleObjectEx(
IN HANDLE Handle,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtWaitForMultipleObjects(
IN ULONG Count,
IN HANDLE Handles[],
IN WAIT_TYPE WaitType,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtWaitForMultipleObjectsEx(
IN ULONG Count,
IN HANDLE Handles[],
IN WAIT_TYPE WaitType,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
// begin_ntsrv
NTSYSCALLAPI
NTSTATUS
NTAPI
NtClose(
IN HANDLE Handle
);
// end_ntsrv
NTSYSCALLAPI
NTSTATUS
NTAPI
NtCreateDirectoryObject(
OUT PHANDLE DirectoryHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtOpenDirectoryObject(
OUT PHANDLE DirectoryHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
typedef struct _OBJECT_DIRECTORY_INFORMATION {
OBJECT_STRING Name;
ULONG Type;
} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
NTSYSCALLAPI
NTSTATUS
NTAPI
NtQueryDirectoryObject(
IN HANDLE DirectoryHandle,
OUT PVOID Buffer,
IN ULONG Length,
IN BOOLEAN RestartScan,
IN OUT PULONG Context,
OUT PULONG ReturnLength OPTIONAL
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtCreateSymbolicLinkObject(
OUT PHANDLE LinkHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN POBJECT_STRING LinkTarget
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtOpenSymbolicLinkObject(
OUT PHANDLE LinkHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtQuerySymbolicLinkObject(
IN HANDLE LinkHandle,
IN OUT POBJECT_STRING LinkTarget,
OUT PULONG ReturnedLength OPTIONAL
);
#ifdef __cplusplus
}
#endif
#endif // _NTOBAPI_