624 lines
12 KiB
C
624 lines
12 KiB
C
|
/*
|
||
|
* winnt4.h
|
||
|
*
|
||
|
* Definitions only used in Windows NT 4.0 and earlier versions
|
||
|
*
|
||
|
* This file is part of the w32api package.
|
||
|
*
|
||
|
* Contributors:
|
||
|
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||
|
*
|
||
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||
|
*
|
||
|
* This source code is offered for use in the public domain. You may
|
||
|
* use, modify or distribute it freely.
|
||
|
*
|
||
|
* This code is distributed in the hope that it will be useful but
|
||
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||
|
* DISCLAIMED. This includes but is not limited to warranties of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef __WINNT4_H
|
||
|
#define __WINNT4_H
|
||
|
|
||
|
#if __GNUC__ >=3
|
||
|
#pragma GCC system_header
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
typedef struct _ZONE_SEGMENT_HEADER {
|
||
|
SINGLE_LIST_ENTRY SegmentList;
|
||
|
PVOID Reserved;
|
||
|
} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
|
||
|
|
||
|
typedef struct _ZONE_HEADER {
|
||
|
SINGLE_LIST_ENTRY FreeList;
|
||
|
SINGLE_LIST_ENTRY SegmentList;
|
||
|
ULONG BlockSize;
|
||
|
ULONG TotalSegmentSize;
|
||
|
} ZONE_HEADER, *PZONE_HEADER;
|
||
|
|
||
|
static __inline PVOID
|
||
|
ExAllocateFromZone(
|
||
|
/*IN*/ PZONE_HEADER Zone)
|
||
|
{
|
||
|
if (Zone->FreeList.Next)
|
||
|
Zone->FreeList.Next = Zone->FreeList.Next->Next;
|
||
|
return (PVOID) Zone->FreeList.Next;
|
||
|
}
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
ExExtendZone(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ PVOID Segment,
|
||
|
/*IN*/ ULONG SegmentSize);
|
||
|
|
||
|
static __inline PVOID
|
||
|
ExFreeToZone(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ PVOID Block)
|
||
|
{
|
||
|
((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
|
||
|
Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
|
||
|
return ((PSINGLE_LIST_ENTRY) Block)->Next;
|
||
|
}
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
ExInitializeZone(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ ULONG BlockSize,
|
||
|
/*IN*/ PVOID InitialSegment,
|
||
|
/*IN*/ ULONG InitialSegmentSize);
|
||
|
|
||
|
/*
|
||
|
* PVOID
|
||
|
* ExInterlockedAllocateFromZone(
|
||
|
* IN PZONE_HEADER Zone,
|
||
|
* IN PKSPIN_LOCK Lock)
|
||
|
*/
|
||
|
#define ExInterlockedAllocateFromZone(Zone, \
|
||
|
Lock) \
|
||
|
((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
ExInterlockedExtendZone(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ PVOID Segment,
|
||
|
/*IN*/ ULONG SegmentSize,
|
||
|
/*IN*/ PKSPIN_LOCK Lock);
|
||
|
|
||
|
NTOSAPI
|
||
|
PVOID
|
||
|
DDKAPI
|
||
|
ExInterlockedFreeToZone(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ PVOID Block,
|
||
|
/*IN*/ PKSPIN_LOCK Lock);
|
||
|
|
||
|
/*
|
||
|
* VOID
|
||
|
* ExInitializeWorkItem(
|
||
|
* IN PWORK_QUEUE_ITEM Item,
|
||
|
* IN PWORKER_THREAD_ROUTINE Routine,
|
||
|
* IN PVOID Context)
|
||
|
*/
|
||
|
#define ExInitializeWorkItem(Item, \
|
||
|
Routine, \
|
||
|
Context) \
|
||
|
{ \
|
||
|
(Item)->WorkerRoutine = Routine; \
|
||
|
(Item)->Parameter = Context; \
|
||
|
(Item)->List.Flink = NULL; \
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* BOOLEAN
|
||
|
* ExIsFullZone(
|
||
|
* IN PZONE_HEADER Zone)
|
||
|
*/
|
||
|
#define ExIsFullZone(Zone) \
|
||
|
((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
ExQueueWorkItem(
|
||
|
/*IN*/ PWORK_QUEUE_ITEM WorkItem,
|
||
|
/*IN*/ WORK_QUEUE_TYPE QueueType);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
ExIsObjectInFirstZoneSegment(
|
||
|
/*IN*/ PZONE_HEADER Zone,
|
||
|
/*IN*/ PVOID Object);
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
ExReleaseResource(
|
||
|
/*IN*/ PERESOURCE Resource);
|
||
|
|
||
|
#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
|
||
|
#define ExAcquireResourceShared ExAcquireResourceSharedLite
|
||
|
#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
|
||
|
#define ExDeleteResource ExDeleteResourceLite
|
||
|
#define ExInitializeResource ExInitializeResourceLite
|
||
|
#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
|
||
|
#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
|
||
|
#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
|
||
|
#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKAPI
|
||
|
ExInterlockedDecrementLong(
|
||
|
/*IN*/ PLONG Addend,
|
||
|
/*IN*/ PKSPIN_LOCK Lock);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
ExInterlockedExchangeUlong(
|
||
|
/*IN*/ PULONG Target,
|
||
|
/*IN*/ ULONG Value,
|
||
|
/*IN*/ PKSPIN_LOCK Lock);
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKAPI
|
||
|
ExInterlockedIncrementLong(
|
||
|
/*IN*/ PLONG Addend,
|
||
|
/*IN*/ PKSPIN_LOCK Lock);
|
||
|
|
||
|
NTOSAPI
|
||
|
PVOID
|
||
|
DDKAPI
|
||
|
HalAllocateCommonBuffer(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ ULONG Length,
|
||
|
/*OUT*/ PPHYSICAL_ADDRESS LogicalAddress,
|
||
|
/*IN*/ BOOLEAN CacheEnabled);
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
HalAssignSlotResources(
|
||
|
/*IN*/ PUNICODE_STRING RegistryPath,
|
||
|
/*IN*/ PUNICODE_STRING DriverClassName,
|
||
|
/*IN*/ PDRIVER_OBJECT DriverObject,
|
||
|
/*IN*/ PDEVICE_OBJECT DeviceObject,
|
||
|
/*IN*/ INTERFACE_TYPE BusType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG SlotNumber,
|
||
|
/*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources);
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
HalFreeCommonBuffer(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ ULONG Length,
|
||
|
/*IN*/ PHYSICAL_ADDRESS LogicalAddress,
|
||
|
/*IN*/ PVOID VirtualAddress,
|
||
|
/*IN*/ BOOLEAN CacheEnabled);
|
||
|
|
||
|
NTOSAPI
|
||
|
PADAPTER_OBJECT
|
||
|
DDKAPI
|
||
|
HalGetAdapter(
|
||
|
/*IN*/ PDEVICE_DESCRIPTION DeviceDescription,
|
||
|
/*IN OUT*/ PULONG NumberOfMapRegisters);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalGetBusData(
|
||
|
/*IN*/ BUS_DATA_TYPE BusDataType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG SlotNumber,
|
||
|
/*IN*/ PVOID Buffer,
|
||
|
/*IN*/ ULONG Length);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalGetBusDataByOffset(
|
||
|
/*IN*/ BUS_DATA_TYPE BusDataType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG SlotNumber,
|
||
|
/*IN*/ PVOID Buffer,
|
||
|
/*IN*/ ULONG Offset,
|
||
|
/*IN*/ ULONG Length);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalGetDmaAlignmentRequirement(
|
||
|
VOID);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalGetInterruptVector(
|
||
|
/*IN*/ INTERFACE_TYPE InterfaceType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG BusInterruptLevel,
|
||
|
/*IN*/ ULONG BusInterruptVector,
|
||
|
/*OUT*/ PKIRQL Irql,
|
||
|
/*OUT*/ PKAFFINITY Affinity);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalReadDmaCounter(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalSetBusData(
|
||
|
/*IN*/ BUS_DATA_TYPE BusDataType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG SlotNumber,
|
||
|
/*IN*/ PVOID Buffer,
|
||
|
/*IN*/ ULONG Length);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
HalSetBusDataByOffset(
|
||
|
/*IN*/ BUS_DATA_TYPE BusDataType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ ULONG SlotNumber,
|
||
|
/*IN*/ PVOID Buffer,
|
||
|
/*IN*/ ULONG Offset,
|
||
|
/*IN*/ ULONG Length);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
HalTranslateBusAddress(
|
||
|
/*IN*/ INTERFACE_TYPE InterfaceType,
|
||
|
/*IN*/ ULONG BusNumber,
|
||
|
/*IN*/ PHYSICAL_ADDRESS BusAddress,
|
||
|
/*IN OUT*/ PULONG AddressSpace,
|
||
|
/*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress);
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
IoAllocateAdapterChannel(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ PDEVICE_OBJECT DeviceObject,
|
||
|
/*IN*/ ULONG NumberOfMapRegisters,
|
||
|
/*IN*/ PDRIVER_CONTROL ExecutionRoutine,
|
||
|
/*IN*/ PVOID Context);
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
IoAssignResources(
|
||
|
/*IN*/ PUNICODE_STRING RegistryPath,
|
||
|
/*IN*/ PUNICODE_STRING DriverClassName /*OPTIONAL*/,
|
||
|
/*IN*/ PDRIVER_OBJECT DriverObject,
|
||
|
/*IN*/ PDEVICE_OBJECT DeviceObject /*OPTIONAL*/,
|
||
|
/*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources,
|
||
|
/*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources);
|
||
|
|
||
|
NTOSAPI
|
||
|
NTSTATUS
|
||
|
DDKAPI
|
||
|
IoAttachDeviceByPointer(
|
||
|
/*IN*/ PDEVICE_OBJECT SourceDevice,
|
||
|
/*IN*/ PDEVICE_OBJECT TargetDevice);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
IoFlushAdapterBuffers(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ PMDL Mdl,
|
||
|
/*IN*/ PVOID MapRegisterBase,
|
||
|
/*IN*/ PVOID CurrentVa,
|
||
|
/*IN*/ ULONG Length,
|
||
|
/*IN*/ BOOLEAN WriteToDevice);
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
IoFreeAdapterChannel(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject);
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
IoFreeMapRegisters(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ PVOID MapRegisterBase,
|
||
|
/*IN*/ ULONG NumberOfMapRegisters);
|
||
|
|
||
|
NTOSAPI
|
||
|
PHYSICAL_ADDRESS
|
||
|
DDKAPI
|
||
|
IoMapTransfer(
|
||
|
/*IN*/ PADAPTER_OBJECT AdapterObject,
|
||
|
/*IN*/ PMDL Mdl,
|
||
|
/*IN*/ PVOID MapRegisterBase,
|
||
|
/*IN*/ PVOID CurrentVa,
|
||
|
/*IN OUT*/ PULONG Length,
|
||
|
/*IN*/ BOOLEAN WriteToDevice);
|
||
|
|
||
|
NTOSAPI
|
||
|
PMDL
|
||
|
DDKAPI
|
||
|
MmCreateMdl(
|
||
|
/*IN*/ PMDL MemoryDescriptorList /*OPTIONAL*/,
|
||
|
/*IN*/ PVOID Base,
|
||
|
/*IN*/ SIZE_T Length);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
MmIsNonPagedSystemAddressValid(
|
||
|
/*IN*/ PVOID VirtualAddress);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlEnlargedIntegerMultiply(
|
||
|
/*IN*/ LONG Multiplicand,
|
||
|
/*IN*/ LONG Multiplier);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
RtlEnlargedUnsignedDivide(
|
||
|
/*IN*/ ULARGE_INTEGER Dividend,
|
||
|
/*IN*/ ULONG Divisor,
|
||
|
/*IN OUT*/ PULONG Remainder);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlEnlargedUnsignedMultiply(
|
||
|
/*IN*/ ULONG Multiplicand,
|
||
|
/*IN*/ ULONG Multiplier);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlExtendedIntegerMultiply(
|
||
|
/*IN*/ LARGE_INTEGER Multiplicand,
|
||
|
/*IN*/ LONG Multiplier);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlExtendedLargeIntegerDivide(
|
||
|
/*IN*/ LARGE_INTEGER Dividend,
|
||
|
/*IN*/ ULONG Divisor,
|
||
|
/*IN OUT*/ PULONG Remainder);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlExtendedMagicDivide(
|
||
|
/*IN*/ LARGE_INTEGER Dividend,
|
||
|
/*IN*/ LARGE_INTEGER MagicDivisor,
|
||
|
/*IN*/ CCHAR ShiftCount);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerAdd(
|
||
|
/*IN*/ LARGE_INTEGER Addend1,
|
||
|
/*IN*/ LARGE_INTEGER Addend2);
|
||
|
|
||
|
NTOSAPI
|
||
|
VOID
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerAnd(
|
||
|
/*IN OUT*/ LARGE_INTEGER Result,
|
||
|
/*IN*/ LARGE_INTEGER Source,
|
||
|
/*IN*/ LARGE_INTEGER Mask);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerArithmeticShift(
|
||
|
/*IN*/ LARGE_INTEGER LargeInteger,
|
||
|
/*IN*/ CCHAR ShiftCount);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerDivide(
|
||
|
/*IN*/ LARGE_INTEGER Dividend,
|
||
|
/*IN*/ LARGE_INTEGER Divisor,
|
||
|
/*IN OUT*/ PLARGE_INTEGER Remainder);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerEqualTo(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerEqualToZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerGreaterOrEqualToZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerGreaterThan(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerGreaterThanOrEqualTo(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerGreaterThanZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerLessOrEqualToZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerLessThan(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerLessThanOrEqualTo(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerLessThanZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerNegate(
|
||
|
/*IN*/ LARGE_INTEGER Subtrahend);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerNotEqualTo(
|
||
|
/*IN*/ LARGE_INTEGER Operand1,
|
||
|
/*IN*/ LARGE_INTEGER Operand2);
|
||
|
|
||
|
NTOSAPI
|
||
|
BOOLEAN
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerNotEqualToZero(
|
||
|
/*IN*/ LARGE_INTEGER Operand);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerShiftLeft(
|
||
|
/*IN*/ LARGE_INTEGER LargeInteger,
|
||
|
/*IN*/ CCHAR ShiftCount);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerShiftRight(
|
||
|
/*IN*/ LARGE_INTEGER LargeInteger,
|
||
|
/*IN*/ CCHAR ShiftCount);
|
||
|
|
||
|
NTOSAPI
|
||
|
LARGE_INTEGER
|
||
|
DDKAPI
|
||
|
RtlLargeIntegerSubtract(
|
||
|
/*IN*/ LARGE_INTEGER Minuend,
|
||
|
/*IN*/ LARGE_INTEGER Subtrahend);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* ULONG
|
||
|
* COMPUTE_PAGES_SPANNED(
|
||
|
* IN PVOID Va,
|
||
|
* IN ULONG Size)
|
||
|
*/
|
||
|
#define COMPUTE_PAGES_SPANNED(Va, \
|
||
|
Size) \
|
||
|
(ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size))
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Architecture specific functions
|
||
|
*/
|
||
|
|
||
|
#ifdef _X86_
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKAPI
|
||
|
Exi386InterlockedIncrementLong(
|
||
|
/*IN*/ PLONG Addend);
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKFASTAPI
|
||
|
Exfi386InterlockedIncrementLong(
|
||
|
/*IN*/ PLONG Addend);
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKAPI
|
||
|
Exi386InterlockedDecrementLong(
|
||
|
/*IN*/ PLONG Addend);
|
||
|
|
||
|
NTOSAPI
|
||
|
INTERLOCKED_RESULT
|
||
|
DDKFASTAPI
|
||
|
Exfi386InterlockedDecrementLong(
|
||
|
/*IN*/ PLONG Addend);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKAPI
|
||
|
Exi386InterlockedExchangeUlong(
|
||
|
/*IN*/ PULONG Target,
|
||
|
/*IN*/ ULONG Value);
|
||
|
|
||
|
NTOSAPI
|
||
|
ULONG
|
||
|
DDKFASTAPI
|
||
|
Exfi386InterlockedExchangeUlong(
|
||
|
/*IN*/ PULONG Target,
|
||
|
/*IN*/ ULONG Value);
|
||
|
|
||
|
#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
|
||
|
#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
|
||
|
#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
|
||
|
|
||
|
#endif /* _X86_ */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __WINNT4_H */
|