2003-07-12 Casper S. Hornstrup <chorns@users.sourceforge.net>

Changes for compiling with w32api

	* include/ddk/extypes.h (NPAGED_LOOKASIDE_LIST, PAGED_LOOKASIDE_LIST):
	Match w32api fields.
	* include/ddk/halfuncs.h (HalReturnToFirmware, HalReleaseDisplayOwnership,
	HalQueryDisplayOwnership): Move ...
	* include/ntos/halfuncs.h: ... here.
	* include/ntos/rtl.h: (PopEntrySList, PushEntrySList): Move to
	ntoskrnl/ex/lookas.c.
	* include/ntos/zw.h (NtAccessCheckAndAuditAlarm, NtCancelTimer,
	NtCreatePagingFile, NtCreateThread, NtFlushInstructionCache,
	NtFlushVirtualMemory, NtGetTickCount, NtLoadKey, NtLockVirtualMemory,
	NtOpenObjectAuditAlarm, NtProtectVirtualMemory, NtQueryDirectoryObject,
	NtQueryIntervalProfile, NtQueryVirtualMemory, NtRaiseHardError,
	NtSetInformationKey, NtSetInformationObject, NtSetTimer, NtUnloadKey,
	NtUnlockVirtualMemory, NtWaitForMultipleObjects, NtCreateProfile,
	NtDelayExecution, NtExtendSection, NtQuerySection): Include for w32api.
	* ntoskrnl/ntoskrnl.def (ExInterlockedAddUlong,
	ExInterlockedInsertHeadList, ExInterlockedInsertTailList,
	ExInterlockedPopEntryList, ExInterlockedPushEntryList,
	ExInterlockedRemoveHeadList): Make FASTCALL.
	* ntoskrnl/ntoskrnl.edf: Ditto.
	* ntoskrnl/ex/list.c: Ditto.
	* include/ddk/exfuncs.h: Ditto.
	(InterlockedPopEntrySList, InterlockedPushEntrySList,
	ExAllocateFromPagedLookasideList, ExFreeToPagedLookasideList): Add.
	* ntoskrnl/ex/interlck.c (ExInterlockedDecrementLong,
	ExInterlockedAddUlong, ExInterlockedIncrementLong): Undefine if defined.
	* ntoskrnl/ex/lookas.c (PopEntrySList, PushEntrySList,
	LookasideListLock): Add.
	* drivers/dd/blue/blue.c: Include <roskrnl.h>.
	* drivers/dd/videoprt/videoprt.c: Ditto.

svn path=/trunk/; revision=5097
This commit is contained in:
Casper Hornstrup 2003-07-12 10:24:45 +00:00
parent b6eef9ca10
commit fdfc1cdb67
16 changed files with 794 additions and 434 deletions

View file

