📄 winnt4.h
字号:
/* * 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 __cplusplusextern "C" {#endiftypedef 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 PVOIDExAllocateFromZone( /*IN*/ PZONE_HEADER Zone){ if (Zone->FreeList.Next) Zone->FreeList.Next = Zone->FreeList.Next->Next; return (PVOID) Zone->FreeList.Next;}NTOSAPINTSTATUSDDKAPIExExtendZone( /*IN*/ PZONE_HEADER Zone, /*IN*/ PVOID Segment, /*IN*/ ULONG SegmentSize);static __inline PVOIDExFreeToZone( /*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;}NTOSAPINTSTATUSDDKAPIExInitializeZone( /*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))NTOSAPINTSTATUSDDKAPIExInterlockedExtendZone( /*IN*/ PZONE_HEADER Zone, /*IN*/ PVOID Segment, /*IN*/ ULONG SegmentSize, /*IN*/ PKSPIN_LOCK Lock);NTOSAPIPVOIDDDKAPIExInterlockedFreeToZone( /*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)NTOSAPIVOIDDDKAPIExQueueWorkItem( /*IN*/ PWORK_QUEUE_ITEM WorkItem, /*IN*/ WORK_QUEUE_TYPE QueueType);NTOSAPIBOOLEANDDKAPIExIsObjectInFirstZoneSegment( /*IN*/ PZONE_HEADER Zone, /*IN*/ PVOID Object);NTOSAPIVOIDDDKAPIExReleaseResource( /*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 ExReleaseResourceForThreadLiteNTOSAPIINTERLOCKED_RESULTDDKAPIExInterlockedDecrementLong( /*IN*/ PLONG Addend, /*IN*/ PKSPIN_LOCK Lock);NTOSAPIULONGDDKAPIExInterlockedExchangeUlong( /*IN*/ PULONG Target, /*IN*/ ULONG Value, /*IN*/ PKSPIN_LOCK Lock);NTOSAPIINTERLOCKED_RESULTDDKAPIExInterlockedIncrementLong( /*IN*/ PLONG Addend, /*IN*/ PKSPIN_LOCK Lock);NTOSAPIPVOIDDDKAPIHalAllocateCommonBuffer( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ ULONG Length, /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, /*IN*/ BOOLEAN CacheEnabled);NTOSAPINTSTATUSDDKAPIHalAssignSlotResources( /*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);NTOSAPIVOIDDDKAPIHalFreeCommonBuffer( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ ULONG Length, /*IN*/ PHYSICAL_ADDRESS LogicalAddress, /*IN*/ PVOID VirtualAddress, /*IN*/ BOOLEAN CacheEnabled);NTOSAPIPADAPTER_OBJECTDDKAPIHalGetAdapter( /*IN*/ PDEVICE_DESCRIPTION DeviceDescription, /*IN OUT*/ PULONG NumberOfMapRegisters);NTOSAPIULONGDDKAPIHalGetBusData( /*IN*/ BUS_DATA_TYPE BusDataType, /*IN*/ ULONG BusNumber, /*IN*/ ULONG SlotNumber, /*IN*/ PVOID Buffer, /*IN*/ ULONG Length);NTOSAPIULONGDDKAPIHalGetBusDataByOffset( /*IN*/ BUS_DATA_TYPE BusDataType, /*IN*/ ULONG BusNumber, /*IN*/ ULONG SlotNumber, /*IN*/ PVOID Buffer, /*IN*/ ULONG Offset, /*IN*/ ULONG Length);NTOSAPIULONGDDKAPIHalGetDmaAlignmentRequirement( VOID);NTOSAPIULONGDDKAPIHalGetInterruptVector( /*IN*/ INTERFACE_TYPE InterfaceType, /*IN*/ ULONG BusNumber, /*IN*/ ULONG BusInterruptLevel, /*IN*/ ULONG BusInterruptVector, /*OUT*/ PKIRQL Irql, /*OUT*/ PKAFFINITY Affinity);NTOSAPIULONGDDKAPIHalReadDmaCounter( /*IN*/ PADAPTER_OBJECT AdapterObject);NTOSAPIULONGDDKAPIHalSetBusData( /*IN*/ BUS_DATA_TYPE BusDataType, /*IN*/ ULONG BusNumber, /*IN*/ ULONG SlotNumber, /*IN*/ PVOID Buffer, /*IN*/ ULONG Length);NTOSAPIULONGDDKAPIHalSetBusDataByOffset( /*IN*/ BUS_DATA_TYPE BusDataType, /*IN*/ ULONG BusNumber, /*IN*/ ULONG SlotNumber, /*IN*/ PVOID Buffer, /*IN*/ ULONG Offset, /*IN*/ ULONG Length);NTOSAPIBOOLEANDDKAPIHalTranslateBusAddress( /*IN*/ INTERFACE_TYPE InterfaceType, /*IN*/ ULONG BusNumber, /*IN*/ PHYSICAL_ADDRESS BusAddress, /*IN OUT*/ PULONG AddressSpace, /*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress);NTOSAPINTSTATUSDDKAPIIoAllocateAdapterChannel( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ ULONG NumberOfMapRegisters, /*IN*/ PDRIVER_CONTROL ExecutionRoutine, /*IN*/ PVOID Context);NTOSAPINTSTATUSDDKAPIIoAssignResources( /*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);NTOSAPINTSTATUSDDKAPIIoAttachDeviceByPointer( /*IN*/ PDEVICE_OBJECT SourceDevice, /*IN*/ PDEVICE_OBJECT TargetDevice);NTOSAPIBOOLEANDDKAPIIoFlushAdapterBuffers( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ PMDL Mdl, /*IN*/ PVOID MapRegisterBase, /*IN*/ PVOID CurrentVa, /*IN*/ ULONG Length, /*IN*/ BOOLEAN WriteToDevice);NTOSAPIVOIDDDKAPIIoFreeAdapterChannel( /*IN*/ PADAPTER_OBJECT AdapterObject);NTOSAPIVOIDDDKAPIIoFreeMapRegisters( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ PVOID MapRegisterBase, /*IN*/ ULONG NumberOfMapRegisters);NTOSAPIPHYSICAL_ADDRESSDDKAPIIoMapTransfer( /*IN*/ PADAPTER_OBJECT AdapterObject, /*IN*/ PMDL Mdl, /*IN*/ PVOID MapRegisterBase, /*IN*/ PVOID CurrentVa, /*IN OUT*/ PULONG Length, /*IN*/ BOOLEAN WriteToDevice);NTOSAPIPMDLDDKAPIMmCreateMdl( /*IN*/ PMDL MemoryDescriptorList /*OPTIONAL*/, /*IN*/ PVOID Base, /*IN*/ SIZE_T Length);NTOSAPIBOOLEANDDKAPIMmIsNonPagedSystemAddressValid( /*IN*/ PVOID VirtualAddress);NTOSAPILARGE_INTEGERDDKAPIRtlEnlargedIntegerMultiply( /*IN*/ LONG Multiplicand, /*IN*/ LONG Multiplier);NTOSAPIULONGDDKAPIRtlEnlargedUnsignedDivide( /*IN*/ ULARGE_INTEGER Dividend, /*IN*/ ULONG Divisor, /*IN OUT*/ PULONG Remainder);NTOSAPILARGE_INTEGERDDKAPIRtlEnlargedUnsignedMultiply( /*IN*/ ULONG Multiplicand, /*IN*/ ULONG Multiplier);NTOSAPILARGE_INTEGERDDKAPIRtlExtendedIntegerMultiply( /*IN*/ LARGE_INTEGER Multiplicand, /*IN*/ LONG Multiplier);NTOSAPILARGE_INTEGERDDKAPIRtlExtendedLargeIntegerDivide( /*IN*/ LARGE_INTEGER Dividend, /*IN*/ ULONG Divisor, /*IN OUT*/ PULONG Remainder);NTOSAPILARGE_INTEGERDDKAPIRtlExtendedMagicDivide( /*IN*/ LARGE_INTEGER Dividend, /*IN*/ LARGE_INTEGER MagicDivisor, /*IN*/ CCHAR ShiftCount);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerAdd( /*IN*/ LARGE_INTEGER Addend1, /*IN*/ LARGE_INTEGER Addend2);NTOSAPIVOIDDDKAPIRtlLargeIntegerAnd( /*IN OUT*/ LARGE_INTEGER Result, /*IN*/ LARGE_INTEGER Source, /*IN*/ LARGE_INTEGER Mask);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerArithmeticShift( /*IN*/ LARGE_INTEGER LargeInteger, /*IN*/ CCHAR ShiftCount);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerDivide( /*IN*/ LARGE_INTEGER Dividend, /*IN*/ LARGE_INTEGER Divisor, /*IN OUT*/ PLARGE_INTEGER Remainder);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerEqualTo( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerEqualToZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerGreaterOrEqualToZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerGreaterThan( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerGreaterThanOrEqualTo( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerGreaterThanZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerLessOrEqualToZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerLessThan( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerLessThanOrEqualTo( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerLessThanZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerNegate( /*IN*/ LARGE_INTEGER Subtrahend);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerNotEqualTo( /*IN*/ LARGE_INTEGER Operand1, /*IN*/ LARGE_INTEGER Operand2);NTOSAPIBOOLEANDDKAPIRtlLargeIntegerNotEqualToZero( /*IN*/ LARGE_INTEGER Operand);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerShiftLeft( /*IN*/ LARGE_INTEGER LargeInteger, /*IN*/ CCHAR ShiftCount);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerShiftRight( /*IN*/ LARGE_INTEGER LargeInteger, /*IN*/ CCHAR ShiftCount);NTOSAPILARGE_INTEGERDDKAPIRtlLargeIntegerSubtract( /*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_NTOSAPIINTERLOCKED_RESULTDDKAPIExi386InterlockedIncrementLong( /*IN*/ PLONG Addend);NTOSAPIINTERLOCKED_RESULTDDKFASTAPIExfi386InterlockedIncrementLong( /*IN*/ PLONG Addend);NTOSAPIINTERLOCKED_RESULTDDKAPIExi386InterlockedDecrementLong( /*IN*/ PLONG Addend);NTOSAPIINTERLOCKED_RESULTDDKFASTAPIExfi386InterlockedDecrementLong( /*IN*/ PLONG Addend);NTOSAPIULONGDDKAPIExi386InterlockedExchangeUlong( /*IN*/ PULONG Target, /*IN*/ ULONG Value);NTOSAPIULONGDDKFASTAPIExfi386InterlockedExchangeUlong( /*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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -