Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
VALIDATE.H
Abstract:
This module contains the PRIVATE (driver-only) definitions for the code that implements the validate lower level filter driver.
Environment:
Kernel mode
Revision History:
Feb-97 : created by Kenneth Ray
--*/
#ifndef _VALUEADD_LOCAL_H
#define _VALUEADD_LOCAL_H
#include "usb100.h"
#include "usbdi.h"
#include "usbdlib.h"
#define HIDV_POOL_TAG (ULONG) 'ulaV'
#undef ExAllocatePool
#define ExAllocatePool(type, size) \
ExAllocatePoolWithTag (type, size, HIDV_POOL_TAG); // ExAllocatePool is only called in the descript.c and hidparse.c code.
// all other modules are linked into the user DLL. They cannot allocate any
// memory.
#pragma warning(error:4100) // Unreferenced formal parameter
#pragma warning(error:4705) // Statement has no effect
#if DBG
#define VA_KdPrint(_x_) \
DbgPrint ("USB_VA: "); \ DbgPrint _x_;
#define TRAP() DbgBreakPoint()
#else
#define VA_KdPrint(_x_)
#define TRAP()
#endif
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#define MAX(a,b) (((a) < (b)) ? (b) : (a))
//
// A device extension for the controling device object
//
typedef struct _VA_CONTROL_DATA { LIST_ENTRY UsbDevices; // A list of the Device device extensions
ULONG NumUsbDevices; KSPIN_LOCK Spin; // a sync spin lock for this data.
} VA_CONTROL_DATA, *PVA_CONTROL_DATA;
//
// A device extension for the device object placed into the attachment
// chain.
//
typedef struct _VA_USB_DATA { BOOLEAN Started; // This device has been started
BOOLEAN Removed; // This device has been removed
UCHAR Reseved2[2];
PDEVICE_OBJECT Self; // a back pointer to the actual DeviceObject
PDEVICE_OBJECT PDO; // The PDO to which this filter is attached.
PDEVICE_OBJECT TopOfStack; // The top of the device stack just
// beneath this filter device object.
ULONG PrintMask;
LIST_ENTRY List; // A link point for a list of hid device extensions
KEVENT StartEvent; // an event to sync the start IRP.
KEVENT RemoveEvent; // an event to synch outstandIO to zero
ULONG OutstandingIO; // 1 biased count of reasons why
// this object should stick around
USB_DEVICE_DESCRIPTOR DeviceDesc; WCHAR FriendlyName;
} VA_USB_DATA, *PVA_USB_DATA;
struct _VA_GLOBALS { PDEVICE_OBJECT ControlObject; };
extern struct _VA_GLOBALS Global;
//
// Print Masks
//
#define VA_PRINT_COMMAND 0x00000001
#define VA_PRINT_CONTROL 0x00000002
#define VA_PRINT_TRANSFER 0x00000004
#define VA_PRINT_DESCRIPTOR 0x00000008
#define VA_PRINT_FEATURE 0x00000010
#define VA_PRINT_FUNCTION 0x00000020
#define VA_PRINT_BEFORE 0x10000000
#define VA_PRINT_AFTER 0x20000000
#define VA_PRINT_ALL 0x000000FF
NTSTATUS VA_CreateClose ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_Pass ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_Power ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_PnP ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_Ioctl ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_Read ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_Write ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS VA_AddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject );
VOID VA_Unload( IN PDRIVER_OBJECT DriverObject );
NTSTATUS VA_StartDevice ( IN PVA_USB_DATA UsbData, IN PIRP Irp );
VOID VA_StopDevice ( IN PVA_USB_DATA HidDevice, IN BOOLEAN TouchTheHardware );
NTSTATUS VA_CallUSBD( IN PVA_USB_DATA UsbData, IN PURB Urb, IN PIRP Pirp );
NTSTATUS VA_FilterURB ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); #endif
|