Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
winnt4.h
00001 /* 00002 * winnt4.h 00003 * 00004 * Definitions only used in Windows NT 4.0 and earlier versions 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __WINNT4_H 00024 #define __WINNT4_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 typedef struct _ZONE_SEGMENT_HEADER { 00035 SINGLE_LIST_ENTRY SegmentList; 00036 PVOID Reserved; 00037 } ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; 00038 00039 typedef struct _ZONE_HEADER { 00040 SINGLE_LIST_ENTRY FreeList; 00041 SINGLE_LIST_ENTRY SegmentList; 00042 ULONG BlockSize; 00043 ULONG TotalSegmentSize; 00044 } ZONE_HEADER, *PZONE_HEADER; 00045 00046 static __inline PVOID 00047 ExAllocateFromZone( 00048 /*IN*/ PZONE_HEADER Zone) 00049 { 00050 if (Zone->FreeList.Next) 00051 Zone->FreeList.Next = Zone->FreeList.Next->Next; 00052 return (PVOID) Zone->FreeList.Next; 00053 } 00054 00055 NTOSAPI 00056 NTSTATUS 00057 DDKAPI 00058 ExExtendZone( 00059 /*IN*/ PZONE_HEADER Zone, 00060 /*IN*/ PVOID Segment, 00061 /*IN*/ ULONG SegmentSize); 00062 00063 static __inline PVOID 00064 ExFreeToZone( 00065 /*IN*/ PZONE_HEADER Zone, 00066 /*IN*/ PVOID Block) 00067 { 00068 ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; 00069 Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); 00070 return ((PSINGLE_LIST_ENTRY) Block)->Next; 00071 } 00072 00073 NTOSAPI 00074 NTSTATUS 00075 DDKAPI 00076 ExInitializeZone( 00077 /*IN*/ PZONE_HEADER Zone, 00078 /*IN*/ ULONG BlockSize, 00079 /*IN*/ PVOID InitialSegment, 00080 /*IN*/ ULONG InitialSegmentSize); 00081 00082 /* 00083 * PVOID 00084 * ExInterlockedAllocateFromZone( 00085 * IN PZONE_HEADER Zone, 00086 * IN PKSPIN_LOCK Lock) 00087 */ 00088 #define ExInterlockedAllocateFromZone(Zone, \ 00089 Lock) \ 00090 ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) 00091 00092 NTOSAPI 00093 NTSTATUS 00094 DDKAPI 00095 ExInterlockedExtendZone( 00096 /*IN*/ PZONE_HEADER Zone, 00097 /*IN*/ PVOID Segment, 00098 /*IN*/ ULONG SegmentSize, 00099 /*IN*/ PKSPIN_LOCK Lock); 00100 00101 NTOSAPI 00102 PVOID 00103 DDKAPI 00104 ExInterlockedFreeToZone( 00105 /*IN*/ PZONE_HEADER Zone, 00106 /*IN*/ PVOID Block, 00107 /*IN*/ PKSPIN_LOCK Lock); 00108 00109 /* 00110 * VOID 00111 * ExInitializeWorkItem( 00112 * IN PWORK_QUEUE_ITEM Item, 00113 * IN PWORKER_THREAD_ROUTINE Routine, 00114 * IN PVOID Context) 00115 */ 00116 #define ExInitializeWorkItem(Item, \ 00117 Routine, \ 00118 Context) \ 00119 { \ 00120 (Item)->WorkerRoutine = Routine; \ 00121 (Item)->Parameter = Context; \ 00122 (Item)->List.Flink = NULL; \ 00123 } 00124 00125 /* 00126 * BOOLEAN 00127 * ExIsFullZone( 00128 * IN PZONE_HEADER Zone) 00129 */ 00130 #define ExIsFullZone(Zone) \ 00131 ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) 00132 00133 NTOSAPI 00134 VOID 00135 DDKAPI 00136 ExQueueWorkItem( 00137 /*IN*/ PWORK_QUEUE_ITEM WorkItem, 00138 /*IN*/ WORK_QUEUE_TYPE QueueType); 00139 00140 NTOSAPI 00141 BOOLEAN 00142 DDKAPI 00143 ExIsObjectInFirstZoneSegment( 00144 /*IN*/ PZONE_HEADER Zone, 00145 /*IN*/ PVOID Object); 00146 00147 NTOSAPI 00148 VOID 00149 DDKAPI 00150 ExReleaseResource( 00151 /*IN*/ PERESOURCE Resource); 00152 00153 #define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite 00154 #define ExAcquireResourceShared ExAcquireResourceSharedLite 00155 #define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite 00156 #define ExDeleteResource ExDeleteResourceLite 00157 #define ExInitializeResource ExInitializeResourceLite 00158 #define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite 00159 #define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite 00160 #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite 00161 #define ExReleaseResourceForThread ExReleaseResourceForThreadLite 00162 00163 NTOSAPI 00164 INTERLOCKED_RESULT 00165 DDKAPI 00166 ExInterlockedDecrementLong( 00167 /*IN*/ PLONG Addend, 00168 /*IN*/ PKSPIN_LOCK Lock); 00169 00170 NTOSAPI 00171 ULONG 00172 DDKAPI 00173 ExInterlockedExchangeUlong( 00174 /*IN*/ PULONG Target, 00175 /*IN*/ ULONG Value, 00176 /*IN*/ PKSPIN_LOCK Lock); 00177 00178 NTOSAPI 00179 INTERLOCKED_RESULT 00180 DDKAPI 00181 ExInterlockedIncrementLong( 00182 /*IN*/ PLONG Addend, 00183 /*IN*/ PKSPIN_LOCK Lock); 00184 00185 NTOSAPI 00186 PVOID 00187 DDKAPI 00188 HalAllocateCommonBuffer( 00189 /*IN*/ PADAPTER_OBJECT AdapterObject, 00190 /*IN*/ ULONG Length, 00191 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, 00192 /*IN*/ BOOLEAN CacheEnabled); 00193 00194 NTOSAPI 00195 NTSTATUS 00196 DDKAPI 00197 HalAssignSlotResources( 00198 /*IN*/ PUNICODE_STRING RegistryPath, 00199 /*IN*/ PUNICODE_STRING DriverClassName, 00200 /*IN*/ PDRIVER_OBJECT DriverObject, 00201 /*IN*/ PDEVICE_OBJECT DeviceObject, 00202 /*IN*/ INTERFACE_TYPE BusType, 00203 /*IN*/ ULONG BusNumber, 00204 /*IN*/ ULONG SlotNumber, 00205 /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources); 00206 00207 NTOSAPI 00208 VOID 00209 DDKAPI 00210 HalFreeCommonBuffer( 00211 /*IN*/ PADAPTER_OBJECT AdapterObject, 00212 /*IN*/ ULONG Length, 00213 /*IN*/ PHYSICAL_ADDRESS LogicalAddress, 00214 /*IN*/ PVOID VirtualAddress, 00215 /*IN*/ BOOLEAN CacheEnabled); 00216 00217 NTOSAPI 00218 PADAPTER_OBJECT 00219 DDKAPI 00220 HalGetAdapter( 00221 /*IN*/ PDEVICE_DESCRIPTION DeviceDescription, 00222 /*IN OUT*/ PULONG NumberOfMapRegisters); 00223 00224 NTOSAPI 00225 ULONG 00226 DDKAPI 00227 HalGetBusData( 00228 /*IN*/ BUS_DATA_TYPE BusDataType, 00229 /*IN*/ ULONG BusNumber, 00230 /*IN*/ ULONG SlotNumber, 00231 /*IN*/ PVOID Buffer, 00232 /*IN*/ ULONG Length); 00233 00234 NTOSAPI 00235 ULONG 00236 DDKAPI 00237 HalGetBusDataByOffset( 00238 /*IN*/ BUS_DATA_TYPE BusDataType, 00239 /*IN*/ ULONG BusNumber, 00240 /*IN*/ ULONG SlotNumber, 00241 /*IN*/ PVOID Buffer, 00242 /*IN*/ ULONG Offset, 00243 /*IN*/ ULONG Length); 00244 00245 NTOSAPI 00246 ULONG 00247 DDKAPI 00248 HalGetDmaAlignmentRequirement( 00249 VOID); 00250 00251 NTOSAPI 00252 ULONG 00253 DDKAPI 00254 HalGetInterruptVector( 00255 /*IN*/ INTERFACE_TYPE InterfaceType, 00256 /*IN*/ ULONG BusNumber, 00257 /*IN*/ ULONG BusInterruptLevel, 00258 /*IN*/ ULONG BusInterruptVector, 00259 /*OUT*/ PKIRQL Irql, 00260 /*OUT*/ PKAFFINITY Affinity); 00261 00262 NTOSAPI 00263 ULONG 00264 DDKAPI 00265 HalReadDmaCounter( 00266 /*IN*/ PADAPTER_OBJECT AdapterObject); 00267 00268 NTOSAPI 00269 ULONG 00270 DDKAPI 00271 HalSetBusData( 00272 /*IN*/ BUS_DATA_TYPE BusDataType, 00273 /*IN*/ ULONG BusNumber, 00274 /*IN*/ ULONG SlotNumber, 00275 /*IN*/ PVOID Buffer, 00276 /*IN*/ ULONG Length); 00277 00278 NTOSAPI 00279 ULONG 00280 DDKAPI 00281 HalSetBusDataByOffset( 00282 /*IN*/ BUS_DATA_TYPE BusDataType, 00283 /*IN*/ ULONG BusNumber, 00284 /*IN*/ ULONG SlotNumber, 00285 /*IN*/ PVOID Buffer, 00286 /*IN*/ ULONG Offset, 00287 /*IN*/ ULONG Length); 00288 00289 NTOSAPI 00290 BOOLEAN 00291 DDKAPI 00292 HalTranslateBusAddress( 00293 /*IN*/ INTERFACE_TYPE InterfaceType, 00294 /*IN*/ ULONG BusNumber, 00295 /*IN*/ PHYSICAL_ADDRESS BusAddress, 00296 /*IN OUT*/ PULONG AddressSpace, 00297 /*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress); 00298 00299 NTOSAPI 00300 NTSTATUS 00301 DDKAPI 00302 IoAllocateAdapterChannel( 00303 /*IN*/ PADAPTER_OBJECT AdapterObject, 00304 /*IN*/ PDEVICE_OBJECT DeviceObject, 00305 /*IN*/ ULONG NumberOfMapRegisters, 00306 /*IN*/ PDRIVER_CONTROL ExecutionRoutine, 00307 /*IN*/ PVOID Context); 00308 00309 NTOSAPI 00310 NTSTATUS 00311 DDKAPI 00312 IoAssignResources( 00313 /*IN*/ PUNICODE_STRING RegistryPath, 00314 /*IN*/ PUNICODE_STRING DriverClassName /*OPTIONAL*/, 00315 /*IN*/ PDRIVER_OBJECT DriverObject, 00316 /*IN*/ PDEVICE_OBJECT DeviceObject /*OPTIONAL*/, 00317 /*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources, 00318 /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources); 00319 00320 NTOSAPI 00321 NTSTATUS 00322 DDKAPI 00323 IoAttachDeviceByPointer( 00324 /*IN*/ PDEVICE_OBJECT SourceDevice, 00325 /*IN*/ PDEVICE_OBJECT TargetDevice); 00326 00327 NTOSAPI 00328 BOOLEAN 00329 DDKAPI 00330 IoFlushAdapterBuffers( 00331 /*IN*/ PADAPTER_OBJECT AdapterObject, 00332 /*IN*/ PMDL Mdl, 00333 /*IN*/ PVOID MapRegisterBase, 00334 /*IN*/ PVOID CurrentVa, 00335 /*IN*/ ULONG Length, 00336 /*IN*/ BOOLEAN WriteToDevice); 00337 00338 NTOSAPI 00339 VOID 00340 DDKAPI 00341 IoFreeAdapterChannel( 00342 /*IN*/ PADAPTER_OBJECT AdapterObject); 00343 00344 NTOSAPI 00345 VOID 00346 DDKAPI 00347 IoFreeMapRegisters( 00348 /*IN*/ PADAPTER_OBJECT AdapterObject, 00349 /*IN*/ PVOID MapRegisterBase, 00350 /*IN*/ ULONG NumberOfMapRegisters); 00351 00352 NTOSAPI 00353 PHYSICAL_ADDRESS 00354 DDKAPI 00355 IoMapTransfer( 00356 /*IN*/ PADAPTER_OBJECT AdapterObject, 00357 /*IN*/ PMDL Mdl, 00358 /*IN*/ PVOID MapRegisterBase, 00359 /*IN*/ PVOID CurrentVa, 00360 /*IN OUT*/ PULONG Length, 00361 /*IN*/ BOOLEAN WriteToDevice); 00362 00363 NTOSAPI 00364 PMDL 00365 DDKAPI 00366 MmCreateMdl( 00367 /*IN*/ PMDL MemoryDescriptorList /*OPTIONAL*/, 00368 /*IN*/ PVOID Base, 00369 /*IN*/ SIZE_T Length); 00370 00371 NTOSAPI 00372 BOOLEAN 00373 DDKAPI 00374 MmIsNonPagedSystemAddressValid( 00375 /*IN*/ PVOID VirtualAddress); 00376 00377 NTOSAPI 00378 LARGE_INTEGER 00379 DDKAPI 00380 RtlEnlargedIntegerMultiply( 00381 /*IN*/ LONG Multiplicand, 00382 /*IN*/ LONG Multiplier); 00383 00384 NTOSAPI 00385 ULONG 00386 DDKAPI 00387 RtlEnlargedUnsignedDivide( 00388 /*IN*/ ULARGE_INTEGER Dividend, 00389 /*IN*/ ULONG Divisor, 00390 /*IN OUT*/ PULONG Remainder); 00391 00392 NTOSAPI 00393 LARGE_INTEGER 00394 DDKAPI 00395 RtlEnlargedUnsignedMultiply( 00396 /*IN*/ ULONG Multiplicand, 00397 /*IN*/ ULONG Multiplier); 00398 00399 NTOSAPI 00400 LARGE_INTEGER 00401 DDKAPI 00402 RtlExtendedIntegerMultiply( 00403 /*IN*/ LARGE_INTEGER Multiplicand, 00404 /*IN*/ LONG Multiplier); 00405 00406 NTOSAPI 00407 LARGE_INTEGER 00408 DDKAPI 00409 RtlExtendedLargeIntegerDivide( 00410 /*IN*/ LARGE_INTEGER Dividend, 00411 /*IN*/ ULONG Divisor, 00412 /*IN OUT*/ PULONG Remainder); 00413 00414 NTOSAPI 00415 LARGE_INTEGER 00416 DDKAPI 00417 RtlExtendedMagicDivide( 00418 /*IN*/ LARGE_INTEGER Dividend, 00419 /*IN*/ LARGE_INTEGER MagicDivisor, 00420 /*IN*/ CCHAR ShiftCount); 00421 00422 NTOSAPI 00423 LARGE_INTEGER 00424 DDKAPI 00425 RtlLargeIntegerAdd( 00426 /*IN*/ LARGE_INTEGER Addend1, 00427 /*IN*/ LARGE_INTEGER Addend2); 00428 00429 NTOSAPI 00430 VOID 00431 DDKAPI 00432 RtlLargeIntegerAnd( 00433 /*IN OUT*/ LARGE_INTEGER Result, 00434 /*IN*/ LARGE_INTEGER Source, 00435 /*IN*/ LARGE_INTEGER Mask); 00436 00437 NTOSAPI 00438 LARGE_INTEGER 00439 DDKAPI 00440 RtlLargeIntegerArithmeticShift( 00441 /*IN*/ LARGE_INTEGER LargeInteger, 00442 /*IN*/ CCHAR ShiftCount); 00443 00444 NTOSAPI 00445 LARGE_INTEGER 00446 DDKAPI 00447 RtlLargeIntegerDivide( 00448 /*IN*/ LARGE_INTEGER Dividend, 00449 /*IN*/ LARGE_INTEGER Divisor, 00450 /*IN OUT*/ PLARGE_INTEGER Remainder); 00451 00452 NTOSAPI 00453 BOOLEAN 00454 DDKAPI 00455 RtlLargeIntegerEqualTo( 00456 /*IN*/ LARGE_INTEGER Operand1, 00457 /*IN*/ LARGE_INTEGER Operand2); 00458 00459 NTOSAPI 00460 BOOLEAN 00461 DDKAPI 00462 RtlLargeIntegerEqualToZero( 00463 /*IN*/ LARGE_INTEGER Operand); 00464 00465 NTOSAPI 00466 BOOLEAN 00467 DDKAPI 00468 RtlLargeIntegerGreaterOrEqualToZero( 00469 /*IN*/ LARGE_INTEGER Operand); 00470 00471 NTOSAPI 00472 BOOLEAN 00473 DDKAPI 00474 RtlLargeIntegerGreaterThan( 00475 /*IN*/ LARGE_INTEGER Operand1, 00476 /*IN*/ LARGE_INTEGER Operand2); 00477 00478 NTOSAPI 00479 BOOLEAN 00480 DDKAPI 00481 RtlLargeIntegerGreaterThanOrEqualTo( 00482 /*IN*/ LARGE_INTEGER Operand1, 00483 /*IN*/ LARGE_INTEGER Operand2); 00484 00485 NTOSAPI 00486 BOOLEAN 00487 DDKAPI 00488 RtlLargeIntegerGreaterThanZero( 00489 /*IN*/ LARGE_INTEGER Operand); 00490 00491 NTOSAPI 00492 BOOLEAN 00493 DDKAPI 00494 RtlLargeIntegerLessOrEqualToZero( 00495 /*IN*/ LARGE_INTEGER Operand); 00496 00497 NTOSAPI 00498 BOOLEAN 00499 DDKAPI 00500 RtlLargeIntegerLessThan( 00501 /*IN*/ LARGE_INTEGER Operand1, 00502 /*IN*/ LARGE_INTEGER Operand2); 00503 00504 NTOSAPI 00505 BOOLEAN 00506 DDKAPI 00507 RtlLargeIntegerLessThanOrEqualTo( 00508 /*IN*/ LARGE_INTEGER Operand1, 00509 /*IN*/ LARGE_INTEGER Operand2); 00510 00511 NTOSAPI 00512 BOOLEAN 00513 DDKAPI 00514 RtlLargeIntegerLessThanZero( 00515 /*IN*/ LARGE_INTEGER Operand); 00516 00517 NTOSAPI 00518 LARGE_INTEGER 00519 DDKAPI 00520 RtlLargeIntegerNegate( 00521 /*IN*/ LARGE_INTEGER Subtrahend); 00522 00523 NTOSAPI 00524 BOOLEAN 00525 DDKAPI 00526 RtlLargeIntegerNotEqualTo( 00527 /*IN*/ LARGE_INTEGER Operand1, 00528 /*IN*/ LARGE_INTEGER Operand2); 00529 00530 NTOSAPI 00531 BOOLEAN 00532 DDKAPI 00533 RtlLargeIntegerNotEqualToZero( 00534 /*IN*/ LARGE_INTEGER Operand); 00535 00536 NTOSAPI 00537 LARGE_INTEGER 00538 DDKAPI 00539 RtlLargeIntegerShiftLeft( 00540 /*IN*/ LARGE_INTEGER LargeInteger, 00541 /*IN*/ CCHAR ShiftCount); 00542 00543 NTOSAPI 00544 LARGE_INTEGER 00545 DDKAPI 00546 RtlLargeIntegerShiftRight( 00547 /*IN*/ LARGE_INTEGER LargeInteger, 00548 /*IN*/ CCHAR ShiftCount); 00549 00550 NTOSAPI 00551 LARGE_INTEGER 00552 DDKAPI 00553 RtlLargeIntegerSubtract( 00554 /*IN*/ LARGE_INTEGER Minuend, 00555 /*IN*/ LARGE_INTEGER Subtrahend); 00556 00557 00558 /* 00559 * ULONG 00560 * COMPUTE_PAGES_SPANNED( 00561 * IN PVOID Va, 00562 * IN ULONG Size) 00563 */ 00564 #define COMPUTE_PAGES_SPANNED(Va, \ 00565 Size) \ 00566 (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size)) 00567 00568 00569 /* 00570 ** Architecture specific functions 00571 */ 00572 00573 #ifdef _X86_ 00574 00575 NTOSAPI 00576 INTERLOCKED_RESULT 00577 DDKAPI 00578 Exi386InterlockedIncrementLong( 00579 /*IN*/ PLONG Addend); 00580 00581 NTOSAPI 00582 INTERLOCKED_RESULT 00583 DDKFASTAPI 00584 Exfi386InterlockedIncrementLong( 00585 /*IN*/ PLONG Addend); 00586 00587 NTOSAPI 00588 INTERLOCKED_RESULT 00589 DDKAPI 00590 Exi386InterlockedDecrementLong( 00591 /*IN*/ PLONG Addend); 00592 00593 NTOSAPI 00594 INTERLOCKED_RESULT 00595 DDKFASTAPI 00596 Exfi386InterlockedDecrementLong( 00597 /*IN*/ PLONG Addend); 00598 00599 NTOSAPI 00600 ULONG 00601 DDKAPI 00602 Exi386InterlockedExchangeUlong( 00603 /*IN*/ PULONG Target, 00604 /*IN*/ ULONG Value); 00605 00606 NTOSAPI 00607 ULONG 00608 DDKFASTAPI 00609 Exfi386InterlockedExchangeUlong( 00610 /*IN*/ PULONG Target, 00611 /*IN*/ ULONG Value); 00612 00613 #define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) 00614 #define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) 00615 #define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) 00616 00617 #endif /* _X86_ */ 00618 00619 #ifdef __cplusplus 00620 } 00621 #endif 00622 00623 #endif /* __WINNT4_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2