- WDK and MSVC compatibility fixes.

svn path=/trunk/; revision=28151
This commit is contained in:
Aleksey Bragin 2007-08-04 08:26:58 +00:00
parent bccb44324c
commit ac4295e788
17 changed files with 81 additions and 63 deletions

View file

@ -54,7 +54,7 @@ GetHandleInformation (HANDLE hObject,
} }
Status = NtQueryObject (hObject, Status = NtQueryObject (hObject,
ObjectHandleInformation, ObjectHandleFlagInformation,
&HandleInfo, &HandleInfo,
sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION), sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION),
&BytesWritten); &BytesWritten);
@ -106,7 +106,7 @@ SetHandleInformation (HANDLE hObject,
} }
Status = NtQueryObject (hObject, Status = NtQueryObject (hObject,
ObjectHandleInformation, ObjectHandleFlagInformation,
&HandleInfo, &HandleInfo,
sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION), sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION),
&BytesWritten); &BytesWritten);
@ -118,7 +118,7 @@ SetHandleInformation (HANDLE hObject,
HandleInfo.ProtectFromClose = (dwFlags & HANDLE_FLAG_PROTECT_FROM_CLOSE) != 0; HandleInfo.ProtectFromClose = (dwFlags & HANDLE_FLAG_PROTECT_FROM_CLOSE) != 0;
Status = NtSetInformationObject (hObject, Status = NtSetInformationObject (hObject,
ObjectHandleInformation, ObjectHandleFlagInformation,
&HandleInfo, &HandleInfo,
sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION)); sizeof(OBJECT_HANDLE_ATTRIBUTE_INFORMATION));
if(!NT_SUCCESS(Status)) if(!NT_SUCCESS(Status))

View file

@ -1903,7 +1903,7 @@ BOOLEAN SockCreateOrReferenceAsyncThread(VOID)
HandleFlags.ProtectFromClose = TRUE; HandleFlags.ProtectFromClose = TRUE;
HandleFlags.Inherit = FALSE; HandleFlags.Inherit = FALSE;
Status = NtSetInformationObject(SockAsyncCompletionPort, Status = NtSetInformationObject(SockAsyncCompletionPort,
ObjectHandleInformation, ObjectHandleFlagInformation,
&HandleFlags, &HandleFlags,
sizeof(HandleFlags)); sizeof(HandleFlags));
} }
@ -2014,7 +2014,7 @@ BOOLEAN SockGetAsyncSelectHelperAfdHandle(VOID)
HandleFlags.ProtectFromClose = TRUE; HandleFlags.ProtectFromClose = TRUE;
HandleFlags.Inherit = FALSE; HandleFlags.Inherit = FALSE;
Status = NtSetInformationObject(SockAsyncCompletionPort, Status = NtSetInformationObject(SockAsyncCompletionPort,
ObjectHandleInformation, ObjectHandleFlagInformation,
&HandleFlags, &HandleFlags,
sizeof(HandleFlags)); sizeof(HandleFlags));

View file

@ -609,13 +609,31 @@ typedef enum _FILE_STORAGE_TYPE {
StorageTypeStream StorageTypeStream
} FILE_STORAGE_TYPE; } FILE_STORAGE_TYPE;
typedef enum _OBJECT_INFO_CLASS { typedef enum _OBJECT_INFORMATION_CLASS
ObjectBasicInfo, {
ObjectNameInfo, ObjectBasicInformation,
ObjectTypeInfo, ObjectNameInformation,
ObjectAllTypesInfo, ObjectTypeInformation,
ObjectProtectionInfo ObjectTypesInformation,
} OBJECT_INFO_CLASS; ObjectHandleFlagInformation,
ObjectSessionInformation,
MaxObjectInfoClass
} OBJECT_INFORMATION_CLASS;
typedef struct _OBJECT_BASIC_INFORMATION
{
ULONG Attributes;
ACCESS_MASK GrantedAccess;
ULONG HandleCount;
ULONG PointerCount;
ULONG PagedPoolCharge;
ULONG NonPagedPoolCharge;
ULONG Reserved[ 3 ];
ULONG NameInfoSize;
ULONG TypeInfoSize;
ULONG SecurityDescriptorSize;
LARGE_INTEGER CreationTime;
} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
typedef struct _KAPC_STATE { typedef struct _KAPC_STATE {
LIST_ENTRY ApcListHead[2]; LIST_ENTRY ApcListHead[2];

View file

@ -9941,6 +9941,11 @@ NTAPI
PsGetCurrentThreadId( PsGetCurrentThreadId(
VOID); VOID);
NTKERNELAPI
HANDLE
NTAPI
PsGetProcessId(PEPROCESS Process);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI

View file

@ -224,10 +224,11 @@ extern NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable;
// HAL Exports // HAL Exports
// //
#ifndef _NTHAL_ #ifndef _NTHAL_
extern DECL_IMPORT PUCHAR *KdComPortInUse; extern NTHALAPI PUCHAR *KdComPortInUse;
#endif #endif
#endif #endif
#endif #endif

View file

@ -936,7 +936,7 @@ typedef struct _KTHREAD
#if (NTDDI_VERSION >= NTDDI_LONGHORN) #if (NTDDI_VERSION >= NTDDI_LONGHORN)
PVOID MdlForLockedteb; PVOID MdlForLockedteb;
#endif #endif
} KTHREAD; } KTHREAD, *PKTHREAD;
#define ASSERT_THREAD(object) \ #define ASSERT_THREAD(object) \
ASSERT((((object)->DispatcherHeader.Type & KOBJECT_TYPE_MASK) == ThreadObject)) ASSERT((((object)->DispatcherHeader.Type & KOBJECT_TYPE_MASK) == ThreadObject))

