Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

312 lines
7.6 KiB

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
netdtect.h
Abstract:
Default definitions for driver and its control application.
Author:
Sean Selitrennikoff (SeanSe) October 1992
Environment:
Kernel mode, FSD
Revision History:
--*/
#if DBG
extern UCHAR NetDTectDebug;
#define DEBUG_LOUD 0x1
#define DEBUG_VERY_LOUD 0x2
#define IF_LOUD( A ) if(NetDTectDebug & DEBUG_LOUD) { A }
#define IF_VERY_LOUD( A ) if(NetDTectDebug & DEBUG_VERY_LOUD) { A }
#else
#define IF_LOUD( A )
#define IF_VERY_LOUD( A )
#endif
//
// Device Name - this string is the name of the device. It is the name
// that should be passed to NtOpenFile when accessing the device.
//
// Note: For devices that support multiple units, it should be suffixed
// with the Ascii representation of the unit number.
//
#define DRIVER_DEVICE_NAME "\\Device\\NtNetDetect"
//
// Device Name - this string is the name of the device in DOS space which
// maps from the DRIVER_DEVICE_NAME
//
#define DOS_DRIVER_DEVICE_NAME "\\DosDevices\\NetDTect"
//
// The symbolic link for the device driver name for win32 apis
//
#define DLL_CREATE_DEVICE_NAME "\\\\.\\NetDTect"
//
// NtDeviceIoControlFile IoControlCode values for this device.
//
// Warning: Remember that the low two bits of the code represent the
// method, and specify how the input and output buffers are
// passed to the driver via NtDeviceIoControlFile()
//
//
//
// Control codes
//
#define NETDTECT_READ_PORT_UCHAR 0x0
#define NETDTECT_READ_PORT_USHORT 0x1
#define NETDTECT_READ_PORT_ULONG 0x2
#define NETDTECT_WRITE_PORT_UCHAR 0x3
#define NETDTECT_WRITE_PORT_USHORT 0x4
#define NETDTECT_WRITE_PORT_ULONG 0x5
#define NETDTECT_READ_MAPPED_MEMORY 0x6
#define NETDTECT_WRITE_MAPPED_MEMORY 0x7
#define NETDTECT_SET_INTERRUPT_TRAP 0x8
#define NETDTECT_QUERY_INTERRUPT_TRAP 0x9
#define NETDTECT_REMOVE_INTERRUPT_TRAP 0xA
#define NETDTECT_CHECK_PORT_USAGE 0xB
#define NETDTECT_CHECK_MEMORY_USAGE 0xC
#define NETDTECT_CLAIM_RESOURCE 0xD
#define NETDTECT_TEMP_CLAIM_RESOURCE 0xE
#define NETDTECT_FREE_TEMP_RESOURCES 0xF
#define NETDTECT_RPCI 0x10
#define NETDTECT_WPCI 0x11
#define NETDTECT_FREE_TEMP_SPECIFIC_RESOURCES 0x12
#define IOCTL_BASE FILE_DEVICE_UNKNOWN
#define IOCTL_RP_METHOD 3
#define IOCTL_WP_METHOD 3
#define IOCTL_SIT_METHOD 3
#define IOCTL_QIT_METHOD 3
#define IOCTL_RIT_METHOD 3
#define IOCTL_WM_METHOD 1
#define IOCTL_RM_METHOD 2
#define IOCTL_CP_METHOD 3
#define IOCTL_CM_METHOD 3
#define IOCTL_CR_METHOD 1
#define NETDTECT_CONTROL_CODE(request, method) \
((IOCTL_BASE)<<16 | (request<<2) | method)
#define IOCTL_NETDTECT_RPC NETDTECT_CONTROL_CODE( NETDTECT_READ_PORT_UCHAR, \
IOCTL_RP_METHOD )
#define IOCTL_NETDTECT_RPS NETDTECT_CONTROL_CODE( NETDTECT_READ_PORT_USHORT, \
IOCTL_RP_METHOD )
#define IOCTL_NETDTECT_RPL NETDTECT_CONTROL_CODE( NETDTECT_READ_PORT_ULONG, \
IOCTL_RP_METHOD )
#define IOCTL_NETDTECT_WPC NETDTECT_CONTROL_CODE( NETDTECT_WRITE_PORT_UCHAR, \
IOCTL_WP_METHOD )
#define IOCTL_NETDTECT_WPS NETDTECT_CONTROL_CODE( NETDTECT_WRITE_PORT_USHORT, \
IOCTL_WP_METHOD )
#define IOCTL_NETDTECT_WPL NETDTECT_CONTROL_CODE( NETDTECT_WRITE_PORT_ULONG, \
IOCTL_WP_METHOD )
#define IOCTL_NETDTECT_RM NETDTECT_CONTROL_CODE( NETDTECT_READ_MAPPED_MEMORY, \
IOCTL_RM_METHOD )
#define IOCTL_NETDTECT_WM NETDTECT_CONTROL_CODE( NETDTECT_WRITE_MAPPED_MEMORY, \
IOCTL_WM_METHOD )
#define IOCTL_NETDTECT_SIT NETDTECT_CONTROL_CODE( NETDTECT_SET_INTERRUPT_TRAP, \
IOCTL_SIT_METHOD )
#define IOCTL_NETDTECT_QIT NETDTECT_CONTROL_CODE( NETDTECT_QUERY_INTERRUPT_TRAP, \
IOCTL_QIT_METHOD )
#define IOCTL_NETDTECT_RIT NETDTECT_CONTROL_CODE( NETDTECT_REMOVE_INTERRUPT_TRAP, \
IOCTL_RIT_METHOD )
#define IOCTL_NETDTECT_CPU NETDTECT_CONTROL_CODE( NETDTECT_CHECK_PORT_USAGE, \
IOCTL_CP_METHOD )
#define IOCTL_NETDTECT_CMU NETDTECT_CONTROL_CODE( NETDTECT_CHECK_MEMORY_USAGE, \
IOCTL_CM_METHOD )
#define IOCTL_NETDTECT_CR NETDTECT_CONTROL_CODE( NETDTECT_CLAIM_RESOURCE, \
IOCTL_CR_METHOD )
#define IOCTL_NETDTECT_TCR NETDTECT_CONTROL_CODE( NETDTECT_TEMP_CLAIM_RESOURCE, \
IOCTL_CR_METHOD )
#define IOCTL_NETDTECT_FTR NETDTECT_CONTROL_CODE( NETDTECT_FREE_TEMP_RESOURCES, \
IOCTL_CR_METHOD )
#define IOCTL_NETDTECT_FTSR NETDTECT_CONTROL_CODE( NETDTECT_FREE_TEMP_SPECIFIC_RESOURCES, \
IOCTL_CR_METHOD )
#define IOCTL_NETDTECT_RPCI NETDTECT_CONTROL_CODE( NETDTECT_RPCI, \
IOCTL_CR_METHOD )
#define IOCTL_NETDTECT_WPCI NETDTECT_CONTROL_CODE( NETDTECT_WPCI, \
IOCTL_CR_METHOD )
//
// Structure for holding the information in the IRP SystemBuffer
//
typedef union _CMD_ARGS
{
//
// READ_PORT_*
//
struct _RP
{
INTERFACE_TYPE InterfaceType;
ULONG Port;
ULONG BusNumber;
ULONG Value;
}
RP;
//
// WRITE_PORT_UCHAR
//
struct _WPC
{
INTERFACE_TYPE InterfaceType;
ULONG Port;
ULONG BusNumber;
UCHAR Value;
}
WPC;
//
// WRITE_PORT_USHORT
//
struct _WPS
{
INTERFACE_TYPE InterfaceType;
ULONG Port;
ULONG BusNumber;
USHORT Value;
}
WPS;
//
// WRITE_PORT_ULONG
//
struct _WPL
{
INTERFACE_TYPE InterfaceType;
ULONG Port;
ULONG BusNumber;
ULONG Value;
}
WPL;
//
// READ/WRITE MEMORY
//
struct _MEM
{
INTERFACE_TYPE InterfaceType;
ULONG Address;
ULONG BusNumber;
ULONG Length;
}
MEM;
//
// SET_INTERRUPT_TRAP
//
struct _SIT
{
INTERFACE_TYPE InterfaceType;
PHANDLE TrapHandle;
ULONG InterruptListLength;
ULONG BusNumber;
}
SIT;
//
// QUERY_INTERRUPT_TRAP
//
struct _QIT
{
HANDLE TrapHandle;
}
QIT;
//
// REMOVE_INTERRUPT_TRAP
//
struct _RIT
{
HANDLE TrapHandle;
}
RIT;
//
// CHECK_PORT_USAGE
//
struct _CPU
{
INTERFACE_TYPE InterfaceType;
ULONG Port;
ULONG BusNumber;
ULONG Length;
}
CPU;
//
// CHECK_MEMORY_USAGE
//
struct _CMU
{
INTERFACE_TYPE InterfaceType;
ULONG BaseAddress;
ULONG BusNumber;
ULONG Length;
}
CMU;
//
// CLAIM_RESOURCE
//
struct _CR
{
ULONG NumberOfResources;
}
CR;
//
// Get/Set PCI information
//
struct _PCI
{
ULONG BusNumber;
ULONG SlotNumber;
ULONG Offset;
ULONG Length;
}
PCI;
}
CMD_ARGS,
*PCMD_ARGS;