reactos/drivers/usb/nt4compat/usbdriver/gendrv.h
Amine Khaldi c424146e2c Create a branch for cmake bringup.
svn path=/branches/cmake-bringup/; revision=48236
2010-07-24 18:52:44 +00:00

63 lines
1.8 KiB
C

#ifndef __GENDRV_H__
#define __GENDRV_H__
#define GENDRV_MAX_EXT_DRVR 2
#define GENDRV_DRVR_FLAG_IF_DRVR 0x01
#define GENDRV_MSG_ADDDEVICE 0x01
#define GENDRV_MSG_STOPDEVICE 0x02
#define GENDRV_MSG_DISCDEVICE 0x03
typedef struct _GENDRV_EXT_DRVR_ENTRY
{
LIST_ENTRY drvr_link; // used for dynamic load/unload driver
ULONG drvr_key; // used to find the driver loaded, the key
// is ( vendor_id << 16 )|( product_id ) or
// ( class_id << 16 ) | ( sub_class_id << 8 ) | ( protocol_id ))
PDRIVER_OBJECT pext_drvr; // the external driver count
ULONG ref_count; // number of devices attached
LIST_HEAD dev_list; // link the devices by deviceExtension->dev_obj_link
} GENDRV_EXT_DRVR_ENTRY, *PGENDRV_EXT_DRVR_ENTRY;
typedef struct _GENDRV_DRVR_EXTENSION
{
FAST_MUTEX drvr_ext_mutex;
ULONG ext_drvr_count; // loaded driver count
LIST_HEAD ext_drvr_list;
GENDRV_EXT_DRVR_ENTRY ext_drvr_array[ GENDRV_MAX_EXT_DRVR ];
}GENDRV_DRVR_EXTENSION, *PGENDRV_DRVR_EXTENSION;
typedef struct _GENDRV_IF_CTX
{
UCHAR if_idx; // valid for if device
PUSB_INTERFACE_DESC pif_desc;
} GENDRV_IF_CTX, *PGENDRV_IF_IDX;
typedef struct _GENDRV_DEVICE_EXTENSION
{
//this structure is the device extension for dev_obj
//created for the device.
DEVEXT_HEADER dev_ext_hdr;
ULONG flags;
LIST_ENTRY dev_obj_link; // this link is used by the driver object to track the existing dev_objs
PGENDRV_EXT_DRVR_ENTRY ext_drvr_entry;
PDEVICE_OBJECT pdo; // Our device object
DEV_HANDLE dev_handle; // handle to the usb_dev under
PUCHAR desc_buf;
UCHAR dev_id; // used to build symbolic link
GENDRV_IF_CTX if_ctx;
KEVENT sync_event;
KSPIN_LOCK dev_lock;
PUSB_DRIVER pdriver;
PUSB_DEV_MANAGER dev_mgr;
} GENDRV_DEVICE_EXTENSION, *PGENDRV_DEVICE_EXTENSION;
#endif