View file

@ -58,6 +58,7 @@ Author:
#define MEM_PHYSICAL 0x400000 #define MEM_PHYSICAL 0x400000
#define MEM_ROTATE 0x800000 #define MEM_ROTATE 0x800000
#define MEM_IMAGE SEC_IMAGE #define MEM_IMAGE SEC_IMAGE
#define MEM_DOS_LIM 0x40000000
// //
// Section Flags for NtCreateSection // Section Flags for NtCreateSection

View file

@ -72,6 +72,20 @@ Author:
// //
#define OBJ_NAME_PATH_SEPARATOR L'\\' #define OBJ_NAME_PATH_SEPARATOR L'\\'
//
// Object Information Classes for NtQueryInformationObject
//
typedef enum _OBJECT_INFORMATION_CLASS
{
ObjectBasicInformation,
ObjectNameInformation,
ObjectTypeInformation,
ObjectTypesInformation,
ObjectHandleFlagInformation,
ObjectSessionInformation,
MaxObjectInfoClass
} OBJECT_INFORMATION_CLASS;
#else #else
// //
@ -146,18 +160,6 @@ typedef enum _OB_OPEN_REASON
#define DOSDEVICE_DRIVE_CDROM 5 #define DOSDEVICE_DRIVE_CDROM 5
#define DOSDEVICE_DRIVE_RAMDISK 6 #define DOSDEVICE_DRIVE_RAMDISK 6
//
// Object Information Classes for NtQueryInformationObject
//
typedef enum _OBJECT_INFORMATION_CLASS
{
ObjectBasicInformation,
ObjectNameInformation,
ObjectTypeInformation,
ObjectAllTypesInformation,
ObjectHandleInformation
} OBJECT_INFORMATION_CLASS;
// //
// Dump Control Structure for Object Debugging // Dump Control Structure for Object Debugging
// //
@ -297,7 +299,7 @@ typedef struct _OBJECT_TYPE_INFORMATION
ULONG DefaultNonPagedPoolCharge; ULONG DefaultNonPagedPoolCharge;
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
#ifndef NTOS_MODE_USER #ifdef NTOS_MODE_USER
typedef struct _OBJECT_BASIC_INFORMATION typedef struct _OBJECT_BASIC_INFORMATION
{ {
@ -314,6 +316,8 @@ typedef struct _OBJECT_BASIC_INFORMATION
LARGE_INTEGER CreateTime; LARGE_INTEGER CreateTime;
} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
#else
typedef struct _OBJECT_CREATE_INFORMATION typedef struct _OBJECT_CREATE_INFORMATION
{ {
ULONG Attributes; ULONG Attributes;

View file

@ -117,11 +117,6 @@ PsRevertThreadToSelf(
// //
// Misc. Functions // Misc. Functions
// //
NTKERNELAPI
HANDLE
NTAPI
PsGetProcessId(PEPROCESS Process);
NTKERNELAPI NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI

View file

@ -36,16 +36,6 @@ Author:
// //
#define USER_SHARED_DATA (0x7FFE0000) #define USER_SHARED_DATA (0x7FFE0000)
//
// Kernel Exports
//
#ifndef NTOS_MODE_USER
//extern NTSYSAPI struct _EPROCESS* PsInitialSystemProcess;
//extern NTSYSAPI POBJECT_TYPE PsProcessType;
#endif
// //
// Global Flags // Global Flags
// //
@ -423,7 +413,7 @@ typedef enum _PSW32THREADCALLOUTTYPE
// //
struct _W32THREAD; struct _W32THREAD;
struct _W32PROCESS; struct _W32PROCESS;
struct _ETHREAD; //struct _ETHREAD;
struct _WIN32_POWEREVENT_PARAMETERS; struct _WIN32_POWEREVENT_PARAMETERS;
struct _WIN32_POWERSTATE_PARAMETERS; struct _WIN32_POWERSTATE_PARAMETERS;
struct _WIN32_JOBCALLOUT_PARAMETERS; struct _WIN32_JOBCALLOUT_PARAMETERS;
@ -1148,7 +1138,7 @@ typedef struct _ETHREAD
KSEMAPHORE AlpcWaitSemaphore; KSEMAPHORE AlpcWaitSemaphore;
ULONG CacheManagerCount; ULONG CacheManagerCount;
#endif #endif
} ETHREAD; } ETHREAD, *PETHREAD;
// //
// Executive Process (EPROCESS) // Executive Process (EPROCESS)
@ -1344,7 +1334,7 @@ typedef struct _EPROCESS
UCHAR PriorityClass; UCHAR PriorityClass;
MM_AVL_TABLE VadRoot; MM_AVL_TABLE VadRoot;
ULONG Cookie; ULONG Cookie;
} EPROCESS; } EPROCESS, *PEPROCESS;
// //
// Job Token Filter Data // Job Token Filter Data