@ -1,3 +1,38 @@
2003-07-12 Casper S. Hornstrup <chorns@users.sourceforge.net>
Changes for compiling with w32api
* include/ddk/extypes.h (NPAGED_LOOKASIDE_LIST, PAGED_LOOKASIDE_LIST):
Match w32api fields.
* include/ddk/halfuncs.h (HalReturnToFirmware, HalReleaseDisplayOwnership,
HalQueryDisplayOwnership): Move ...
* include/ntos/halfuncs.h: ... here.
* include/ntos/rtl.h: (PopEntrySList, PushEntrySList): Move to
ntoskrnl/ex/lookas.c.
* include/ntos/zw.h (NtAccessCheckAndAuditAlarm, NtCancelTimer,
NtCreatePagingFile, NtCreateThread, NtFlushInstructionCache,
NtFlushVirtualMemory, NtGetTickCount, NtLoadKey, NtLockVirtualMemory,
NtOpenObjectAuditAlarm, NtProtectVirtualMemory, NtQueryDirectoryObject,
NtQueryIntervalProfile, NtQueryVirtualMemory, NtRaiseHardError,
NtSetInformationKey, NtSetInformationObject, NtSetTimer, NtUnloadKey,
NtUnlockVirtualMemory, NtWaitForMultipleObjects, NtCreateProfile,
NtDelayExecution, NtExtendSection, NtQuerySection): Include for w32api.
* ntoskrnl/ntoskrnl.def (ExInterlockedAddUlong,
ExInterlockedInsertHeadList, ExInterlockedInsertTailList,
ExInterlockedPopEntryList, ExInterlockedPushEntryList,
ExInterlockedRemoveHeadList): Make FASTCALL.
* ntoskrnl/ntoskrnl.edf: Ditto.
* ntoskrnl/ex/list.c: Ditto.
* include/ddk/exfuncs.h: Ditto.
(InterlockedPopEntrySList, InterlockedPushEntrySList,
ExAllocateFromPagedLookasideList, ExFreeToPagedLookasideList): Add.
* ntoskrnl/ex/interlck.c (ExInterlockedDecrementLong,
ExInterlockedAddUlong, ExInterlockedIncrementLong): Undefine if defined.
* ntoskrnl/ex/lookas.c (PopEntrySList, PushEntrySList,
LookasideListLock): Add.
* drivers/dd/blue/blue.c: Include <roskrnl.h>.
* drivers/dd/videoprt/videoprt.c: Ditto.
2003-07-11 Casper S. Hornstrup <chorns@users.sourceforge.net> 2003-07-11 Casper S. Hornstrup <chorns@users.sourceforge.net>
* lib/user32/controls/edit.c (EDIT_EM_SetLimitText, * lib/user32/controls/edit.c (EDIT_EM_SetLimitText,

View file

@ -1,4 +1,4 @@
/* $Id: blue.c,v 1.39 2003/06/21 14:25:30 gvg Exp $ /* $Id: blue.c,v 1.40 2003/07/12 10:24:45 chorns Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -11,7 +11,7 @@
/* INCLUDES ******************************************************************/ /* INCLUDES ******************************************************************/
#include <ddk/ntddk.h> #include <roskrnl.h>
#include <ddk/ntddblue.h> #include <ddk/ntddblue.h>
#include <string.h> #include <string.h>
#include <defines.h> #include <defines.h>

View file

@ -1,4 +1,4 @@
/* $Id: videoprt.c,v 1.8 2003/07/10 21:12:40 chorns Exp $ /* $Id: videoprt.c,v 1.9 2003/07/12 10:24:45 chorns Exp $
* *
* VideoPort driver * VideoPort driver
* Written by Rex Jolliff * Written by Rex Jolliff
@ -6,7 +6,7 @@
*/ */
#include <errors.h> #include <errors.h>
#include <ddk/ntddk.h> #include <roskrnl.h>
#include <ddk/ntddvid.h> #include <ddk/ntddvid.h>
#include "../../../ntoskrnl/include/internal/v86m.h" #include "../../../ntoskrnl/include/internal/v86m.h"

View file

@ -288,7 +288,7 @@ ExInterlockedAddLargeStatistic (
); );
ULONG ULONG
STDCALL FASTCALL
ExInterlockedAddUlong ( ExInterlockedAddUlong (
PULONG Addend, PULONG Addend,
ULONG Increment, ULONG Increment,
@ -355,21 +355,21 @@ ExInterlockedIncrementLong (
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
); );
PLIST_ENTRY PLIST_ENTRY
STDCALL FASTCALL
ExInterlockedInsertHeadList ( ExInterlockedInsertHeadList (
PLIST_ENTRY ListHead, PLIST_ENTRY ListHead,
PLIST_ENTRY ListEntry, PLIST_ENTRY ListEntry,
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
); );
PLIST_ENTRY PLIST_ENTRY
STDCALL FASTCALL
ExInterlockedInsertTailList ( ExInterlockedInsertTailList (
PLIST_ENTRY ListHead, PLIST_ENTRY ListHead,
PLIST_ENTRY ListEntry, PLIST_ENTRY ListEntry,
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
); );
PSINGLE_LIST_ENTRY PSINGLE_LIST_ENTRY
STDCALL FASTCALL
ExInterlockedPopEntryList ( ExInterlockedPopEntryList (
PSINGLE_LIST_ENTRY ListHead, PSINGLE_LIST_ENTRY ListHead,
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
@ -381,7 +381,7 @@ ExInterlockedPopEntrySList (
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
); );
PSINGLE_LIST_ENTRY PSINGLE_LIST_ENTRY
STDCALL FASTCALL
ExInterlockedPushEntryList ( ExInterlockedPushEntryList (
PSINGLE_LIST_ENTRY ListHead, PSINGLE_LIST_ENTRY ListHead,
PSINGLE_LIST_ENTRY ListEntry, PSINGLE_LIST_ENTRY ListEntry,
@ -403,7 +403,7 @@ ExInterlockedRemoveEntryList (
); );
PLIST_ENTRY PLIST_ENTRY
STDCALL FASTCALL
ExInterlockedRemoveHeadList ( ExInterlockedRemoveHeadList (
PLIST_ENTRY Head, PLIST_ENTRY Head,
PKSPIN_LOCK Lock PKSPIN_LOCK Lock
@ -586,6 +586,18 @@ ExUnregisterCallback (
IN PVOID CallbackRegistration IN PVOID CallbackRegistration
); );
PSLIST_ENTRY
FASTCALL
InterlockedPopEntrySList (
IN PSLIST_HEADER ListHead
);
PSLIST_ENTRY
FASTCALL
InterlockedPushEntrySList(
IN PSLIST_HEADER ListHead,
IN PSLIST_ENTRY ListEntry
);
/* /*
* PVOID * PVOID
@ -614,7 +626,7 @@ ExAllocateFromNPagedLookasideList (
Lookaside->TotalAllocates++; Lookaside->TotalAllocates++;
Entry = ExInterlockedPopEntrySList (&Lookaside->ListHead, Entry = ExInterlockedPopEntrySList (&Lookaside->ListHead,
&Lookaside->Lock); &Lookaside->Obsoleted);
if (Entry == NULL) if (Entry == NULL)
{ {
Lookaside->AllocateMisses++; Lookaside->AllocateMisses++;
@ -626,11 +638,21 @@ ExAllocateFromNPagedLookasideList (
return Entry; return Entry;
} }
PVOID static inline PVOID
STDCALL ExAllocateFromPagedLookasideList(
ExAllocateFromPagedLookasideList ( IN PPAGED_LOOKASIDE_LIST Lookaside)
PPAGED_LOOKASIDE_LIST LookSide {
); PVOID Entry;
Lookaside->TotalAllocates++;
Entry = InterlockedPopEntrySList(&Lookaside->ListHead);
if (Entry == NULL) {
Lookaside->AllocateMisses++;
Entry = (Lookaside->Allocate)(Lookaside->Type,
Lookaside->Size, Lookaside->Tag);
}
return Entry;
}
VOID VOID
STDCALL STDCALL
@ -669,7 +691,7 @@ ExFreeToNPagedLookasideList (
) )
{ {
Lookaside->TotalFrees++; Lookaside->TotalFrees++;
if (ExQueryDepthSList (&Lookaside->ListHead) >= Lookaside->MinimumDepth) if (ExQueryDepthSList (&Lookaside->ListHead) >= Lookaside->Depth)
{ {
Lookaside->FreeMisses++; Lookaside->FreeMisses++;
(Lookaside->Free)(Entry); (Lookaside->Free)(Entry);
@ -678,16 +700,23 @@ ExFreeToNPagedLookasideList (
{ {
ExInterlockedPushEntrySList (&Lookaside->ListHead, ExInterlockedPushEntrySList (&Lookaside->ListHead,
(PSINGLE_LIST_ENTRY)Entry, (PSINGLE_LIST_ENTRY)Entry,
&Lookaside->Lock); &Lookaside->Obsoleted);
} }
} }
VOID static inline VOID
STDCALL ExFreeToPagedLookasideList(
ExFreeToPagedLookasideList ( IN PPAGED_LOOKASIDE_LIST Lookaside,
PPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry)
PVOID Entry {
); Lookaside->TotalFrees++;
if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) {
Lookaside->FreeMisses++;
(Lookaside->Free)(Entry);
} else {
InterlockedPushEntrySList(&Lookaside->ListHead, (PSLIST_ENTRY)Entry);
}
}
VOID VOID
STDCALL STDCALL

View file

@ -1,4 +1,4 @@
/* $Id: extypes.h,v 1.15 2003/06/07 16:16:38 chorns Exp $ */ /* $Id: extypes.h,v 1.16 2003/07/12 10:24:45 chorns Exp $ */
#ifndef __INCLUDE_DDK_EXTYPES_H #ifndef __INCLUDE_DDK_EXTYPES_H
#define __INCLUDE_DDK_EXTYPES_H #define __INCLUDE_DDK_EXTYPES_H
@ -112,7 +112,7 @@ typedef union _SLIST_HEADER
typedef struct _NPAGED_LOOKASIDE_LIST typedef struct _NPAGED_LOOKASIDE_LIST
{ {
SLIST_HEADER ListHead; SLIST_HEADER ListHead;
USHORT MinimumDepth; USHORT Depth;
USHORT MaximumDepth; USHORT MaximumDepth;
ULONG TotalAllocates; ULONG TotalAllocates;
ULONG AllocateMisses; ULONG AllocateMisses;
@ -127,13 +127,13 @@ typedef struct _NPAGED_LOOKASIDE_LIST
ULONG LastTotalAllocates; ULONG LastTotalAllocates;
ULONG LastAllocateMisses; ULONG LastAllocateMisses;
ULONG Pad[2]; ULONG Pad[2];
KSPIN_LOCK Lock; KSPIN_LOCK Obsoleted;
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST; } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
typedef struct _PAGED_LOOKASIDE_LIST typedef struct _PAGED_LOOKASIDE_LIST
{ {
SLIST_HEADER ListHead; SLIST_HEADER ListHead;
USHORT MinimumDepth; USHORT Depth;
USHORT MaximumDepth; USHORT MaximumDepth;
ULONG TotalAllocates; ULONG TotalAllocates;
ULONG AllocateMisses; ULONG AllocateMisses;
@ -147,7 +147,7 @@ typedef struct _PAGED_LOOKASIDE_LIST
LIST_ENTRY ListEntry; LIST_ENTRY ListEntry;
ULONG LastTotalAllocates; ULONG LastTotalAllocates;
ULONG LastAllocateMisses; ULONG LastAllocateMisses;
FAST_MUTEX Lock; FAST_MUTEX Obsoleted;
} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;

View file

@ -1,6 +1,6 @@
#ifndef __INCLUDE_DDK_HALFUNCS_H #ifndef __INCLUDE_DDK_HALFUNCS_H
#define __INCLUDE_DDK_HALFUNCS_H #define __INCLUDE_DDK_HALFUNCS_H
/* $Id: halfuncs.h,v 1.7 2003/06/21 14:25:30 gvg Exp $ */ /* $Id: halfuncs.h,v 1.8 2003/07/12 10:24:45 chorns Exp $ */
#include <ntos/haltypes.h> #include <ntos/haltypes.h>
@ -145,9 +145,6 @@ FASTCALL
HalRequestSoftwareInterrupt HalRequestSoftwareInterrupt
*/ */
VOID STDCALL
HalReturnToFirmware(ULONG Action);
ULONG STDCALL ULONG STDCALL
HalSetBusData(BUS_DATA_TYPE BusDataType, HalSetBusData(BUS_DATA_TYPE BusDataType,
ULONG BusNumber, ULONG BusNumber,
@ -281,13 +278,6 @@ VOID STDCALL
WRITE_PORT_USHORT(PUSHORT Port, WRITE_PORT_USHORT(PUSHORT Port,
USHORT Value); USHORT Value);
/* Non-standard functions */
VOID STDCALL
HalReleaseDisplayOwnership();
BOOLEAN STDCALL
HalQueryDisplayOwnership();
#endif /* __INCLUDE_DDK_HALDDK_H */ #endif /* __INCLUDE_DDK_HALDDK_H */
/* EOF */ /* EOF */

View file

@ -46,6 +46,16 @@ KIRQL
STDCALL STDCALL
KeRaiseIrqlToSynchLevel(VOID); KeRaiseIrqlToSynchLevel(VOID);
VOID STDCALL
HalReturnToFirmware(ULONG Action);
/* Non-standard functions */
VOID STDCALL
HalReleaseDisplayOwnership();
BOOLEAN STDCALL
HalQueryDisplayOwnership();
#endif /* __INCLUDE_NTOS_HALDDK_H */ #endif /* __INCLUDE_NTOS_HALDDK_H */
/* EOF */ /* EOF */

View file

@ -1,4 +1,4 @@
/* $Id: rtl.h,v 1.12 2003/06/07 16:16:38 chorns Exp $ /* $Id: rtl.h,v 1.13 2003/07/12 10:24:45 chorns Exp $
* *
*/ */
@ -578,94 +578,6 @@ PushEntryList (
*/ */
#ifndef __USE_W32API
/*
* An ReactOS extension
*/
static
inline
PSINGLE_LIST_ENTRY
PopEntrySList(
PSLIST_HEADER ListHead
)
{
PSINGLE_LIST_ENTRY ListEntry;
ListEntry = ListHead->s.Next.Next;
if (ListEntry!=NULL)
{
ListHead->s.Next.Next = ListEntry->Next;
ListHead->s.Depth++;
ListHead->s.Sequence++;
}
return ListEntry;
}
/*
* An ReactOS extension
*/
static
inline
VOID
PushEntrySList (
PSLIST_HEADER ListHead,
PSINGLE_LIST_ENTRY Entry
)
{
Entry->Next = ListHead->s.Next.Next;
ListHead->s.Next.Next = Entry;
ListHead->s.Depth++;
ListHead->s.Sequence++;
}
#else /* __USE_W32API */
/*
* An ReactOS extension
*/
static
inline
PSINGLE_LIST_ENTRY
PopEntrySList(
PSLIST_HEADER ListHead
)
{
PSINGLE_LIST_ENTRY ListEntry;
ListEntry = ListHead->Next.Next;
if (ListEntry!=NULL)
{
ListHead->Next.Next = ListEntry->Next;
ListHead->Depth++;
ListHead->Sequence++;
}
return ListEntry;
}
/*
* An ReactOS extension
*/
static
inline
VOID
PushEntrySList (
PSLIST_HEADER ListHead,
PSINGLE_LIST_ENTRY Entry
)
{
Entry->Next = ListHead->Next.Next;
ListHead->Next.Next = Entry;
ListHead->Depth++;
ListHead->Sequence++;
}
#endif /* __USE_W32API */
NTSTATUS NTSTATUS
STDCALL STDCALL
RtlAddAtomToAtomTable ( RtlAddAtomToAtomTable (

View file

@ -189,6 +189,9 @@ typedef struct _SINGLE_LIST_ENTRY
struct _SINGLE_LIST_ENTRY *Next; struct _SINGLE_LIST_ENTRY *Next;
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
#define SLIST_ENTRY SINGLE_LIST_ENTRY
#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
typedef struct _UNICODE_STRING typedef struct _UNICODE_STRING
{ {
USHORT Length; USHORT Length;

View file

@ -1,5 +1,5 @@
/* $Id: zw.h,v 1.12 2003/06/07 16:16:38 chorns Exp $ /* $Id: zw.h,v 1.13 2003/07/12 10:24:45 chorns Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -4269,8 +4269,51 @@ RtlOpenCurrentUser(
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PHANDLE KeyHandle); OUT PHANDLE KeyHandle);
/*
* FUNCTION: Checks a clients access rights to a object and issues a audit a alarm. ( it logs the access )
* ARGUMENTS:
* SubsystemName = Specifies the name of the subsystem, can be "WIN32" or "DEBUG"
* ObjectHandle =
* ObjectAttributes =
* DesiredAcces =
* GenericMapping =
* ObjectCreation =
* GrantedAccess =
* AccessStatus =
* GenerateOnClose =
* REMARKS: The arguments map to the win32 AccessCheck
* RETURNS: Status
*/
#ifndef __USE_W32API NTSTATUS
STDCALL
NtAccessCheckAndAuditAlarm(
IN PUNICODE_STRING SubsystemName,
IN PHANDLE ObjectHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN ACCESS_MASK DesiredAccess,
IN PGENERIC_MAPPING GenericMapping,
IN BOOLEAN ObjectCreation,
OUT PULONG GrantedAccess,
OUT PBOOLEAN AccessStatus,
OUT PBOOLEAN GenerateOnClose
);
/*
* FUNCTION: Cancels a timer
* ARGUMENTS:
* TimerHandle = Handle to the timer
* CurrentState = Specifies the state of the timer when cancelled.
* REMARKS:
* The arguments to this function map to the function CancelWaitableTimer.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtCancelTimer(
IN HANDLE TimerHandle,
OUT PBOOLEAN CurrentState OPTIONAL
);
/* /*
* FUNCTION: Continues a thread with the specified context * FUNCTION: Continues a thread with the specified context
@ -4291,6 +4334,497 @@ NtContinue(
IN BOOLEAN TestAlert IN BOOLEAN TestAlert
); );
/*
* FUNCTION: Creates a paging file.
* ARGUMENTS:
* FileName = Name of the pagefile
* InitialSize = Specifies the initial size in bytes
* MaximumSize = Specifies the maximum size in bytes
* Reserved = Reserved for future use
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtCreatePagingFile(
IN PUNICODE_STRING FileName,
IN PLARGE_INTEGER InitialSize,
IN PLARGE_INTEGER MaxiumSize,
IN ULONG Reserved
);
/*
* FUNCTION: Creates a profile
* ARGUMENTS:
* ProfileHandle (OUT) = Caller supplied storage for the resulting handle
* ObjectAttribute = Initialized attributes for the object
* ImageBase = Start address of executable image
* ImageSize = Size of the image
* Granularity = Bucket size
* Buffer = Caller supplies buffer for profiling info
* ProfilingSize = Buffer size
* ClockSource = Specify 0 / FALSE ??
* ProcessorMask = A value of -1 indicates disables per processor profiling,
otherwise bit set for the processor to profile.
* REMARKS:
* This function maps to the win32 CreateProcess.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtCreateProfile(OUT PHANDLE ProfileHandle,
IN HANDLE ProcessHandle,
IN PVOID ImageBase,
IN ULONG ImageSize,
IN ULONG Granularity,
OUT PULONG Buffer,
IN ULONG ProfilingSize,
IN KPROFILE_SOURCE Source,
IN ULONG ProcessorMask);
/*
* FUNCTION: Creates a user mode thread
* ARGUMENTS:
* ThreadHandle (OUT) = Caller supplied storage for the resulting handle
* DesiredAccess = Specifies the allowed or desired access to the thread.
* ObjectAttributes = Initialized attributes for the object.
* ProcessHandle = Handle to the threads parent process.
* ClientId (OUT) = Caller supplies storage for returned process id and thread id.
* ThreadContext = Initial processor context for the thread.
* InitialTeb = Initial user mode stack context for the thread.
* CreateSuspended = Specifies if the thread is ready for scheduling
* REMARKS:
* This function maps to the win32 function CreateThread.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtCreateThread(
OUT PHANDLE ThreadHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId,
IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack,
IN BOOLEAN CreateSuspended
);
/*
* FUNCTION: Delays the execution of the calling thread.
* ARGUMENTS:
* Alertable = If TRUE the thread is alertable during is wait period
* Interval = Specifies the interval to wait.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtDelayExecution(
IN ULONG Alertable,
IN TIME *Interval
);
/*
* FUNCTION: Extends a section
* ARGUMENTS:
* SectionHandle = Handle to the section
* NewMaximumSize = Adjusted size
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtExtendSection(
IN HANDLE SectionHandle,
IN ULONG NewMaximumSize
);
/*
* FUNCTION: Flushes a the processors instruction cache
* ARGUMENTS:
* ProcessHandle = Points to the process owning the cache
* BaseAddress = // might this be a image address ????
* NumberOfBytesToFlush =
* RETURNS: Status
* REMARKS:
* This funciton is used by debuggers
*/
NTSTATUS
STDCALL
NtFlushInstructionCache(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN UINT NumberOfBytesToFlush
);
/*
* FUNCTION: Flushes virtual memory to file
* ARGUMENTS:
* ProcessHandle = Points to the process that allocated the virtual memory
* BaseAddress = Points to the memory address
* NumberOfBytesToFlush = Limits the range to flush,
* NumberOfBytesFlushed = Actual number of bytes flushed
* RETURNS: Status
* REMARKS:
* Check return status on STATUS_NOT_MAPPED_DATA
*/
NTSTATUS
STDCALL
NtFlushVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToFlush,
OUT PULONG NumberOfBytesFlushed OPTIONAL
);
/*
* FUNCTION: Retrieves the uptime of the system
* ARGUMENTS:
* UpTime = Number of clock ticks since boot.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtGetTickCount(
PULONG UpTime
);
/*
* FUNCTION: Loads a registry key.
* ARGUMENTS:
* KeyObjectAttributes = Key to be loaded
* FileObjectAttributes = File to load the key from
* REMARK:
* This procedure maps to the win32 procedure RegLoadKey
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtLoadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes,
IN POBJECT_ATTRIBUTES FileObjectAttributes
);
/*
* FUNCTION: Locks a range of virtual memory.
* ARGUMENTS:
* ProcessHandle = Handle to the process
* BaseAddress = Lower boundary of the range of bytes to lock.
* NumberOfBytesLock = Offset to the upper boundary.
* NumberOfBytesLocked (OUT) = Number of bytes actually locked.
* REMARK:
This procedure maps to the win32 procedure VirtualLock.
* RETURNS: Status [STATUS_SUCCESS | STATUS_WAS_LOCKED ]
*/
NTSTATUS
STDCALL
NtLockVirtualMemory(
HANDLE ProcessHandle,
PVOID BaseAddress,
ULONG NumberOfBytesToLock,
PULONG NumberOfBytesLocked
);
NTSTATUS
STDCALL
NtOpenObjectAuditAlarm(
IN PUNICODE_STRING SubsystemName,
IN PVOID HandleId,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN HANDLE ClientToken,
IN ULONG DesiredAccess,
IN ULONG GrantedAccess,
IN PPRIVILEGE_SET Privileges,
IN BOOLEAN ObjectCreation,
IN BOOLEAN AccessGranted,
OUT PBOOLEAN GenerateOnClose
);
/*
* FUNCTION: Set the access protection of a range of virtual memory
* ARGUMENTS:
* ProcessHandle = Handle to process owning the virtual address space
* BaseAddress = Start address
* NumberOfBytesToProtect = Delimits the range of virtual memory
* for which the new access protection holds
* NewAccessProtection = The new access proctection for the pages
* OldAccessProtection = Caller should supply storage for the old
* access protection
*
* REMARKS:
* The function maps to the win32 VirtualProtectEx
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtProtectVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToProtect,
IN ULONG NewAccessProtection,
OUT PULONG OldAccessProtection
);
/*
* FUNCTION: Query information about the content of a directory object
* ARGUMENTS:
DirObjInformation = Buffer must be large enough to hold the name strings too
GetNextIndex = If TRUE :return the index of the next object in this directory in ObjectIndex
If FALSE: return the number of objects in this directory in ObjectIndex
IgnoreInputIndex= If TRUE: ignore input value of ObjectIndex always start at index 0
If FALSE use input value of ObjectIndex
ObjectIndex = zero based index of object in the directory depends on GetNextIndex and IgnoreInputIndex
DataWritten = Actual size of the ObjectIndex ???
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtQueryDirectoryObject(
IN HANDLE DirObjHandle,
OUT POBJDIR_INFORMATION DirObjInformation,
IN ULONG BufferLength,
IN BOOLEAN GetNextIndex,
IN BOOLEAN IgnoreInputIndex,
IN OUT PULONG ObjectIndex,
OUT PULONG DataWritten OPTIONAL
);
/*
* FUNCTION: Query the interval and the clocksource for profiling
* ARGUMENTS:
Interval =
ClockSource =
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtQueryIntervalProfile(
OUT PULONG Interval,
OUT KPROFILE_SOURCE ClockSource
);
/*
* FUNCTION: Queries the information of a section object.
* ARGUMENTS:
* SectionHandle = Handle to the section link object
* SectionInformationClass = Index to a certain information structure
* SectionInformation (OUT)= Caller supplies storage for resulting information
* Length = Size of the supplied storage
* ResultLength = Data written
* RETURNS: Status
*
*/
NTSTATUS
STDCALL
NtQuerySection(
IN HANDLE SectionHandle,
IN CINT SectionInformationClass,
OUT PVOID SectionInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
/*
* FUNCTION: Queries the virtual memory information.
* ARGUMENTS:
ProcessHandle = Process owning the virtual address space
BaseAddress = Points to the page where the information is queried for.
* VirtualMemoryInformationClass = Index to a certain information structure
MemoryBasicInformation MEMORY_BASIC_INFORMATION
* VirtualMemoryInformation = caller supplies storage for the information structure
* Length = size of the structure
ResultLength = Data written
* RETURNS: Status
*
*/
NTSTATUS
STDCALL
NtQueryVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID Address,
IN IN CINT VirtualMemoryInformationClass,
OUT PVOID VirtualMemoryInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
/*
* FUNCTION: Raises a hard error (stops the system)
* ARGUMENTS:
* Status = Status code of the hard error
* Unknown2 = ??
* Unknown3 = ??
* Unknown4 = ??
* Unknown5 = ??
* Unknown6 = ??
* RETURNS: Status
*
*/
NTSTATUS
STDCALL
NtRaiseHardError(
IN NTSTATUS Status,
ULONG Unknown2,
ULONG Unknown3,
ULONG Unknown4,
ULONG Unknown5,
ULONG Unknown6
);
/*
* FUNCTION: Sets the information of a registry key.
* ARGUMENTS:
* KeyHandle = Handle to the registry key
* KeyInformationClass = Index to the a certain information structure.
Can be one of the following values:
* KeyWriteTimeInformation KEY_WRITE_TIME_INFORMATION
KeyInformation = Storage for the new information
* KeyInformationLength = Size of the information strucure
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtSetInformationKey(
IN HANDLE KeyHandle,
IN CINT KeyInformationClass,
IN PVOID KeyInformation,
IN ULONG KeyInformationLength
);
/*
* FUNCTION: Changes a set of object specific parameters
* ARGUMENTS:
* ObjectHandle =
* ObjectInformationClass = Index to the set of parameters to change.
ObjectBasicInformation
ObjectTypeInformation OBJECT_TYPE_INFORMATION
ObjectAllInformation
ObjectDataInformation OBJECT_DATA_INFORMATION
ObjectNameInformation OBJECT_NAME_INFORMATION
* ObjectInformation = Caller supplies storage for parameters to set.
* Length = Size of the storage supplied
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtSetInformationObject(
IN HANDLE ObjectHandle,
IN CINT ObjectInformationClass,
IN PVOID ObjectInformation,
IN ULONG Length
);
/*
* FUNCTION: Sets the characteristics of a timer
* ARGUMENTS:
* TimerHandle = Handle to the timer
* DueTime = Time before the timer becomes signalled for the first time.
* TimerApcRoutine = Completion routine can be called on time completion
* TimerContext = Argument to the completion routine
* Resume = Specifies if the timer should repeated after completing one cycle
* Period = Cycle of the timer
* REMARKS: This routine maps to the win32 SetWaitableTimer.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtSetTimer(
IN HANDLE TimerHandle,
IN PLARGE_INTEGER DueTime,
IN PTIMERAPCROUTINE TimerApcRoutine,
IN PVOID TimerContext,
IN BOOL WakeTimer,
IN ULONG Period OPTIONAL,
OUT PBOOLEAN PreviousState OPTIONAL
);
/*
* FUNCTION: Unloads a registry key.
* ARGUMENTS:
* KeyHandle = Handle to the registry key
* REMARK:
* This procedure maps to the win32 procedure RegUnloadKey
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtUnloadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes
);
/*
* FUNCTION: Unlocks a range of virtual memory.
* ARGUMENTS:
* ProcessHandle = Handle to the process
* BaseAddress = Lower boundary of the range of bytes to unlock.
* NumberOfBytesToUnlock = Offset to the upper boundary to unlock.
* NumberOfBytesUnlocked (OUT) = Number of bytes actually unlocked.
* REMARK:
This procedure maps to the win32 procedure VirtualUnlock
* RETURNS: Status [ STATUS_SUCCESS | STATUS_PAGE_WAS_ULOCKED ]
*/
NTSTATUS
STDCALL
NtUnlockVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToUnlock,
OUT PULONG NumberOfBytesUnlocked OPTIONAL
);
/*
* FUNCTION: Waits for multiple objects to become signalled.
* ARGUMENTS:
* Count = The number of objects
* Object = The array of object handles
* WaitType = Can be one of the values UserMode or KernelMode
* Alertable = If true the wait is alertable.
* Time = The maximum wait time.
* REMARKS:
* This function maps to the win32 WaitForMultipleObjectEx.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtWaitForMultipleObjects (
IN ULONG Count,
IN HANDLE Object[],
IN WAIT_TYPE WaitType,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Time
);
#ifndef __USE_W32API
/*
* FUNCTION: Continues a thread with the specified context
* ARGUMENTS:
* Context = Specifies the processor context
* IrqLevel = Specifies the Interupt Request Level to continue with. Can
* be PASSIVE_LEVEL or APC_LEVEL
* REMARKS
* NtContinue can be used to continue after an exception or apc.
* RETURNS: Status
*/
//FIXME This function might need another parameter
NTSTATUS STDCALL ZwContinue(IN PCONTEXT Context, IN CINT IrqLevel); NTSTATUS STDCALL ZwContinue(IN PCONTEXT Context, IN CINT IrqLevel);
/* /*
@ -4367,20 +4901,6 @@ ZwDuplicateObject(
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtAccessCheckAndAuditAlarm(
IN PUNICODE_STRING SubsystemName,
IN PHANDLE ObjectHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN ACCESS_MASK DesiredAccess,
IN PGENERIC_MAPPING GenericMapping,
IN BOOLEAN ObjectCreation,
OUT PULONG GrantedAccess,
OUT PBOOLEAN AccessStatus,
OUT PBOOLEAN GenerateOnClose
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwAccessCheckAndAuditAlarm( ZwAccessCheckAndAuditAlarm(
@ -4434,22 +4954,6 @@ ZwAllocateUuids(
PULONG Sequence PULONG Sequence
); );
/*
* FUNCTION: Cancels a timer
* ARGUMENTS:
* TimerHandle = Handle to the timer
* CurrentState = Specifies the state of the timer when cancelled.
* REMARKS:
* The arguments to this function map to the function CancelWaitableTimer.
* RETURNS: Status
*/
NTSTATUS
STDCALL
NtCancelTimer(
IN HANDLE TimerHandle,
OUT PBOOLEAN CurrentState OPTIONAL
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwCancelTimer( ZwCancelTimer(
@ -4468,15 +4972,6 @@ ZwCancelTimer(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtCreatePagingFile(
IN PUNICODE_STRING FileName,
IN PLARGE_INTEGER InitialSize,
IN PLARGE_INTEGER MaxiumSize,
IN ULONG Reserved
);
NTSTATUS
STDCALL
ZwCreatePagingFile( ZwCreatePagingFile(
IN PUNICODE_STRING FileName, IN PUNICODE_STRING FileName,
IN PLARGE_INTEGER InitialSize, IN PLARGE_INTEGER InitialSize,
@ -4501,19 +4996,6 @@ ZwCreatePagingFile(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtCreateThread(
OUT PHANDLE ThreadHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId,
IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack,
IN BOOLEAN CreateSuspended
);
NTSTATUS
STDCALL
ZwCreateThread( ZwCreateThread(
OUT PHANDLE ThreadHandle, OUT PHANDLE ThreadHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
@ -4582,14 +5064,6 @@ ZwFindAtom(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtFlushInstructionCache(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN UINT NumberOfBytesToFlush
);
NTSTATUS
STDCALL
ZwFlushInstructionCache( ZwFlushInstructionCache(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PVOID BaseAddress, IN PVOID BaseAddress,
@ -4609,15 +5083,6 @@ ZwFlushInstructionCache(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtFlushVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToFlush,
OUT PULONG NumberOfBytesFlushed OPTIONAL
);
NTSTATUS
STDCALL
ZwFlushVirtualMemory( ZwFlushVirtualMemory(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PVOID BaseAddress, IN PVOID BaseAddress,
@ -4633,12 +5098,6 @@ ZwFlushVirtualMemory(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtGetTickCount(
PULONG UpTime
);
NTSTATUS
STDCALL
ZwGetTickCount( ZwGetTickCount(
PULONG UpTime PULONG UpTime
); );
@ -4654,13 +5113,6 @@ ZwGetTickCount(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtLoadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes,
IN POBJECT_ATTRIBUTES FileObjectAttributes
);
NTSTATUS
STDCALL
ZwLoadKey( ZwLoadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes, IN POBJECT_ATTRIBUTES KeyObjectAttributes,
IN POBJECT_ATTRIBUTES FileObjectAttributes IN POBJECT_ATTRIBUTES FileObjectAttributes
@ -4679,15 +5131,6 @@ ZwLoadKey(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtLockVirtualMemory(
HANDLE ProcessHandle,
PVOID BaseAddress,
ULONG NumberOfBytesToLock,
PULONG NumberOfBytesLocked
);
NTSTATUS
STDCALL
ZwLockVirtualMemory( ZwLockVirtualMemory(
HANDLE ProcessHandle, HANDLE ProcessHandle,
PVOID BaseAddress, PVOID BaseAddress,
@ -4695,21 +5138,6 @@ ZwLockVirtualMemory(
PULONG NumberOfBytesLocked PULONG NumberOfBytesLocked
); );
NTSTATUS
STDCALL
NtOpenObjectAuditAlarm(
IN PUNICODE_STRING SubsystemName,
IN PVOID HandleId,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN HANDLE ClientToken,
IN ULONG DesiredAccess,
IN ULONG GrantedAccess,
IN PPRIVILEGE_SET Privileges,
IN BOOLEAN ObjectCreation,
IN BOOLEAN AccessGranted,
OUT PBOOLEAN GenerateOnClose
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwOpenObjectAuditAlarm( ZwOpenObjectAuditAlarm(
@ -4742,16 +5170,6 @@ ZwOpenObjectAuditAlarm(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtProtectVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToProtect,
IN ULONG NewAccessProtection,
OUT PULONG OldAccessProtection
);
NTSTATUS
STDCALL
ZwProtectVirtualMemory( ZwProtectVirtualMemory(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PVOID BaseAddress, IN PVOID BaseAddress,
@ -4794,18 +5212,6 @@ ZwQueryInformationAtom(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtQueryDirectoryObject(
IN HANDLE DirObjHandle,
OUT POBJDIR_INFORMATION DirObjInformation,
IN ULONG BufferLength,
IN BOOLEAN GetNextIndex,
IN BOOLEAN IgnoreInputIndex,
IN OUT PULONG ObjectIndex,
OUT PULONG DataWritten OPTIONAL
);
NTSTATUS
STDCALL
ZwQueryDirectoryObject( ZwQueryDirectoryObject(
IN HANDLE DirObjHandle, IN HANDLE DirObjHandle,
OUT POBJDIR_INFORMATION DirObjInformation, OUT POBJDIR_INFORMATION DirObjInformation,
@ -4887,13 +5293,6 @@ ZwQueryInformationProcess(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtQueryIntervalProfile(
OUT PULONG Interval,
OUT KPROFILE_SOURCE ClockSource
);
NTSTATUS
STDCALL
ZwQueryIntervalProfile( ZwQueryIntervalProfile(
OUT PULONG Interval, OUT PULONG Interval,
OUT KPROFILE_SOURCE ClockSource OUT KPROFILE_SOURCE ClockSource
@ -4961,17 +5360,6 @@ ZwQuerySecurityObject(
* *
*/ */
NTSTATUS
STDCALL
NtQueryVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID Address,
IN IN CINT VirtualMemoryInformationClass,
OUT PVOID VirtualMemoryInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwQueryVirtualMemory( ZwQueryVirtualMemory(
@ -4995,18 +5383,6 @@ ZwQueryVirtualMemory(
* RETURNS: Status * RETURNS: Status
* *
*/ */
NTSTATUS
STDCALL
NtRaiseHardError(
IN NTSTATUS Status,
ULONG Unknown2,
ULONG Unknown3,
ULONG Unknown4,
ULONG Unknown5,
ULONG Unknown6
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwRaiseHardError( ZwRaiseHardError(
@ -5032,15 +5408,6 @@ ZwRaiseHardError(
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtSetInformationKey(
IN HANDLE KeyHandle,
IN CINT KeyInformationClass,
IN PVOID KeyInformation,
IN ULONG KeyInformationLength
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwSetInformationKey( ZwSetInformationKey(
@ -5068,15 +5435,6 @@ ZwSetInformationKey(
* Length = Size of the storage supplied * Length = Size of the storage supplied
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtSetInformationObject(
IN HANDLE ObjectHandle,
IN CINT ObjectInformationClass,
IN PVOID ObjectInformation,
IN ULONG Length
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwSetInformationObject( ZwSetInformationObject(
@ -5137,18 +5495,6 @@ ZwSetInformationProcess(
* REMARKS: This routine maps to the win32 SetWaitableTimer. * REMARKS: This routine maps to the win32 SetWaitableTimer.
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtSetTimer(
IN HANDLE TimerHandle,
IN PLARGE_INTEGER DueTime,
IN PTIMERAPCROUTINE TimerApcRoutine,
IN PVOID TimerContext,
IN BOOL WakeTimer,
IN ULONG Period OPTIONAL,
OUT PBOOLEAN PreviousState OPTIONAL
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwSetTimer( ZwSetTimer(
@ -5171,12 +5517,6 @@ ZwSetTimer(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtUnloadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes
);
NTSTATUS
STDCALL
ZwUnloadKey( ZwUnloadKey(
IN POBJECT_ATTRIBUTES KeyObjectAttributes IN POBJECT_ATTRIBUTES KeyObjectAttributes
); );
@ -5191,16 +5531,7 @@ ZwUnloadKey(
* REMARK: * REMARK:
This procedure maps to the win32 procedure VirtualUnlock This procedure maps to the win32 procedure VirtualUnlock
* RETURNS: Status [ STATUS_SUCCESS | STATUS_PAGE_WAS_ULOCKED ] * RETURNS: Status [ STATUS_SUCCESS | STATUS_PAGE_WAS_ULOCKED ]
*/ */
NTSTATUS
STDCALL
NtUnlockVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN ULONG NumberOfBytesToUnlock,
OUT PULONG NumberOfBytesUnlocked OPTIONAL
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwUnlockVirtualMemory( ZwUnlockVirtualMemory(
@ -5224,16 +5555,6 @@ ZwUnlockVirtualMemory(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtWaitForMultipleObjects (
IN ULONG Count,
IN HANDLE Object[],
IN WAIT_TYPE WaitType,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Time
);
NTSTATUS
STDCALL
ZwWaitForMultipleObjects ( ZwWaitForMultipleObjects (
IN ULONG Count, IN ULONG Count,
IN HANDLE Object[], IN HANDLE Object[],
@ -5260,18 +5581,6 @@ ZwWaitForMultipleObjects (
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtCreateProfile(OUT PHANDLE ProfileHandle,
IN HANDLE ProcessHandle,
IN PVOID ImageBase,
IN ULONG ImageSize,
IN ULONG Granularity,
OUT PULONG Buffer,
IN ULONG ProfilingSize,
IN KPROFILE_SOURCE Source,
IN ULONG ProcessorMask);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwCreateProfile( ZwCreateProfile(
@ -5293,14 +5602,6 @@ ZwCreateProfile(
* Interval = Specifies the interval to wait. * Interval = Specifies the interval to wait.
* RETURNS: Status * RETURNS: Status
*/ */
NTSTATUS
STDCALL
NtDelayExecution(
IN ULONG Alertable,
IN TIME *Interval
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwDelayExecution( ZwDelayExecution(
@ -5317,13 +5618,6 @@ ZwDelayExecution(
*/ */
NTSTATUS NTSTATUS
STDCALL STDCALL
NtExtendSection(
IN HANDLE SectionHandle,
IN ULONG NewMaximumSize
);
NTSTATUS
STDCALL
ZwExtendSection( ZwExtendSection(
IN HANDLE SectionHandle, IN HANDLE SectionHandle,
IN ULONG NewMaximumSize IN ULONG NewMaximumSize
@ -5340,16 +5634,6 @@ ZwExtendSection(
* RETURNS: Status * RETURNS: Status
* *
*/ */
NTSTATUS
STDCALL
NtQuerySection(
IN HANDLE SectionHandle,
IN CINT SectionInformationClass,
OUT PVOID SectionInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwQuerySection( ZwQuerySection(

View file

@ -1,4 +1,4 @@
/* $Id: interlck.c,v 1.10 2003/07/10 06:27:13 royce Exp $ /* $Id: interlck.c,v 1.11 2003/07/12 10:24:45 chorns Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -16,6 +16,10 @@
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
#ifdef ExInterlockedDecrementLong
#undef ExInterlockedDecrementLong
#endif
/* /*
* @implemented * @implemented
*/ */
@ -40,6 +44,10 @@ ExInterlockedDecrementLong (PLONG Addend,
} }
#ifdef ExInterlockedExchangeUlong
#undef ExInterlockedExchangeUlong
#endif
/* /*
* @implemented * @implemented
*/ */
@ -65,10 +73,14 @@ ExInterlockedExchangeUlong (PULONG Target,
} }
#ifdef ExInterlockedAddUlong
#undef ExInterlockedAddUlong
#endif
/* /*
* @implemented * @implemented
*/ */
ULONG STDCALL ULONG FASTCALL
ExInterlockedAddUlong (PULONG Addend, ExInterlockedAddUlong (PULONG Addend,
ULONG Increment, ULONG Increment,
PKSPIN_LOCK Lock) PKSPIN_LOCK Lock)
@ -137,6 +149,10 @@ ExInterlockedAddLargeInteger (PLARGE_INTEGER Addend,
return oldval; return oldval;
} }
#ifdef ExInterlockedIncrementLong
#undef ExInterlockedIncrementLong
#endif
/* /*
* @implemented * @implemented
*/ */

View file

@ -1,4 +1,4 @@
/* $Id: list.c,v 1.9 2003/07/11 01:23:14 royce Exp $ /* $Id: list.c,v 1.10 2003/07/12 10:24:45 chorns Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -13,18 +13,22 @@
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#ifdef __USE_W32API
#define NONAMELESSUNION
#endif
#include <ddk/ntddk.h> #include <ddk/ntddk.h>
#define NDEBUG #define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
/* FUNCTIONS *************************************************************/ static KSPIN_LOCK ExpGlobalListLock = { 0, };
/* FUNCTIONS *************************************************************/
/* /*
* @implemented * @implemented
*/ */
PLIST_ENTRY STDCALL PLIST_ENTRY FASTCALL
ExInterlockedInsertHeadList(PLIST_ENTRY ListHead, ExInterlockedInsertHeadList(PLIST_ENTRY ListHead,
PLIST_ENTRY ListEntry, PLIST_ENTRY ListEntry,
PKSPIN_LOCK Lock) PKSPIN_LOCK Lock)
@ -59,7 +63,7 @@ ExInterlockedInsertHeadList(PLIST_ENTRY ListHead,
/* /*
* @implemented * @implemented
*/ */
PLIST_ENTRY STDCALL PLIST_ENTRY FASTCALL
ExInterlockedInsertTailList(PLIST_ENTRY ListHead, ExInterlockedInsertTailList(PLIST_ENTRY ListHead,
PLIST_ENTRY ListEntry, PLIST_ENTRY ListEntry,
PKSPIN_LOCK Lock) PKSPIN_LOCK Lock)
@ -94,7 +98,7 @@ ExInterlockedInsertTailList(PLIST_ENTRY ListHead,
/* /*
* @implemented * @implemented
*/ */
PLIST_ENTRY STDCALL PLIST_ENTRY FASTCALL
ExInterlockedRemoveHeadList(PLIST_ENTRY Head, ExInterlockedRemoveHeadList(PLIST_ENTRY Head,
PKSPIN_LOCK Lock) PKSPIN_LOCK Lock)
/* /*
@ -150,6 +154,10 @@ ExInterlockedRemoveTailList(PLIST_ENTRY Head,
} }
#ifdef ExInterlockedPopEntrySList
#undef ExInterlockedPopEntrySList
#endif
/* /*
* @implemented * @implemented
*/ */
@ -179,6 +187,10 @@ ExInterlockedPopEntrySList(IN PSLIST_HEADER ListHead,
} }
#ifdef ExInterlockedPushEntrySList
#undef ExInterlockedPushEntrySList
#endif
/* /*
* @implemented * @implemented
*/ */
@ -211,7 +223,7 @@ ExInterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
/* /*
* @implemented * @implemented
*/ */
PSINGLE_LIST_ENTRY STDCALL PSINGLE_LIST_ENTRY FASTCALL
ExInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead, ExInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
IN PKSPIN_LOCK Lock) IN PKSPIN_LOCK Lock)
/* /*
@ -235,7 +247,7 @@ ExInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
/* /*
* @implemented * @implemented
*/ */
PSINGLE_LIST_ENTRY STDCALL PSINGLE_LIST_ENTRY FASTCALL
ExInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead, ExInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
IN PSINGLE_LIST_ENTRY ListEntry, IN PSINGLE_LIST_ENTRY ListEntry,
IN PKSPIN_LOCK Lock) IN PKSPIN_LOCK Lock)
@ -410,4 +422,30 @@ ExfInterlockedRemoveHeadList(IN PLIST_ENTRY Head,
return(ret); return(ret);
} }
/*
* @implemented
*/
PSLIST_ENTRY
FASTCALL
InterlockedPopEntrySList(IN PSLIST_HEADER ListHead)
{
return (PSLIST_ENTRY) ExInterlockedPopEntrySList(ListHead,
&ExpGlobalListLock);
}
/*
* @implemented
*/
PSLIST_ENTRY
FASTCALL
InterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
IN PSLIST_ENTRY ListEntry)
{
return (PSLIST_ENTRY) ExInterlockedPushEntrySList(ListHead,
ListEntry,
&ExpGlobalListLock);
}
/* EOF */ /* EOF */

View file

@ -1,4 +1,4 @@
/* $Id: lookas.c,v 1.9 2003/07/11 01:23:14 royce Exp $ /* $Id: lookas.c,v 1.10 2003/07/12 10:24:45 chorns Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -6,6 +6,7 @@
* PURPOSE: Lookaside lists * PURPOSE: Lookaside lists
* PROGRAMMERS: David Welch (welch@mcmail.com) * PROGRAMMERS: David Welch (welch@mcmail.com)
* Casper S. Hornstrup (chorns@users.sourceforge.net) * Casper S. Hornstrup (chorns@users.sourceforge.net)
* TODO: Use InterlockedXxxEntrySList for binary compatibility
* UPDATE HISTORY: * UPDATE HISTORY:
* 22-05-1998 DW Created * 22-05-1998 DW Created
* 02-07-2001 CSH Implemented lookaside lists * 02-07-2001 CSH Implemented lookaside lists
@ -13,6 +14,9 @@
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#ifdef __USE_W32API
#define NONAMELESSUNION
#endif
#include <ddk/ntddk.h> #include <ddk/ntddk.h>
#include <internal/ex.h> #include <internal/ex.h>
#define NDEBUG #define NDEBUG
@ -28,8 +32,45 @@ KSPIN_LOCK ExpPagedLookasideListLock;
PLOOKASIDE_MINMAX_ROUTINE ExpMinMaxRoutine; PLOOKASIDE_MINMAX_ROUTINE ExpMinMaxRoutine;
#define LookasideListLock(l)(&(l->Obsoleted))
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
static
inline
PSINGLE_LIST_ENTRY
PopEntrySList(
PSLIST_HEADER ListHead
)
{
PSINGLE_LIST_ENTRY ListEntry;
ListEntry = ListHead->s.Next.Next;
if (ListEntry!=NULL)
{
ListHead->s.Next.Next = ListEntry->Next;
ListHead->s.Depth++;
ListHead->s.Sequence++;
}
return ListEntry;
}
static
inline
VOID
PushEntrySList (
PSLIST_HEADER ListHead,
PSINGLE_LIST_ENTRY Entry
)
{
Entry->Next = ListHead->s.Next.Next;
ListHead->s.Next.Next = Entry;
ListHead->s.Depth++;
ListHead->s.Sequence++;
}
VOID ExpDefaultMinMax( VOID ExpDefaultMinMax(
POOL_TYPE PoolType, POOL_TYPE PoolType,
ULONG Size, ULONG Size,
@ -102,12 +143,10 @@ ExpInitLookasideLists()
ExpMinMaxRoutine = ExpDefaultMinMax; ExpMinMaxRoutine = ExpDefaultMinMax;
} }
/*
* @implemented
*/
PVOID PVOID
STDCALL FASTCALL
ExAllocateFromPagedLookasideList ( ExiAllocateFromPagedLookasideList (
PPAGED_LOOKASIDE_LIST Lookaside PPAGED_LOOKASIDE_LIST Lookaside
) )
{ {
@ -118,11 +157,11 @@ ExAllocateFromPagedLookasideList (
Lookaside->TotalAllocates++; Lookaside->TotalAllocates++;
// ExAcquireFastMutex(&Lookaside->Lock); // ExAcquireFastMutex(LookasideListLock(Lookaside));
Entry = PopEntrySList(&Lookaside->ListHead); Entry = PopEntrySList(&Lookaside->ListHead);
// ExReleaseFastMutex(&Lookaside->Lock); // ExReleaseFastMutex(LookasideListLock(Lookaside));
if (Entry) if (Entry)
return Entry; return Entry;
@ -136,6 +175,7 @@ ExAllocateFromPagedLookasideList (
return Entry; return Entry;
} }
/* /*
* @implemented * @implemented
*/ */
@ -152,7 +192,7 @@ ExDeleteNPagedLookasideList (
for them */ for them */
while ((Entry = ExInterlockedPopEntrySList( while ((Entry = ExInterlockedPopEntrySList(
&Lookaside->ListHead, &Lookaside->ListHead,
&Lookaside->Lock)) != NULL) LookasideListLock(Lookaside))) != NULL)
{ {
(*Lookaside->Free)(Entry); (*Lookaside->Free)(Entry);
} }
@ -162,6 +202,7 @@ ExDeleteNPagedLookasideList (
KeReleaseSpinLock(&ExpNonPagedLookasideListLock, OldIrql); KeReleaseSpinLock(&ExpNonPagedLookasideListLock, OldIrql);
} }
/* /*
* @implemented * @implemented
*/ */
@ -179,13 +220,13 @@ ExDeletePagedLookasideList (
for (;;) for (;;)
{ {
// ExAcquireFastMutex(&Lookaside->Lock); // ExAcquireFastMutex(LookasideListLock(Lookaside));
Entry = PopEntrySList(&Lookaside->ListHead); Entry = PopEntrySList(&Lookaside->ListHead);
if (!Entry) if (!Entry)
break; break;
// ExReleaseFastMutex(&Lookaside->Lock); // ExReleaseFastMutex(LookasideListLock(Lookaside));
(*Lookaside->Free)(Entry); (*Lookaside->Free)(Entry);
} }
@ -195,31 +236,30 @@ ExDeletePagedLookasideList (
KeReleaseSpinLock(&ExpPagedLookasideListLock, OldIrql); KeReleaseSpinLock(&ExpPagedLookasideListLock, OldIrql);
} }
/*
* @implemented
*/
VOID VOID
STDCALL STDCALL
ExFreeToPagedLookasideList ( ExiFreeToPagedLookasideList (
PPAGED_LOOKASIDE_LIST Lookaside, PPAGED_LOOKASIDE_LIST Lookaside,
PVOID Entry PVOID Entry
) )
{ {
Lookaside->TotalFrees++; Lookaside->TotalFrees++;
if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->MinimumDepth) if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth)
{ {
Lookaside->FreeMisses++; Lookaside->FreeMisses++;
(*Lookaside->Free)(Entry); (*Lookaside->Free)(Entry);
} }
else else
{ {
// ExAcquireFastMutex(&Lookaside->Lock); // ExAcquireFastMutex(LookasideListLock(Lookaside));
PushEntrySList(&Lookaside->ListHead, (PSINGLE_LIST_ENTRY)Entry); PushEntrySList(&Lookaside->ListHead, (PSINGLE_LIST_ENTRY)Entry);
// ExReleaseFastMutex(&Lookaside->Lock); // ExReleaseFastMutex(LookasideListLock(Lookaside));
} }
} }
/* /*
* @implemented * @implemented
*/ */
@ -261,14 +301,14 @@ ExInitializeNPagedLookasideList (
Lookaside->Free = ExpDefaultFree; Lookaside->Free = ExpDefaultFree;
ExInitializeSListHead(&Lookaside->ListHead); ExInitializeSListHead(&Lookaside->ListHead);
KeInitializeSpinLock(&Lookaside->Lock); KeInitializeSpinLock(LookasideListLock(Lookaside));
/* Determine minimum and maximum number of entries on the lookaside list /* Determine minimum and maximum number of entries on the lookaside list
using the configured algorithm */ using the configured algorithm */
(*ExpMinMaxRoutine)( (*ExpMinMaxRoutine)(
NonPagedPool, NonPagedPool,
Lookaside->Size, Lookaside->Size,
&Lookaside->MinimumDepth, &Lookaside->Depth,
&Lookaside->MaximumDepth); &Lookaside->MaximumDepth);
ExInterlockedInsertTailList( ExInterlockedInsertTailList(
@ -277,6 +317,7 @@ ExInitializeNPagedLookasideList (
&ExpNonPagedLookasideListLock); &ExpNonPagedLookasideListLock);
} }
/* /*
* @implemented * @implemented
*/ */
@ -319,14 +360,14 @@ ExInitializePagedLookasideList (
Lookaside->Free = ExpDefaultFree; Lookaside->Free = ExpDefaultFree;
ExInitializeSListHead(&Lookaside->ListHead); ExInitializeSListHead(&Lookaside->ListHead);
//ExInitializeFastMutex(&Lookaside->Lock); //ExInitializeFastMutex(LookasideListLock(Lookaside));
/* Determine minimum and maximum number of entries on the lookaside list /* Determine minimum and maximum number of entries on the lookaside list
using the configured algorithm */ using the configured algorithm */
(*ExpMinMaxRoutine)( (*ExpMinMaxRoutine)(
PagedPool, PagedPool,
Lookaside->Size, Lookaside->Size,
&Lookaside->MinimumDepth, &Lookaside->Depth,
&Lookaside->MaximumDepth); &Lookaside->MaximumDepth);
ExInterlockedInsertTailList( ExInterlockedInsertTailList(

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: bug.c,v 1.32 2003/07/11 01:23:15 royce Exp $ /* $Id: bug.c,v 1.33 2003/07/12 10:24:45 chorns Exp $
* *
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/ke/bug.c * FILE: ntoskrnl/ke/bug.c
@ -30,7 +30,7 @@
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#include <ddk/ntddk.h> #include <roskrnl.h>
#include <internal/kd.h> #include <internal/kd.h>
#include <internal/ke.h> #include <internal/ke.h>
#include <internal/ps.h> #include <internal/ps.h>

View file

@ -1,4 +1,4 @@
; $Id: ntoskrnl.def,v 1.157 2003/06/20 16:22:56 ekohl Exp $ ; $Id: ntoskrnl.def,v 1.158 2003/07/12 10:24:45 chorns Exp $
; ;
; reactos/ntoskrnl/ntoskrnl.def ; reactos/ntoskrnl/ntoskrnl.def
; ;
@ -29,7 +29,7 @@ ExAcquireResourceExclusiveLite@8
ExAcquireResourceSharedLite@8 ExAcquireResourceSharedLite@8
ExAcquireSharedStarveExclusive@8 ExAcquireSharedStarveExclusive@8
ExAcquireSharedWaitForExclusive@8 ExAcquireSharedWaitForExclusive@8
ExAllocateFromPagedLookasideList@4 @ExAllocateFromPagedLookasideList@4
ExAllocatePool@8 ExAllocatePool@8
ExAllocatePoolWithQuota@8 ExAllocatePoolWithQuota@8
ExAllocatePoolWithQuotaTag@12 ExAllocatePoolWithQuotaTag@12
@ -56,19 +56,19 @@ ExInitializeResourceLite@4
ExInitializeZone@16 ExInitializeZone@16
ExInterlockedAddLargeInteger@16 ExInterlockedAddLargeInteger@16
@ExInterlockedAddLargeStatistic@8 @ExInterlockedAddLargeStatistic@8
ExInterlockedAddUlong@12 @ExInterlockedAddUlong@12
@ExInterlockedCompareExchange64@16 @ExInterlockedCompareExchange64@16
ExInterlockedDecrementLong@8 ExInterlockedDecrementLong@8
ExInterlockedExchangeUlong@12 ExInterlockedExchangeUlong@12
ExInterlockedExtendZone@16 ExInterlockedExtendZone@16
ExInterlockedIncrementLong@8 ExInterlockedIncrementLong@8
ExInterlockedInsertHeadList@12 @ExInterlockedInsertHeadList@12
ExInterlockedInsertTailList@12 @ExInterlockedInsertTailList@12
ExInterlockedPopEntryList@8 @ExInterlockedPopEntryList@8
@ExInterlockedPopEntrySList@8 @ExInterlockedPopEntrySList@8
ExInterlockedPushEntryList@12 @ExInterlockedPushEntryList@12
@ExInterlockedPushEntrySList@12 @ExInterlockedPushEntrySList@12
ExInterlockedRemoveHeadList@8 @ExInterlockedRemoveHeadList@8
ExIsProcessorFeaturePresent@4 ExIsProcessorFeaturePresent@4
ExIsResourceAcquiredExclusiveLite@4 ExIsResourceAcquiredExclusiveLite@4
ExIsResourceAcquiredSharedLite@4 ExIsResourceAcquiredSharedLite@4
@ -217,6 +217,7 @@ HalPrivateDispatchTable DATA
@InterlockedExchange@8 @InterlockedExchange@8
@InterlockedExchangeAdd@8 @InterlockedExchangeAdd@8
@InterlockedIncrement@4 @InterlockedIncrement@4
@InterlockedPopEntrySList@4
IoAcquireCancelSpinLock@4 IoAcquireCancelSpinLock@4
IoAcquireRemoveLockEx@20 IoAcquireRemoveLockEx@20
IoAcquireVpbSpinLock@4 IoAcquireVpbSpinLock@4

View file

@ -1,4 +1,4 @@
; $Id: ntoskrnl.edf,v 1.143 2003/06/20 16:22:56 ekohl Exp $ ; $Id: ntoskrnl.edf,v 1.144 2003/07/12 10:24:45 chorns Exp $
; ;
; reactos/ntoskrnl/ntoskrnl.def ; reactos/ntoskrnl/ntoskrnl.def
; ;
@ -29,7 +29,7 @@ ExAcquireResourceExclusiveLite=ExAcquireResourceExclusiveLite@8
ExAcquireResourceSharedLite=ExAcquireResourceSharedLite@8 ExAcquireResourceSharedLite=ExAcquireResourceSharedLite@8
ExAcquireSharedStarveExclusive=ExAcquireSharedStarveExclusive@8 ExAcquireSharedStarveExclusive=ExAcquireSharedStarveExclusive@8
ExAcquireSharedWaitForExclusive=ExAcquireSharedWaitForExclusive@8 ExAcquireSharedWaitForExclusive=ExAcquireSharedWaitForExclusive@8
ExAllocateFromPagedLookasideList=ExAllocateFromPagedLookasideList@4 @ExAllocateFromPagedLookasideList=@ExiAllocateFromPagedLookasideList@4
ExAllocatePool=ExAllocatePool@8 ExAllocatePool=ExAllocatePool@8
ExAllocatePoolWithQuota=ExAllocatePoolWithQuota@8 ExAllocatePoolWithQuota=ExAllocatePoolWithQuota@8
ExAllocatePoolWithQuotaTag=ExAllocatePoolWithQuotaTag@12 ExAllocatePoolWithQuotaTag=ExAllocatePoolWithQuotaTag@12
@ -45,7 +45,7 @@ ExDisableResourceBoostLite=ExDisableResourceBoostLite@4
ExEventObjectType DATA ExEventObjectType DATA
ExExtendZone=ExExtendZone@12 ExExtendZone=ExExtendZone@12
ExFreePool=ExFreePool@4 ExFreePool=ExFreePool@4
ExFreeToPagedLookasideList=ExFreeToPagedLookasideList@8 ExFreeToPagedLookasideList=ExiFreeToPagedLookasideList@8
ExGetExclusiveWaiterCount=ExGetExclusiveWaiterCount@4 ExGetExclusiveWaiterCount=ExGetExclusiveWaiterCount@4
ExGetPreviousMode=ExGetPreviousMode@0 ExGetPreviousMode=ExGetPreviousMode@0
ExGetSharedWaiterCount=ExGetSharedWaiterCount@4 ExGetSharedWaiterCount=ExGetSharedWaiterCount@4
@ -56,19 +56,19 @@ ExInitializeResourceLite=ExInitializeResourceLite@4
ExInitializeZone=ExInitializeZone@16 ExInitializeZone=ExInitializeZone@16
ExInterlockedAddLargeInteger=ExInterlockedAddLargeInteger@16 ExInterlockedAddLargeInteger=ExInterlockedAddLargeInteger@16
ExInterlockedAddLargeStatistic=@ExInterlockedAddLargeStatistic@8 ExInterlockedAddLargeStatistic=@ExInterlockedAddLargeStatistic@8
ExInterlockedAddUlong=ExInterlockedAddUlong@12 @ExInterlockedAddUlong=@ExInterlockedAddUlong@12
ExInterlockedCompareExchange64=@ExInterlockedCompareExchange64@16 ExInterlockedCompareExchange64=@ExInterlockedCompareExchange64@16
ExInterlockedDecrementLong=ExInterlockedDecrementLong@8 ExInterlockedDecrementLong=ExInterlockedDecrementLong@8
ExInterlockedExchangeUlong=ExInterlockedExchangeUlong@12 ExInterlockedExchangeUlong=ExInterlockedExchangeUlong@12
ExInterlockedExtendZone=ExInterlockedExtendZone@16 ExInterlockedExtendZone=ExInterlockedExtendZone@16
ExInterlockedIncrementLong=ExInterlockedIncrementLong@8 ExInterlockedIncrementLong=ExInterlockedIncrementLong@8
ExInterlockedInsertHeadList=ExInterlockedInsertHeadList@12 @ExInterlockedInsertHeadList=@ExInterlockedInsertHeadList@12
ExInterlockedInsertTailList=ExInterlockedInsertTailList@12 @ExInterlockedInsertTailList=@ExInterlockedInsertTailList@12
ExInterlockedPopEntryList=ExInterlockedPopEntryList@8 @ExInterlockedPopEntryList=@ExInterlockedPopEntryList@8
ExInterlockedPopEntrySList=@ExInterlockedPopEntrySList@8 @ExInterlockedPopEntrySList=@ExInterlockedPopEntrySList@8
ExInterlockedPushEntryList=ExInterlockedPushEntryList@12 @ExInterlockedPushEntryList=@ExInterlockedPushEntryList@12
ExInterlockedPushEntrySList=@ExInterlockedPushEntrySList@12 @ExInterlockedPushEntrySList=@ExInterlockedPushEntrySList@12
ExInterlockedRemoveHeadList=ExInterlockedRemoveHeadList@8 @ExInterlockedRemoveHeadList=@ExInterlockedRemoveHeadList@8
ExIsProcessorFeaturePresent=ExIsProcessorFeaturePresent@4 ExIsProcessorFeaturePresent=ExIsProcessorFeaturePresent@4
ExIsResourceAcquiredExclusiveLite=ExIsResourceAcquiredExclusiveLite@4 ExIsResourceAcquiredExclusiveLite=ExIsResourceAcquiredExclusiveLite@4
ExIsResourceAcquiredSharedLite=ExIsResourceAcquiredSharedLite@4 ExIsResourceAcquiredSharedLite=ExIsResourceAcquiredSharedLite@4
@ -217,6 +217,7 @@ InterlockedDecrement=@InterlockedDecrement@4
InterlockedExchange=@InterlockedExchange@8 InterlockedExchange=@InterlockedExchange@8
InterlockedExchangeAdd=@InterlockedExchangeAdd@8 InterlockedExchangeAdd=@InterlockedExchangeAdd@8
InterlockedIncrement=@InterlockedIncrement@4 InterlockedIncrement=@InterlockedIncrement@4
@InterlockedPopEntrySList=@InterlockedPopEntrySList@4
IoAcquireCancelSpinLock=IoAcquireCancelSpinLock@4 IoAcquireCancelSpinLock=IoAcquireCancelSpinLock@4
IoAcquireVpbSpinLock=IoAcquireVpbSpinLock@4 IoAcquireVpbSpinLock=IoAcquireVpbSpinLock@4
IoAdapterObjectType DATA IoAdapterObjectType DATA