2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
/*
|
|
|
|
* winnt4.h
|
|
|
|
*
|
|
|
|
* Definitions only used in Windows NT 4.0 and earlier versions
|
|
|
|
*
|
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): Change comment to refer w32api package, not MinGW.
2002-11-15 09:08:17 +08:00
|
|
|
* This file is part of the w32api package.
|
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
*
|
|
|
|
* 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
|
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): Fix typo in disclaimer comment.
2002-11-13 05:34:07 +08:00
|
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
* 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
|
|
|
|
|
2002-12-19 09:34:26 +08:00
|
|
|
#pragma pack(push,4)
|
|
|
|
|
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
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;
|
|
|
|
|
Clean up warnings in ddk.
* include/ddk/atm.h (_ATM_AAL_OOB_INFO): Add _ANONYMOUS_UNION,
conditional on __cplusplus.
* include/ddk/scsi.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout.
(_CDB): Add _ANONYMOUS_UNION, conditional on __cplusplus.
* include/ddk/cfg.h (_PNP_VETO_TYPE): Remove extra comma.
* include/ddk/cfgmgr32.h: Change C++ comment style to ISO C.
* include/ddk/ddkmapi.h (_DDLOCKOUT): Add _ANONYMOUS_UNION defines.
* include/ddk/hidpi.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout.
* include/ddk/ndis.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout. Remove trailing semicolon from *_S 'structure'
macro expansion, throughout. Remove trailing semicolon from
DECLARE_UNKNOWN_STRUCT macro expansion.
* include/ddk/ndiswan.h (_NDIS_WAN_COMPRESS_INFO): Add
_ANONYMOUS_UNION.
* include/ddk/ntapi.h (_PROCESS_DEVICEMAP_INFORMATION,
_PROCESS_SESSION_INFORMATION): Add _ANONYMOUS_UNION.
* include/ddk/ntddcdrm.h (CDROM_TOC_CD_TEXT_DATA_BLOCK):
Add _ANONYMOUS_UNION.
* include/ddk/ntdddisk.h: Add _ANONYMOUS_UNION, throughout.
* include/ddk/ntddmou.h: Add _ANONYMOUS_UNION, throughout.
* include/ddk/ntifs.h: Add _ANONYMOUS_UNION, throughout.
(ZwQueryObject): Change 2nd param to OBJECT_INFORMATION_CLASS, to
match proto in ntapi.h.
(ZwSetInformationObject): Likewise.
* include/ddk/srb.h (SCSI_REQUEST_BLOCK): Add _ANONYMOUS_UNION.
(SCSI_ADAPTER_CONTROL_TYPE): Add __extension__.
* include/ddk/tdikrnl.h (TDI20_CLIENT_INTERFACE_INFO): Add
_ANONYMOUS_UNION and _ANONYMOUS_STRUCT.
* include/ddk/usb.h (USB): Add _ANONYMOUS_UNION.
* include/ddk/usbcamdi.h (USBCAMD_CamControlFlags): Remove
last comma.
* include/ddk/video.h (STATUS_BLOCK): Add _ANONYMOUS_UNION.
* include/ddk/winddk.h (DECLARE_INTERNAL_OBJECT): Remove
trailing semicolon when expanding macro.
(GENERAL_LOOKASIDE_S): Likewise.
Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT, throughout.
Change inline to __inline, throughout.
* include/ddk/winnt4.h: Change inline to __inline, throughout.
2003-07-17 05:49:02 +08:00
|
|
|
static __inline PVOID
|
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
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);
|
|
|
|
|
Clean up warnings in ddk.
* include/ddk/atm.h (_ATM_AAL_OOB_INFO): Add _ANONYMOUS_UNION,
conditional on __cplusplus.
* include/ddk/scsi.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout.
(_CDB): Add _ANONYMOUS_UNION, conditional on __cplusplus.
* include/ddk/cfg.h (_PNP_VETO_TYPE): Remove extra comma.
* include/ddk/cfgmgr32.h: Change C++ comment style to ISO C.
* include/ddk/ddkmapi.h (_DDLOCKOUT): Add _ANONYMOUS_UNION defines.
* include/ddk/hidpi.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout.
* include/ddk/ndis.h: Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT
defines, throughout. Remove trailing semicolon from *_S 'structure'
macro expansion, throughout. Remove trailing semicolon from
DECLARE_UNKNOWN_STRUCT macro expansion.
* include/ddk/ndiswan.h (_NDIS_WAN_COMPRESS_INFO): Add
_ANONYMOUS_UNION.
* include/ddk/ntapi.h (_PROCESS_DEVICEMAP_INFORMATION,
_PROCESS_SESSION_INFORMATION): Add _ANONYMOUS_UNION.
* include/ddk/ntddcdrm.h (CDROM_TOC_CD_TEXT_DATA_BLOCK):
Add _ANONYMOUS_UNION.
* include/ddk/ntdddisk.h: Add _ANONYMOUS_UNION, throughout.
* include/ddk/ntddmou.h: Add _ANONYMOUS_UNION, throughout.
* include/ddk/ntifs.h: Add _ANONYMOUS_UNION, throughout.
(ZwQueryObject): Change 2nd param to OBJECT_INFORMATION_CLASS, to
match proto in ntapi.h.
(ZwSetInformationObject): Likewise.
* include/ddk/srb.h (SCSI_REQUEST_BLOCK): Add _ANONYMOUS_UNION.
(SCSI_ADAPTER_CONTROL_TYPE): Add __extension__.
* include/ddk/tdikrnl.h (TDI20_CLIENT_INTERFACE_INFO): Add
_ANONYMOUS_UNION and _ANONYMOUS_STRUCT.
* include/ddk/usb.h (USB): Add _ANONYMOUS_UNION.
* include/ddk/usbcamdi.h (USBCAMD_CamControlFlags): Remove
last comma.
* include/ddk/video.h (STATUS_BLOCK): Add _ANONYMOUS_UNION.
* include/ddk/winddk.h (DECLARE_INTERNAL_OBJECT): Remove
trailing semicolon when expanding macro.
(GENERAL_LOOKASIDE_S): Likewise.
Add _ANONYMOUS_UNION and _ANONYMOUS_STRUCT, throughout.
Change inline to __inline, throughout.
* include/ddk/winnt4.h: Change inline to __inline, throughout.
2003-07-17 05:49:02 +08:00
|
|
|
static __inline PVOID
|
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-07 06:18:26 +08:00
|
|
|
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 structures
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef _X86_
|
|
|
|
|
|
|
|
NTOSAPI
|
|
|
|
INTERLOCKED_RESULT
|
|
|
|
DDKFASTAPI
|
|
|
|
Exfi386InterlockedIncrementLong(
|
|
|
|
IN PLONG Addend);
|
|
|
|
|
|
|
|
NTOSAPI
|
|
|
|
INTERLOCKED_RESULT
|
|
|
|
DDKFASTAPI
|
|
|
|
Exfi386InterlockedDecrementLong(
|
|
|
|
IN PLONG Addend);
|
|
|
|
|
|
|
|
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_ */
|
|
|
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __WINNT4_H */
|