View file

@ -3,7 +3,11 @@
#if __GNUC__ >=3 #if __GNUC__ >=3
#pragma GCC system_header #pragma GCC system_header
#endif #endif
#include <stdarg.h>
#include <windef.h>
#include <excpt.h>
/* TODO: some compilers support this */ /* TODO: some compilers support this */
#define RESTRICTED_POINTER #define RESTRICTED_POINTER

View file

@ -722,7 +722,7 @@ CmpFindSubKeyByName(IN PHHIVE Hive,
HvReleaseCell(Hive, CellToRelease); HvReleaseCell(Hive, CellToRelease);
/* Make sure we found something valid */ /* Make sure we found something valid */
if (Found < 0) break; if (Found & 0x80000000) break;
/* Get the new Index Root and set the new cell to be released */ /* Get the new Index Root and set the new cell to be released */
if (SubKey == HCELL_NIL) continue; if (SubKey == HCELL_NIL) continue;
@ -749,7 +749,7 @@ CmpFindSubKeyByName(IN PHHIVE Hive,
HvReleaseCell(Hive, CellToRelease); HvReleaseCell(Hive, CellToRelease);
/* Make sure we found a valid index */ /* Make sure we found a valid index */
if (Found < 0) break; if (Found & 0x80000000) break;
} }
else else
{ {

View file

@ -512,7 +512,8 @@ CmpQueryKeyValueData(IN PKEY_OBJECT KeyObject,
Info->KeyValueFullInformation.DataOffset = AlignedData; Info->KeyValueFullInformation.DataOffset = AlignedData;
/* Only the data remains to be copied */ /* Only the data remains to be copied */
SizeLeft = max(0, Length - AlignedData); SizeLeft = (((LONG)Length - (LONG)AlignedData) < 0) ?
0 : (Length - AlignedData);
Size = KeySize; Size = KeySize;
/* Check if the caller has no space for it */ /* Check if the caller has no space for it */

View file

@ -358,7 +358,6 @@ extern LCID PsDefaultSystemLocaleId;
extern LIST_ENTRY PspReaperListHead; extern LIST_ENTRY PspReaperListHead;
extern WORK_QUEUE_ITEM PspReaperWorkItem; extern WORK_QUEUE_ITEM PspReaperWorkItem;
extern BOOLEAN PspReaping; extern BOOLEAN PspReaping;
extern PEPROCESS PsInitialSystemProcess;
extern PEPROCESS PsIdleProcess; extern PEPROCESS PsIdleProcess;
extern LIST_ENTRY PsActiveProcessHead; extern LIST_ENTRY PsActiveProcessHead;
extern KGUARDED_MUTEX PspActiveProcessMutex; extern KGUARDED_MUTEX PspActiveProcessMutex;

View file

@ -328,7 +328,7 @@ EnumerateDevices(
PPNPROOT_FDO_DEVICE_EXTENSION DeviceExtension; PPNPROOT_FDO_DEVICE_EXTENSION DeviceExtension;
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
PKEY_BASIC_INFORMATION KeyInfo = NULL, SubKeyInfo = NULL; PKEY_BASIC_INFORMATION KeyInfo = NULL, SubKeyInfo = NULL;
UNICODE_STRING KeyName = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\" REGSTR_PATH_SYSTEMENUM "\\" REGSTR_KEY_ROOTENUM); UNICODE_STRING KeyName = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\" REGSTR_PATH_SYSTEMENUM L"\\" REGSTR_KEY_ROOTENUM);
UNICODE_STRING SubKeyName; UNICODE_STRING SubKeyName;
WCHAR DevicePath[MAX_PATH + 1]; WCHAR DevicePath[MAX_PATH + 1];
RTL_QUERY_REGISTRY_TABLE QueryTable[5]; RTL_QUERY_REGISTRY_TABLE QueryTable[5];

View file

@ -1411,7 +1411,7 @@ NtQueryObject(IN HANDLE ObjectHandle,
* Make sure this isn't a generic type query, since the caller doesn't * Make sure this isn't a generic type query, since the caller doesn't
* have to give a handle for it * have to give a handle for it
*/ */
if (ObjectInformationClass != ObjectAllTypesInformation) if (ObjectInformationClass != ObjectTypesInformation)
{ {
/* Reference the object */ /* Reference the object */
Status = ObReferenceObjectByHandle(ObjectHandle, Status = ObReferenceObjectByHandle(ObjectHandle,
@ -1463,27 +1463,27 @@ NtQueryObject(IN HANDLE ObjectHandle,
} }
/* Copy quota information */ /* Copy quota information */
BasicInfo->PagedPoolUsage = 0; /* FIXME*/ BasicInfo->PagedPoolCharge = 0; /* FIXME*/
BasicInfo->NonPagedPoolUsage = 0; /* FIXME*/ BasicInfo->NonPagedPoolCharge = 0; /* FIXME*/
/* Copy name information */ /* Copy name information */
BasicInfo->NameInformationLength = 0; /* FIXME*/ BasicInfo->NameInfoSize = 0; /* FIXME*/
BasicInfo->TypeInformationLength = 0; /* FIXME*/ BasicInfo->TypeInfoSize = 0; /* FIXME*/
/* Copy security information */ /* Copy security information */
BasicInfo->SecurityDescriptorLength = 0; /* FIXME*/ BasicInfo->SecurityDescriptorSize = 0; /* FIXME*/
/* Check if this is a symlink */ /* Check if this is a symlink */
if (ObjectHeader->Type == ObSymbolicLinkType) if (ObjectHeader->Type == ObSymbolicLinkType)
{ {
/* Return the creation time */ /* Return the creation time */
BasicInfo->CreateTime.QuadPart = BasicInfo->CreationTime.QuadPart =
((POBJECT_SYMBOLIC_LINK)Object)->CreationTime.QuadPart; ((POBJECT_SYMBOLIC_LINK)Object)->CreationTime.QuadPart;
} }
else else
{ {
/* Otherwise return 0 */ /* Otherwise return 0 */
BasicInfo->CreateTime.QuadPart = (ULONGLONG)0; BasicInfo->CreationTime.QuadPart = (ULONGLONG)0;
} }
/* Break out with success */ /* Break out with success */
@ -1513,13 +1513,13 @@ NtQueryObject(IN HANDLE ObjectHandle,
break; break;
/* Information about all types */ /* Information about all types */
case ObjectAllTypesInformation: case ObjectTypesInformation:
DPRINT1("NOT IMPLEMENTED!\n"); DPRINT1("NOT IMPLEMENTED!\n");
Status = STATUS_NOT_IMPLEMENTED; Status = STATUS_NOT_IMPLEMENTED;
break; break;
/* Information about the handle flags */ /* Information about the handle flags */
case ObjectHandleInformation: case ObjectHandleFlagInformation:
/* Validate length */ /* Validate length */
InfoLength = sizeof (OBJECT_HANDLE_ATTRIBUTE_INFORMATION); InfoLength = sizeof (OBJECT_HANDLE_ATTRIBUTE_INFORMATION);
@ -1609,7 +1609,7 @@ NtSetInformationObject(IN HANDLE ObjectHandle,
PAGED_CODE(); PAGED_CODE();
/* Validate the information class */ /* Validate the information class */
if (ObjectInformationClass != ObjectHandleInformation) if (ObjectInformationClass != ObjectHandleFlagInformation)
{ {
/* Invalid class */ /* Invalid class */
return STATUS_INVALID_INFO_CLASS; return STATUS_INVALID_INFO_CLASS;

View file

@ -100,7 +100,7 @@ PopGetSysButton(
IN PVOID Context) IN PVOID Context)
{ {
PSYS_BUTTON_CONTEXT SysButtonContext = Context; PSYS_BUTTON_CONTEXT SysButtonContext = Context;
PIO_WORKITEM CurrentWorkItem = SysButtonContext->WorkItem;; PIO_WORKITEM CurrentWorkItem = SysButtonContext->WorkItem;
PIRP Irp; PIRP Irp;
/* Get button pressed (IOCTL_GET_SYS_BUTTON_EVENT) */ /* Get button pressed (IOCTL_GET_SYS_BUTTON_EVENT) */