home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / winnt4.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  11.1 KB  |  609 lines

  1. /*
  2.  * winnt4.h
  3.  *
  4.  * Definitions only used in Windows NT 4.0 and earlier versions
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __WINNT4_H
  24. #define __WINNT4_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #pragma pack(push,4)
  35.  
  36. typedef struct _ZONE_SEGMENT_HEADER {
  37.   SINGLE_LIST_ENTRY  SegmentList;
  38.   PVOID  Reserved;
  39. } ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
  40.  
  41. typedef struct _ZONE_HEADER {
  42.   SINGLE_LIST_ENTRY  FreeList;
  43.   SINGLE_LIST_ENTRY  SegmentList;
  44.   ULONG  BlockSize;
  45.   ULONG  TotalSegmentSize;
  46. } ZONE_HEADER, *PZONE_HEADER;
  47.  
  48. static inline PVOID
  49. ExAllocateFromZone(
  50.   IN PZONE_HEADER  Zone)
  51. {
  52.   if (Zone->FreeList.Next)
  53.     Zone->FreeList.Next = Zone->FreeList.Next->Next;
  54.   return (PVOID) Zone->FreeList.Next;
  55. }
  56.  
  57. NTOSAPI
  58. NTSTATUS
  59. DDKAPI
  60. ExExtendZone(
  61.   IN PZONE_HEADER  Zone,
  62.   IN PVOID  Segment,
  63.   IN ULONG  SegmentSize);
  64.  
  65. static inline PVOID
  66. ExFreeToZone(
  67.   IN PZONE_HEADER  Zone,
  68.   IN PVOID  Block)
  69. {
  70.   ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
  71.   Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
  72.   return ((PSINGLE_LIST_ENTRY) Block)->Next;
  73. }
  74.  
  75. NTOSAPI
  76. NTSTATUS
  77. DDKAPI
  78. ExInitializeZone(
  79.   IN PZONE_HEADER  Zone,
  80.   IN ULONG  BlockSize,
  81.   IN PVOID  InitialSegment,
  82.   IN ULONG  InitialSegmentSize);
  83.  
  84. /*
  85.  * PVOID
  86.  * ExInterlockedAllocateFromZone(
  87.  *   IN PZONE_HEADER  Zone,
  88.  *   IN PKSPIN_LOCK  Lock)
  89.  */
  90. #define ExInterlockedAllocateFromZone(Zone, \
  91.                               Lock) \
  92.   ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
  93.  
  94. NTOSAPI
  95. NTSTATUS
  96. DDKAPI
  97. ExInterlockedExtendZone(
  98.   IN PZONE_HEADER  Zone,
  99.   IN PVOID  Segment,
  100.   IN ULONG  SegmentSize,
  101.   IN PKSPIN_LOCK  Lock);
  102.  
  103. NTOSAPI
  104. PVOID
  105. DDKAPI
  106. ExInterlockedFreeToZone(
  107.   IN PZONE_HEADER  Zone,
  108.   IN PVOID  Block,
  109.   IN PKSPIN_LOCK  Lock);
  110.  
  111. /*
  112.  * VOID
  113.  * ExInitializeWorkItem(
  114.  *   IN PWORK_QUEUE_ITEM  Item,
  115.  *   IN PWORKER_THREAD_ROUTINE  Routine,
  116.  *   IN PVOID  Context)
  117.  */
  118. #define ExInitializeWorkItem(Item, \
  119.                              Routine, \
  120.                              Context) \
  121. { \
  122.   (Item)->WorkerRoutine = Routine; \
  123.   (Item)->Parameter = Context; \
  124.   (Item)->List.Flink = NULL; \
  125. }
  126.  
  127. /*
  128.  * BOOLEAN
  129.  * ExIsFullZone(
  130.  *  IN PZONE_HEADER  Zone)
  131.  */
  132. #define ExIsFullZone(Zone) \
  133.   ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
  134.  
  135. NTOSAPI
  136. VOID
  137. DDKAPI
  138. ExQueueWorkItem(
  139.   IN PWORK_QUEUE_ITEM  WorkItem,
  140.   IN WORK_QUEUE_TYPE  QueueType);
  141.  
  142. NTOSAPI
  143. BOOLEAN
  144. DDKAPI
  145. ExIsObjectInFirstZoneSegment(
  146.   IN PZONE_HEADER  Zone,
  147.   IN PVOID  Object);
  148.  
  149. NTOSAPI
  150. VOID
  151. DDKAPI
  152. ExReleaseResource(
  153.   IN PERESOURCE  Resource);
  154.  
  155. #define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
  156. #define ExAcquireResourceShared ExAcquireResourceSharedLite
  157. #define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
  158. #define ExDeleteResource ExDeleteResourceLite
  159. #define ExInitializeResource ExInitializeResourceLite
  160. #define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
  161. #define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
  162. #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
  163. #define ExReleaseResourceForThread ExReleaseResourceForThreadLite
  164.  
  165. NTOSAPI
  166. INTERLOCKED_RESULT
  167. DDKAPI
  168. ExInterlockedDecrementLong(
  169.   IN PLONG  Addend,
  170.   IN PKSPIN_LOCK  Lock);
  171.  
  172. NTOSAPI
  173. ULONG
  174. DDKAPI
  175. ExInterlockedExchangeUlong(
  176.   IN PULONG  Target,
  177.   IN ULONG  Value,
  178.   IN PKSPIN_LOCK  Lock);
  179.  
  180. NTOSAPI
  181. INTERLOCKED_RESULT
  182. DDKAPI
  183. ExInterlockedIncrementLong(
  184.   IN PLONG  Addend,
  185.   IN PKSPIN_LOCK  Lock);
  186.  
  187. NTOSAPI
  188. PVOID
  189. DDKAPI
  190. HalAllocateCommonBuffer(
  191.   IN PADAPTER_OBJECT  AdapterObject,
  192.   IN ULONG  Length,
  193.   OUT PPHYSICAL_ADDRESS  LogicalAddress,
  194.   IN BOOLEAN  CacheEnabled);
  195.  
  196. NTOSAPI
  197. NTSTATUS
  198. DDKAPI
  199. HalAssignSlotResources(
  200.   IN PUNICODE_STRING  RegistryPath,
  201.   IN PUNICODE_STRING  DriverClassName,
  202.   IN PDRIVER_OBJECT  DriverObject,
  203.   IN PDEVICE_OBJECT  DeviceObject,
  204.   IN INTERFACE_TYPE  BusType,
  205.   IN ULONG  BusNumber,
  206.   IN ULONG  SlotNumber,
  207.   IN OUT PCM_RESOURCE_LIST  *AllocatedResources);
  208.  
  209. NTOSAPI
  210. VOID
  211. DDKAPI
  212. HalFreeCommonBuffer(
  213.   IN PADAPTER_OBJECT  AdapterObject,
  214.   IN ULONG  Length,
  215.   IN PHYSICAL_ADDRESS  LogicalAddress,
  216.   IN PVOID  VirtualAddress,
  217.   IN BOOLEAN  CacheEnabled);
  218.  
  219. NTOSAPI
  220. PADAPTER_OBJECT
  221. DDKAPI
  222. HalGetAdapter(
  223.   IN PDEVICE_DESCRIPTION  DeviceDescription,
  224.   IN OUT PULONG  NumberOfMapRegisters);
  225.  
  226. NTOSAPI
  227. ULONG
  228. DDKAPI
  229. HalGetBusData(
  230.   IN BUS_DATA_TYPE  BusDataType,
  231.   IN ULONG  BusNumber,
  232.   IN ULONG  SlotNumber,
  233.   IN PVOID  Buffer,
  234.   IN ULONG  Length);
  235.  
  236. NTOSAPI
  237. ULONG
  238. DDKAPI
  239. HalGetBusDataByOffset(
  240.   IN BUS_DATA_TYPE  BusDataType,
  241.   IN ULONG  BusNumber,
  242.   IN ULONG  SlotNumber,
  243.   IN PVOID  Buffer,
  244.   IN ULONG  Offset,
  245.   IN ULONG  Length);
  246.  
  247. NTOSAPI
  248. ULONG
  249. DDKAPI
  250. HalGetDmaAlignmentRequirement( 
  251.   VOID);
  252.  
  253. NTOSAPI
  254. ULONG
  255. DDKAPI
  256. HalGetInterruptVector(
  257.   IN INTERFACE_TYPE  InterfaceType,
  258.   IN ULONG  BusNumber,
  259.   IN ULONG  BusInterruptLevel,
  260.   IN ULONG  BusInterruptVector,
  261.   OUT PKIRQL  Irql,
  262.   OUT PKAFFINITY  Affinity);
  263.  
  264. NTOSAPI
  265. ULONG
  266. DDKAPI
  267. HalReadDmaCounter(
  268.   IN PADAPTER_OBJECT  AdapterObject);
  269.  
  270. NTOSAPI
  271. ULONG
  272. DDKAPI
  273. HalSetBusData(
  274.   IN BUS_DATA_TYPE  BusDataType,
  275.   IN ULONG  BusNumber,
  276.   IN ULONG  SlotNumber,
  277.   IN PVOID  Buffer,
  278.   IN ULONG  Length);
  279.  
  280. NTOSAPI
  281. ULONG
  282. DDKAPI
  283. HalSetBusDataByOffset(
  284.   IN BUS_DATA_TYPE  BusDataType,
  285.   IN ULONG  BusNumber,
  286.   IN ULONG  SlotNumber,
  287.   IN PVOID  Buffer,
  288.   IN ULONG  Offset,
  289.   IN ULONG  Length);
  290.  
  291. NTOSAPI
  292. BOOLEAN
  293. DDKAPI
  294. HalTranslateBusAddress(
  295.   IN INTERFACE_TYPE  InterfaceType,
  296.   IN ULONG  BusNumber,
  297.   IN PHYSICAL_ADDRESS  BusAddress,
  298.   IN OUT PULONG  AddressSpace,
  299.   OUT PPHYSICAL_ADDRESS  TranslatedAddress);
  300.  
  301. NTOSAPI
  302. NTSTATUS
  303. DDKAPI
  304. IoAllocateAdapterChannel(
  305.   IN PADAPTER_OBJECT  AdapterObject,
  306.   IN PDEVICE_OBJECT  DeviceObject,
  307.   IN ULONG  NumberOfMapRegisters,
  308.   IN PDRIVER_CONTROL  ExecutionRoutine,
  309.   IN PVOID  Context);
  310.  
  311. NTOSAPI
  312. NTSTATUS
  313. DDKAPI
  314. IoAssignResources(
  315.   IN PUNICODE_STRING  RegistryPath,
  316.   IN PUNICODE_STRING  DriverClassName  OPTIONAL,
  317.   IN PDRIVER_OBJECT  DriverObject,
  318.   IN PDEVICE_OBJECT  DeviceObject  OPTIONAL,
  319.   IN PIO_RESOURCE_REQUIREMENTS_LIST  RequestedResources,
  320.   IN OUT PCM_RESOURCE_LIST  *AllocatedResources);
  321.  
  322. NTOSAPI
  323. NTSTATUS
  324. DDKAPI
  325. IoAttachDeviceByPointer(
  326.   IN PDEVICE_OBJECT  SourceDevice,
  327.   IN PDEVICE_OBJECT  TargetDevice);
  328.  
  329. NTOSAPI
  330. BOOLEAN
  331. DDKAPI
  332. IoFlushAdapterBuffers(
  333.   IN PADAPTER_OBJECT  AdapterObject,
  334.   IN PMDL  Mdl,
  335.   IN PVOID  MapRegisterBase,
  336.   IN PVOID  CurrentVa,
  337.   IN ULONG  Length,
  338.   IN BOOLEAN  WriteToDevice);
  339.  
  340. NTOSAPI
  341. VOID
  342. DDKAPI
  343. IoFreeAdapterChannel(
  344.   IN PADAPTER_OBJECT  AdapterObject);
  345.  
  346. NTOSAPI
  347. VOID
  348. DDKAPI
  349. IoFreeMapRegisters(
  350.   IN PADAPTER_OBJECT  AdapterObject,
  351.   IN PVOID  MapRegisterBase,
  352.   IN ULONG  NumberOfMapRegisters);
  353.  
  354. NTOSAPI
  355. PHYSICAL_ADDRESS
  356. DDKAPI
  357. IoMapTransfer(
  358.   IN PADAPTER_OBJECT  AdapterObject,
  359.   IN PMDL  Mdl,
  360.   IN PVOID  MapRegisterBase,
  361.   IN PVOID  CurrentVa,
  362.   IN OUT PULONG  Length,
  363.   IN BOOLEAN  WriteToDevice);
  364.  
  365. NTOSAPI
  366. PMDL
  367. DDKAPI
  368. MmCreateMdl(
  369.   IN PMDL  MemoryDescriptorList  OPTIONAL,
  370.   IN PVOID  Base,
  371.   IN SIZE_T  Length);
  372.  
  373. NTOSAPI
  374. BOOLEAN
  375. DDKAPI
  376. MmIsNonPagedSystemAddressValid(
  377.   IN PVOID  VirtualAddress);
  378.  
  379. NTOSAPI
  380. LARGE_INTEGER
  381. DDKAPI
  382. RtlEnlargedIntegerMultiply(
  383.   IN LONG  Multiplicand,
  384.   IN LONG  Multiplier);
  385.  
  386. NTOSAPI
  387. ULONG
  388. DDKAPI
  389. RtlEnlargedUnsignedDivide(
  390.   IN ULARGE_INTEGER  Dividend,
  391.   IN ULONG  Divisor,
  392.   IN OUT PULONG  Remainder);
  393.  
  394. NTOSAPI
  395. LARGE_INTEGER
  396. DDKAPI
  397. RtlEnlargedUnsignedMultiply(
  398.   IN ULONG  Multiplicand,
  399.   IN ULONG  Multiplier);
  400.  
  401. NTOSAPI
  402. LARGE_INTEGER
  403. DDKAPI
  404. RtlExtendedIntegerMultiply(
  405.   IN LARGE_INTEGER  Multiplicand,
  406.   IN LONG  Multiplier);
  407.  
  408. NTOSAPI
  409. LARGE_INTEGER
  410. DDKAPI
  411. RtlExtendedLargeIntegerDivide(
  412.   IN LARGE_INTEGER  Dividend,
  413.   IN ULONG  Divisor,
  414.   IN OUT PULONG  Remainder);
  415.  
  416. NTOSAPI
  417. LARGE_INTEGER
  418. DDKAPI
  419. RtlExtendedMagicDivide(
  420.   IN LARGE_INTEGER  Dividend,
  421.   IN LARGE_INTEGER  MagicDivisor,
  422.   IN CCHAR  ShiftCount);
  423.  
  424. NTOSAPI
  425. LARGE_INTEGER
  426. DDKAPI
  427. RtlLargeIntegerAdd(
  428.   IN LARGE_INTEGER  Addend1,
  429.   IN LARGE_INTEGER  Addend2);
  430.  
  431. NTOSAPI
  432. VOID
  433. DDKAPI
  434. RtlLargeIntegerAnd(
  435.   IN OUT LARGE_INTEGER  Result,
  436.   IN LARGE_INTEGER  Source,
  437.   IN LARGE_INTEGER  Mask);
  438.  
  439. NTOSAPI
  440. LARGE_INTEGER
  441. DDKAPI
  442. RtlLargeIntegerArithmeticShift(
  443.   IN LARGE_INTEGER  LargeInteger,
  444.   IN CCHAR  ShiftCount);
  445.  
  446. NTOSAPI
  447. LARGE_INTEGER
  448. DDKAPI
  449. RtlLargeIntegerDivide(
  450.   IN LARGE_INTEGER  Dividend,
  451.   IN LARGE_INTEGER  Divisor,
  452.   IN OUT PLARGE_INTEGER  Remainder);
  453.  
  454. NTOSAPI
  455. BOOLEAN
  456. DDKAPI
  457. RtlLargeIntegerEqualTo(
  458.   IN LARGE_INTEGER  Operand1,
  459.   IN LARGE_INTEGER  Operand2);
  460.  
  461. NTOSAPI
  462. BOOLEAN
  463. DDKAPI
  464. RtlLargeIntegerEqualToZero(
  465.   IN LARGE_INTEGER  Operand);
  466.  
  467. NTOSAPI
  468. BOOLEAN
  469. DDKAPI
  470. RtlLargeIntegerGreaterOrEqualToZero(
  471.   IN LARGE_INTEGER  Operand);
  472.  
  473. NTOSAPI
  474. BOOLEAN
  475. DDKAPI
  476. RtlLargeIntegerGreaterThan(
  477.   IN LARGE_INTEGER  Operand1,
  478.   IN LARGE_INTEGER  Operand2);
  479.  
  480. NTOSAPI
  481. BOOLEAN
  482. DDKAPI
  483. RtlLargeIntegerGreaterThanOrEqualTo(
  484.   IN LARGE_INTEGER  Operand1,
  485.   IN LARGE_INTEGER  Operand2);
  486.  
  487. NTOSAPI
  488. BOOLEAN
  489. DDKAPI
  490. RtlLargeIntegerGreaterThanZero(
  491.   IN LARGE_INTEGER  Operand);
  492.  
  493. NTOSAPI
  494. BOOLEAN
  495. DDKAPI
  496. RtlLargeIntegerLessOrEqualToZero(
  497.   IN LARGE_INTEGER  Operand);
  498.  
  499. NTOSAPI
  500. BOOLEAN
  501. DDKAPI
  502. RtlLargeIntegerLessThan(
  503.   IN LARGE_INTEGER  Operand1,
  504.   IN LARGE_INTEGER  Operand2);
  505.  
  506. NTOSAPI
  507. BOOLEAN
  508. DDKAPI
  509. RtlLargeIntegerLessThanOrEqualTo(
  510.   IN LARGE_INTEGER  Operand1,
  511.   IN LARGE_INTEGER  Operand2);
  512.  
  513. NTOSAPI
  514. BOOLEAN
  515. DDKAPI
  516. RtlLargeIntegerLessThanZero(
  517.   IN LARGE_INTEGER  Operand);
  518.  
  519. NTOSAPI
  520. LARGE_INTEGER
  521. DDKAPI
  522. RtlLargeIntegerNegate(
  523.   IN LARGE_INTEGER  Subtrahend);
  524.  
  525. NTOSAPI
  526. BOOLEAN
  527. DDKAPI
  528. RtlLargeIntegerNotEqualTo(
  529.   IN LARGE_INTEGER  Operand1,
  530.   IN LARGE_INTEGER  Operand2);
  531.  
  532. NTOSAPI
  533. BOOLEAN
  534. DDKAPI
  535. RtlLargeIntegerNotEqualToZero(
  536.   IN LARGE_INTEGER  Operand);
  537.  
  538. NTOSAPI
  539. LARGE_INTEGER
  540. DDKAPI
  541. RtlLargeIntegerShiftLeft(
  542.   IN LARGE_INTEGER  LargeInteger,
  543.   IN CCHAR  ShiftCount);
  544.  
  545. NTOSAPI
  546. LARGE_INTEGER
  547. DDKAPI
  548. RtlLargeIntegerShiftRight(
  549.   IN LARGE_INTEGER  LargeInteger,
  550.   IN CCHAR  ShiftCount);
  551.  
  552. NTOSAPI
  553. LARGE_INTEGER
  554. DDKAPI
  555. RtlLargeIntegerSubtract(
  556.   IN LARGE_INTEGER  Minuend,
  557.   IN LARGE_INTEGER  Subtrahend);
  558.  
  559.  
  560. /*
  561.  * ULONG
  562.  * COMPUTE_PAGES_SPANNED(
  563.  *   IN PVOID  Va,
  564.  *   IN ULONG  Size)
  565.  */
  566. #define COMPUTE_PAGES_SPANNED(Va, \
  567.                               Size) \
  568.   (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size))
  569.  
  570.  
  571. /*
  572. ** Architecture specific structures
  573. */
  574.  
  575. #ifdef _X86_
  576.  
  577. NTOSAPI
  578. INTERLOCKED_RESULT
  579. DDKFASTAPI
  580. Exfi386InterlockedIncrementLong(
  581.   IN PLONG  Addend);
  582.  
  583. NTOSAPI
  584. INTERLOCKED_RESULT
  585. DDKFASTAPI
  586. Exfi386InterlockedDecrementLong(
  587.   IN PLONG  Addend);
  588.  
  589. NTOSAPI
  590. ULONG
  591. DDKFASTAPI
  592. Exfi386InterlockedExchangeUlong(
  593.   IN PULONG  Target,
  594.   IN ULONG  Value);
  595.  
  596. #define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
  597. #define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
  598. #define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
  599.  
  600. #endif /* _X86_ */
  601.  
  602. #pragma pack(pop)
  603.  
  604. #ifdef __cplusplus
  605. }
  606. #endif
  607.  
  608. #endif /* __WINNT4_H */
  609.