- Fix some w32api incompatibility cruft since w32api insists on including winnt.h from kernel-mode.
- Fix some stuff that was including both kernel-mode and user-mode headers together.
- Use PISECURITY_DESCRIPTOR, not PSECURITY_DESCRIPTOR.
svn path=/trunk/; revision=19726
* REVISION HISTORY:
* 21 November 2005 Created James Tabor
*/
-#include <ddk/ntddk.h>
-#include <windows.h>
#include "portcls.h"
extern "C" {
#endif
-#include <windef.h>
#include <ddk/ntddk.h>
#define PORTCLASSAPI extern
#include <tdikrnl.h>
#include <tdiinfo.h>
#include <string.h>
+#define _WINBASE_
+#define _WINDOWS_H
#include <winsock2.h>
#include <afd/shared.h>
#ifndef __WSHTCPIP_H
#define __WSHTCPIP_H
-#include <ddk/ntddk.h>
+#define WIN32_NO_STATUS
+#include <windows.h>
+#include <rtlfuncs.h>
#include <wsahelp.h>
#define EXPORT STDCALL
+#define _WINBASE_
+#define _WINDOWS_H
#include <windef.h>
#include <wingdi.h>
#include <ddk/ntddk.h>
LPSTR Identifier;
} CONFIGURATION_COMPONENT, *PCONFIGURATION_COMPONENT;
+typedef struct _CONFIGURATION_COMPONENT_DATA
+{
+ struct _CONFIGURATION_COMPONENT_DATA *Parent;
+ struct _CONFIGURATION_COMPONENT_DATA *Child;
+ struct _CONFIGURATION_COMPONENT_DATA *Sibling;
+ CONFIGURATION_COMPONENT Component;
+} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
+
+typedef struct _ARC_DISK_INFORMATION
+{
+ LIST_ENTRY DiskSignatureListHead;
+} ARC_DISK_INFORMATION, *PARC_DISK_INFORMATION;
+
#endif
IN POBJECT_ATTRIBUTES KeyObjectAttributes\r
);\r
\r
+#ifdef NTOS_MODE_USER\r
NTSTATUS\r
NTAPI\r
ZwCreateKey(\r
IN PULONG Disposition OPTIONAL\r
);\r
\r
+\r
NTSTATUS\r
NTAPI\r
ZwDeleteKey(\r
IN PVOID Data,\r
IN ULONG DataSize\r
);\r
+#endif\r
\r
NTSTATUS\r
NTAPI\r
IN OUT PRTL_ATOM Atom\r
);\r
\r
+#ifdef NTOS_MODE_USER\r
NTSTATUS\r
NTAPI\r
ZwCancelTimer(\r
IN HANDLE TimerHandle,\r
OUT PBOOLEAN CurrentState OPTIONAL\r
);\r
+#endif\r
\r
NTSTATUS\r
NTAPI\r
IN LONG MaximumCount\r
);\r
\r
+#ifdef NTOS_MODE_USER\r
NTSTATUS\r
NTAPI\r
ZwCreateTimer(\r
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\r
IN TIMER_TYPE TimerType\r
);\r
+#endif\r
\r
NTSTATUS\r
NTAPI\r
IN POBJECT_ATTRIBUTES ObjectAttributes\r
);\r
\r
+#ifdef NTOS_MODE_USER\r
NTSTATUS\r
NTAPI\r
ZwOpenTimer(\r
IN ACCESS_MASK DesiredAccess,\r
IN POBJECT_ATTRIBUTES ObjectAttributes\r
);\r
+#endif\r
\r
NTSTATUS\r
NTAPI\r
IN ULONG SystemInformationLength\r
);\r
\r
+#ifdef NTOS_MODE_USER\r
NTSTATUS\r
NTAPI\r
ZwSetTimer(\r
IN LONG Period OPTIONAL,\r
OUT PBOOLEAN PreviousState OPTIONAL\r
);\r
+#endif\r
\r
NTSTATUS\r
NTAPI\r
USHORT DockData1;
USHORT DockData2;
USHORT DockData3;
- ULONG DockData3;
ULONG DockData4;
+ ULONG DockData5;
} PROFILE_PARAMETER_BLOCK, *PPROFILE_PARAMETER_BLOCK;
typedef struct _HEADLESS_LOADER_BLOCK
} FX_SAVE_AREA, *PFX_SAVE_AREA;
//
-// FIXME: Trap Frame Definition
+// Trap Frame Definition
//
typedef struct _KTRAP_FRAME
{
#ifndef NTOS_MODE_USER\r
#define _NTIFS_\r
\r
+#define TOKEN_SOURCE_LENGTH 8\r
+\r
+typedef enum _TOKEN_TYPE\r
+{\r
+ TokenPrimary = 1,\r
+ TokenImpersonation\r
+} TOKEN_TYPE, *PTOKEN_TYPE;\r
+\r
typedef PVOID PRTL_HEAP_PARAMETERS;\r
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;\r
\r
typedef struct _RTL_SPLAY_LINKS\r
{\r
typedef struct _KAPC_STATE\r
{\r
LIST_ENTRY ApcListHead[2];\r
- PKPROCESS Process;\r
+ struct _KPROCESS *Process;\r
BOOLEAN KernelApcInProgress;\r
BOOLEAN KernelApcPending;\r
BOOLEAN UserApcPending;\r
LIST_ENTRY ThreadListHead;\r
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;\r
\r
-typedef PVOID EX_RUNDOWN_REF;\r
typedef PVOID EX_PUSH_LOCK;\r
\r
+typedef enum _RTL_GENERIC_COMPARE_RESULTS\r
+{\r
+ GenericLessThan,\r
+ GenericGreaterThan,\r
+ GenericEqual\r
+} RTL_GENERIC_COMPARE_RESULTS;\r
+\r
+typedef struct _SID_IDENTIFIER_AUTHORITY\r
+{\r
+ UCHAR Value[6];\r
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;\r
+\r
+typedef struct _SID_AND_ATTRIBUTES\r
+{\r
+ PSID Sid;\r
+ ULONG Attributes;\r
+} SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;\r
+\r
+typedef struct _TOKEN_SOURCE\r
+{\r
+ CHAR SourceName[TOKEN_SOURCE_LENGTH];\r
+ LUID SourceIdentifier;\r
+} TOKEN_SOURCE, *PTOKEN_SOURCE;\r
+\r
+typedef struct _TOKEN_CONTROL\r
+{\r
+ LUID TokenId;\r
+ LUID AuthenticationId;\r
+ LUID ModifiedId;\r
+ TOKEN_SOURCE TokenSource;\r
+} TOKEN_CONTROL, *PTOKEN_CONTROL;\r
+\r
typedef struct _SECURITY_CLIENT_CONTEXT\r
{\r
SECURITY_QUALITY_OF_SERVICE SecurityQos;\r
TOKEN_CONTROL ClientTokenControl;\r
} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;\r
\r
-typedef enum _RTL_GENERIC_COMPARE_RESULTS\r
+typedef struct _SECURITY_DESCRIPTOR_RELATIVE\r
{\r
- GenericLessThan,\r
- GenericGreaterThan,\r
- GenericEqual\r
-} RTL_GENERIC_COMPARE_RESULTS;\r
+ UCHAR Revision;\r
+ UCHAR Sbz1;\r
+ SECURITY_DESCRIPTOR_CONTROL Control;\r
+ ULONG Owner;\r
+ ULONG Group;\r
+ ULONG Sacl;\r
+ ULONG Dacl;\r
+} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;\r
+\r
+typedef struct _TOKEN_GROUPS\r
+{\r
+ ULONG GroupCount;\r
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];\r
+} TOKEN_GROUPS, *PTOKEN_GROUPS;\r
+\r
+typedef struct _TOKEN_PRIVILEGES\r
+{\r
+ ULONG PrivilegeCount;\r
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];\r
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;\r
+\r
+typedef struct _TOKEN_USER\r
+{\r
+ SID_AND_ATTRIBUTES User;\r
+} TOKEN_USER, *PTOKEN_USER;\r
+\r
+typedef enum _TOKEN_INFORMATION_CLASS\r
+{\r
+ TokenUser = 1,\r
+ TokenGroups,\r
+ TokenPrivileges,\r
+ TokenOwner,\r
+ TokenPrimaryGroup,\r
+ TokenDefaultDacl,\r
+ TokenSource,\r
+ TokenType,\r
+ TokenImpersonationLevel,\r
+ TokenStatistics,\r
+ TokenRestrictedSids,\r
+ TokenSessionId,\r
+ TokenGroupsAndPrivileges,\r
+ TokenSessionReference,\r
+ TokenSandBoxInert,\r
+ TokenAuditPolicy,\r
+ TokenOrigin,\r
+ TokenElevationType,\r
+ TokenLinkedToken,\r
+ TokenElevation,\r
+ TokenIsRestricted,\r
+ TokenAccessInformation,\r
+ TokenVirtualization,\r
+ TokenIntegrityLevel,\r
+ TokenIntegrityLevelDesktop,\r
+ TokenMandatoryPolicy,\r
+ MaxTokenInfoClass\r
+} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;\r
+\r
+typedef struct _TOKEN_OWNER\r
+{\r
+ PSID Owner;\r
+} TOKEN_OWNER, *PTOKEN_OWNER;\r
+\r
+typedef struct _TOKEN_PRIMARY_GROUP\r
+{\r
+ PSID PrimaryGroup;\r
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;\r
+\r
+typedef struct _TOKEN_DEFAULT_DACL\r
+{\r
+ PACL DefaultDacl;\r
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;\r
\r
#endif // !NTOS_MODE_USER\r
#endif // _NTIFS_\r
IN ULONG OutputBufferSize
);
+#ifdef NTOS_MODE_USER
NTSTATUS
NTAPI
ZwLoadDriver(
IN PUNICODE_STRING DriverServiceName
);
+#endif
NTSYSCALLAPI
NTSTATUS
ULONG Unknown3
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwUnloadDriver(
//
#include <arch/ketypes.h>
-//
-// ARC Component Data
-//
-typedef struct _CONFIGURATION_COMPONENT_DATA
-{
- struct _CONFIGURATION_COMPONENT_DATA *Parent;
- struct _CONFIGURATION_COMPONENT_DATA *Child;
- struct _CONFIGURATION_COMPONENT_DATA *Sibling;
- CONFIGURATION_COMPONENT Component;
-} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
-
//
// Kernel Memory Node
//
CSHORT Type;
CSHORT Size;
LIST_ENTRY ProfileListEntry;
- PKPROCESS Process;
+ struct _KPROCESS *Process;
PVOID RangeBase;
PVOID RangeLimit;
ULONG BucketShift;
KEXECUTE_OPTIONS Flags; /* 06B */
ULONG StackCount; /* 06C */
LIST_ENTRY ProcessListEntry; /* 070 */
-} KPROCESS;
+} KPROCESS, *PKPROCESS;
//
// System Service Table Descriptor
PULONG NumberOfBytesLocked
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwMapViewOfSection(
IN ULONG AccessProtection
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwOpenSection(
OUT PULONG NumberOfBytesUnlocked OPTIONAL
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwUnmapViewOfSection(
IN BOOLEAN GenerateOnClose
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwCreateDirectoryObject(
IN HANDLE Object
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwMakeTemporaryObject(
POBJECT_ATTRIBUTES ObjectAttributes
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwOpenSymbolicLinkObject(
OUT PULONG ResultLength
);
+NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySymbolicLinkObject(
//
// Dump Control Structure for Object Debugging
//
-typedef struct _OBJECT_DUMP_CONTROL
+typedef struct _OB_DUMP_CONTROL
{
PVOID Stream;
ULONG Detail;
-} OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL;
+} OB_DUMP_CONTROL, *POB_DUMP_CONTROL;
#ifndef NTOS_MODE_USER
#ifndef _REACTOS_
OUT PULONG ReturnLength
);
+typedef NTSTATUS
+(NTAPI *OB_OKAYTOCLOSE_METHOD)(
+ VOID
+);
+
#else
//
IN BOOLEAN IsWinlogon
);
-static __inline
-struct _PEB*
-NtCurrentPeb(VOID)
-{
- struct _PEB *pPeb;
-
-#if defined(__GNUC__)
-
- __asm__ __volatile__
- (
- "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */
- : "=r" (pPeb) /* can't have two memory operands */
- : /* no inputs */
- );
-
-#elif defined(_MSC_VER)
-
- __asm mov eax, fs:0x30;
- __asm mov pPeb, eax
-
-#else
-#error Unknown compiler for inline assembler
-#endif
-
- return pPeb;
-}
+#define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock)
//
// Environment/Path Functions
CSHORT Milliseconds;
CSHORT Weekday;
} TIME_FIELDS, *PTIME_FIELDS;
-#endif
+#else
//
-// ACE Definition
+// ACE Definitions
//
+typedef struct _ACE_HEADER
+{
+ UCHAR AceType;
+ UCHAR AceFlags;
+ USHORT AceSize;
+} ACE_HEADER, *PACE_HEADER;
+#endif
typedef struct _ACE
{
ACE_HEADER Header;
//
#include <umtypes.h>
+#ifdef NTOS_MODE_USER
+
//
// Privilege constants
//
-#ifdef NTOS_MODE_USER
#define SE_MIN_WELL_KNOWN_PRIVILEGE (2L)
#define SE_CREATE_TOKEN_PRIVILEGE (2L)
#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE (3L)
#define SE_CHANGE_NOTIFY_PRIVILEGE (23L)
#define SE_REMOTE_SHUTDOWN_PRIVILEGE (24L)
#define SE_MAX_WELL_KNOWN_PRIVILEGE (SE_REMOTE_SHUTDOWN_PRIVILEGE)
-#endif
+#else
//
-// Policy types
+// Audit and Policy Structures
//
-#ifndef NTOS_MODE_USER
typedef struct _SEP_AUDIT_POLICY_CATEGORIES
{
UCHAR System:4;
-#include <ddk/ntddk.h>
+#define WIN32_NO_STATUS
#include <windows.h>
+#define DDKAPI __stdcall
#define _HIDPI_
#define _HIDPI_NO_FUNCTION_MACROS_
+typedef VOID
+(DDKAPI *PINTERFACE_REFERENCE)(
+ PVOID Context);
+typedef VOID
+(DDKAPI *PINTERFACE_DEREFERENCE)(
+ PVOID Context);
+#include <ntndk.h>
#include <ddk/hidusage.h>
#include <ddk/hidclass.h>
#include <ddk/hidpi.h>
static NTSTATUS
RtlpSysVolCheckOwnerAndSecurity(IN HANDLE DirectoryHandle,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor)
+ IN PISECURITY_DESCRIPTOR SecurityDescriptor)
{
PSECURITY_DESCRIPTOR RelSD = NULL;
PSECURITY_DESCRIPTOR NewRelSD = NULL;
HANDLE hDirectory;
UNICODE_STRING DirectoryName, NewPath;
ULONG PathLen;
- PSECURITY_DESCRIPTOR SecurityDescriptor = NULL;
+ PISECURITY_DESCRIPTOR SecurityDescriptor = NULL;
PSID SystemSid = NULL;
BOOLEAN AddSep = FALSE;
NTSTATUS Status;
static NTSTATUS
CmiQuerySecurityDescriptor(PKEY_OBJECT KeyObject,
SECURITY_INFORMATION SecurityInformation,
- PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PISECURITY_DESCRIPTOR SecurityDescriptor,
PULONG BufferLength)
{
ULONG_PTR Current;
#define _NTSYSTEM_
/* DDK/IFS/NDK Headers */
-#include <ddk/ntddk.h>
#include <ddk/ntifs.h>
+#include <ddk/ntddk.h>
#include <ddk/wdmguid.h>
#include <ndk/ntndk.h>
IN ULONG RefBias)
{
/* HACK: Return the same descriptor back */
- PSECURITY_DESCRIPTOR SdCopy;
+ PISECURITY_DESCRIPTOR SdCopy;
DPRINT1("ObLogSecurityDescriptor is not implemented!\n", InputSecurityDescriptor);
SdCopy = ExAllocatePool(PagedPool, sizeof(*SdCopy));
NTSTATUS
STDCALL
SeSetWorldSecurityDescriptor(SECURITY_INFORMATION SecurityInformation,
- PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PISECURITY_DESCRIPTOR SecurityDescriptor,
PULONG BufferLength)
{
ULONG_PTR Current;
NTSTATUS
STDCALL
SeCaptureSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR OriginalSecurityDescriptor,
+ IN PSECURITY_DESCRIPTOR _OriginalSecurityDescriptor,
IN KPROCESSOR_MODE CurrentMode,
IN POOL_TYPE PoolType,
IN BOOLEAN CaptureIfKernel,
OUT PSECURITY_DESCRIPTOR *CapturedSecurityDescriptor
)
{
+ PISECURITY_DESCRIPTOR OriginalSecurityDescriptor = _OriginalSecurityDescriptor;
SECURITY_DESCRIPTOR DescriptorCopy;
- PSECURITY_DESCRIPTOR NewDescriptor;
+ PISECURITY_DESCRIPTOR NewDescriptor;
ULONG OwnerSAC = 0, GroupSAC = 0;
ULONG OwnerSize = 0, GroupSize = 0;
ULONG SaclSize = 0, DaclSize = 0;
IN OUT PULONG Length,
IN PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor OPTIONAL)
{
- PSECURITY_DESCRIPTOR ObjectSd;
+ PISECURITY_DESCRIPTOR ObjectSd;
PISECURITY_DESCRIPTOR_RELATIVE RelSD;
PSID Owner = NULL;
PSID Group = NULL;
*/
BOOLEAN STDCALL
SeValidSecurityDescriptor(IN ULONG Length,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor)
+ IN PSECURITY_DESCRIPTOR _SecurityDescriptor)
{
ULONG SdLength;
PISID Sid;
PACL Acl;
+ PISECURITY_DESCRIPTOR SecurityDescriptor = _SecurityDescriptor;
if (Length < SECURITY_DESCRIPTOR_MIN_LENGTH)
{
NTSTATUS
STDCALL
SeDefaultObjectMethod(PVOID Object,
- SECURITY_OPERATION_CODE OperationType,
+ SECURITY_OPERATION_CODE OperationType,
SECURITY_INFORMATION SecurityInformation,
- PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_DESCRIPTOR _SecurityDescriptor,
PULONG ReturnLength,
PSECURITY_DESCRIPTOR *OldSecurityDescriptor,
POOL_TYPE PoolType,
PGENERIC_MAPPING GenericMapping)
{
- PSECURITY_DESCRIPTOR ObjectSd;
- PSECURITY_DESCRIPTOR NewSd;
+ PISECURITY_DESCRIPTOR ObjectSd;
+ PISECURITY_DESCRIPTOR NewSd;
+ PISECURITY_DESCRIPTOR SecurityDescriptor = _SecurityDescriptor;
POBJECT_HEADER Header = BODY_TO_HEADER(Object);
PSID Owner = 0;
PSID Group = 0;
* @implemented
*/
NTSTATUS STDCALL
-SeAssignSecurity(PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
- PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
+SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
+ PSECURITY_DESCRIPTOR _ExplicitDescriptor OPTIONAL,
PSECURITY_DESCRIPTOR *NewDescriptor,
BOOLEAN IsDirectoryObject,
PSECURITY_SUBJECT_CONTEXT SubjectContext,
PGENERIC_MAPPING GenericMapping,
POOL_TYPE PoolType)
{
- PSECURITY_DESCRIPTOR Descriptor;
+ PISECURITY_DESCRIPTOR ParentDescriptor = _ParentDescriptor;
+ PISECURITY_DESCRIPTOR ExplicitDescriptor = _ExplicitDescriptor;
+ PISECURITY_DESCRIPTOR Descriptor;
PTOKEN Token;
ULONG OwnerLength = 0;
ULONG GroupLength = 0;
ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
-#define EX_RUNDOWN_ACTIVE 0x1
-#define EX_RUNDOWN_COUNT_SHIFT 0x1
-#define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
-
-typedef struct _EX_RUNDOWN_REF {
- _ANONYMOUS_UNION union {
- ULONG Count;
- PVOID Ptr;
- } DUMMYUNIONNAME;
-} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
-
#define EX_PUSH_LOCK_LOCK_V ((ULONG_PTR)0x0)
#define EX_PUSH_LOCK_LOCK ((ULONG_PTR)0x1)
#define EX_PUSH_LOCK_WAITING ((ULONG_PTR)0x2)
};
} EX_PUSH_LOCK, *PEX_PUSH_LOCK;
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
+typedef PVOID PSID;
+typedef struct _SID {
+ BYTE Revision;
+ BYTE SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ DWORD SubAuthority[ANYSIZE_ARRAY];
+} SID, *PISID;
+typedef struct _SID_AND_ATTRIBUTES {
+ PSID Sid;
+ DWORD Attributes;
+} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+typedef struct _TOKEN_SOURCE {
+ CHAR SourceName[TOKEN_SOURCE_LENGTH];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE,*PTOKEN_SOURCE;
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL,*PTOKEN_CONTROL;
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
+typedef struct _TOKEN_GROUPS {
+ DWORD GroupCount;
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
+typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
+ ULONG SidCount;
+ ULONG SidLength;
+ PSID_AND_ATTRIBUTES Sids;
+ ULONG RestrictedSidCount;
+ ULONG RestrictedSidLength;
+ PSID_AND_ATTRIBUTES RestrictedSids;
+ ULONG PrivilegeCount;
+ ULONG PrivilegeLength;
+ PLUID_AND_ATTRIBUTES Privileges;
+ LUID AuthenticationId;
+} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES;
+typedef struct _TOKEN_ORIGIN {
+ LUID OriginatingLogonSession;
+} TOKEN_ORIGIN, *PTOKEN_ORIGIN;
+typedef struct _TOKEN_OWNER {
+ PSID Owner;
+} TOKEN_OWNER,*PTOKEN_OWNER;
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
+typedef struct _TOKEN_PRIVILEGES {
+ DWORD PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
+typedef enum tagTOKEN_TYPE {
+ TokenPrimary = 1,
+ TokenImpersonation
+} TOKEN_TYPE,*PTOKEN_TYPE;
+typedef struct _TOKEN_STATISTICS {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ DWORD DynamicCharged;
+ DWORD DynamicAvailable;
+ DWORD GroupCount;
+ DWORD PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
+typedef struct _TOKEN_USER {
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
+typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
+typedef struct _SECURITY_DESCRIPTOR {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ DWORD Owner;
+ DWORD Group;
+ DWORD Sacl;
+ DWORD Dacl;
+} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
+typedef enum _TOKEN_INFORMATION_CLASS {
+ TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
+ TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
+ TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids,
+ TokenSessionId,TokenGroupsAndPrivileges,TokenSessionReference,
+ TokenSandBoxInert,TokenAuditPolicy,TokenOrigin,
+} TOKEN_INFORMATION_CLASS;
+
typedef struct _FILE_ACCESS_INFORMATION {
ACCESS_MASK AccessFlags;
} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
SID Sid;
} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
+typedef struct _FILE_QUOTA_INFORMATION
+{
+ ULONG NextEntryOffset;
+ ULONG SidLength;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER QuotaUsed;
+ LARGE_INTEGER QuotaThreshold;
+ LARGE_INTEGER QuotaLimit;
+ SID Sid;
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
+
typedef struct _FILE_INTERNAL_INFORMATION {
LARGE_INTEGER IndexNumber;
} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
struct _DRIVE_LAYOUT_INFORMATION;
struct _DRIVE_LAYOUT_INFORMATION_EX;
+typedef PVOID PSECURITY_DESCRIPTOR;
+typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+typedef PVOID PSID;
+
DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT)
DECLARE_INTERNAL_OBJECT(DMA_ADAPTER)
DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK)
#define MAXIMUM_WAIT_OBJECTS 64
+#define EX_RUNDOWN_ACTIVE 0x1
+#define EX_RUNDOWN_COUNT_SHIFT 0x1
+#define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
+
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
ULONG OldIrql;
} FAST_MUTEX, *PFAST_MUTEX;
+typedef struct _EX_RUNDOWN_REF
+{
+ union
+ {
+ ULONG_PTR Count;
+ PVOID Ptr;
+ };
+} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
+
typedef struct _KGATE
{
DISPATCHER_HEADER Header;
pHalMirrorVerify HalMirrorVerify;
} HAL_DISPATCH, *PHAL_DISPATCH;
-#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_)
+#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTHAL_)
extern DECL_IMPORT PHAL_DISPATCH HalDispatchTable;
#define HALDISPATCH ((PHAL_DISPATCH)&HalDispatchTable)
#else
BOOLEAN DeleteFile;
} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
-typedef struct _FILE_QUOTA_INFORMATION {
- ULONG NextEntryOffset;
- ULONG SidLength;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER QuotaUsed;
- LARGE_INTEGER QuotaThreshold;
- LARGE_INTEGER QuotaLimit;
- SID Sid;
-} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
-
typedef struct _FILE_END_OF_FILE_INFORMATION {
LARGE_INTEGER EndOfFile;
} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
#endif /* !DBG */
-#if defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
+#if defined(_NTDDK_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
ACCESS_MASK GenericExecute;
ACCESS_MASK GenericAll;
} GENERIC_MAPPING, *PGENERIC_MAPPING;
+/* Sigh..when will they learn... */
+#ifndef __NTDDK_H
typedef struct _ACE_HEADER {
BYTE AceType;
BYTE AceFlags;
WORD AceSize;
} ACE_HEADER, *PACE_HEADER;
+
typedef struct _ACCESS_ALLOWED_ACE {
ACE_HEADER Header;
ACCESS_MASK Mask;
GUID InheritedObjectType;
DWORD SidStart;
} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
+#endif
typedef struct _ACL {
BYTE AclRevision;
BYTE Sbz1;
BOOLEAN EffectiveOnly;
SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
+/* Steven you are my hero when you fix the w32api ddk! */
+#if !defined(__NTDDK_H)
typedef struct _SID_IDENTIFIER_AUTHORITY {
BYTE Value[6];
} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
TokenSessionId,TokenGroupsAndPrivileges,TokenSessionReference,
TokenSandBoxInert,TokenAuditPolicy,TokenOrigin,
} TOKEN_INFORMATION_CLASS;
+#endif
typedef enum _SID_NAME_USE {
SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,
SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,
typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
DWORD UIRestrictionsClass;
} JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS;
+/* Steven you are my hero when you fix the w32api ddk! */
+#ifndef __NTDDK_H
typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
DWORD SecurityLimitFlags;
HANDLE JobToken;
PTOKEN_PRIVILEGES PrivilegesToDelete;
PTOKEN_GROUPS RestrictedSids;
} JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
+#endif
typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
DWORD EndOfJobTimeAction;
} JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;