3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright 2008 Francois Gouget for CodeWeavers
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef _NTDDK_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define _NTDDK_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Note: We will probably have to duplicate everything ultimately :-( */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <ddk/wdm.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <excpt.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* FIXME: #include <ntdef.h> */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <ntstatus.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* FIXME: #include <bugcodes.h> */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* FIXME: #include <ntiologc.h> */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _BUS_DATA_TYPE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ConfigurationSpaceUndefined = -1,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Cmos,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync EisaConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Pos,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CbusConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCIConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync VMEConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync NuBusConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCMCIAConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MPIConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MPSAConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PNPISAConfiguration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MaximumBusDataType
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _CONFIGURATION_INFORMATION
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG DiskCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG FloppyCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG CdRomCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG TapeCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ScsiPortCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG SerialCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ParallelCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN AtDiskPrimaryAddressClaimed;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN AtDiskSecondaryAddressClaimed;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Version;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MediumChangerCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _CONFIGURATION_TYPE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ArcSystem = 0,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CentralProcessor,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FloatingPointProcessor,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PrimaryIcache,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PrimaryDcache,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SecondaryIcache,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SecondaryDcache,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SecondaryCache,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync EisaAdapter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TcAdapter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ScsiAdapter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DtiAdapter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MultiFunctionAdapter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DiskController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TapeController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CdromController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WormController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SerialController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync NetworkController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DisplayController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ParallelController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PointerController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KeyboardController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AudioController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync OtherController,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DiskPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FloppyDiskPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TapePeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ModemPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MonitorPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PrinterPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PointerPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KeyboardPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TerminalPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync OtherPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LinePeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync NetworkPeripheral,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SystemMemory,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DockingInformation,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RealModeIrqRoutingTable,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RealModePCIEnumeration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MaximunType
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _IMAGE_INFO
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync union
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Properties;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ImageAddressingMode : 8;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG SystemModeImage : 1;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ImageMappedToAllPids : 1;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ExtendedInfoPresent : 1;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Reserved : 21;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync };
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync };
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVOID ImageBase;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ImageSelector;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SIZE_T ImageSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ImageSectionNumber;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} IMAGE_INFO, *PIMAGE_INFO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER ValidDataLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef VOID (WINAPI *PDRIVER_REINITIALIZE)(PDRIVER_OBJECT,PVOID,ULONG);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef VOID (WINAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(PUNICODE_STRING,HANDLE,PIMAGE_INFO);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef NTSTATUS (WINAPI *PIO_QUERY_DEVICE_ROUTINE)(PVOID,PUNICODE_STRING,INTERFACE_TYPE,ULONG,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PKEY_VALUE_FULL_INFORMATION*,CONFIGURATION_TYPE,ULONG,PKEY_VALUE_FULL_INFORMATION*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncNTSTATUS WINAPI IoQueryDeviceDescription(PINTERFACE_TYPE,PULONG,PCONFIGURATION_TYPE,PULONG,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCONFIGURATION_TYPE,PULONG,PIO_QUERY_DEVICE_ROUTINE,PVOID);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid WINAPI IoRegisterDriverReinitialization(PDRIVER_OBJECT,PDRIVER_REINITIALIZE,PVOID);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncNTSTATUS WINAPI IoRegisterShutdownNotification(PDEVICE_OBJECT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncNTSTATUS WINAPI PsSetLoadImageNotifyRoutine(PLOAD_IMAGE_NOTIFY_ROUTINE);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif