⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb2com.struct.h

📁 这是一个关于USB转接串口的驱动程序开发
💻 H
字号:
//********************************************************************
//	created:	11:7:2008   21:17
//	file:		usb2com.struct.h
//	author:		tiamo
//	purpose:	structure
//********************************************************************

#pragma once

//
// device extension
//
typedef struct _USB2COM_DEVICE_EXTENSION
{
	//
	// signature
	//
	ULONG												Signature;

	//
	// self device
	//
	PDEVICE_OBJECT										FunctionDeviceObject;

	//
	// physical device
	//
	PDEVICE_OBJECT										PhysicalDeviceObject;

	//
	// lower device
	//
	PDEVICE_OBJECT										LowerDeviceObject;

	//
	// device number .etc COMx
	//
	ULONG												DeviceNumber;

	//
	// device name
	//
	UNICODE_STRING										DeviceName;

	//
	// dos device name
	//
	UNICODE_STRING										DosDeviceName;

	//
	// device interface symbolic link name
	//
	UNICODE_STRING										SymbolicLinkName;

	//
	// usbd interface info
	//
	PUSBD_INTERFACE_INFORMATION							UsbInterfaceInfo;

	//
	// device capabilities
	//
	DEVICE_CAPABILITIES									DeviceCapabilities;

	//
	// power state
	//
	DEVICE_POWER_STATE									CurrentPowerState;

	//
	// saved system power irp
	//
	PIRP												SavedSystemPowerIrp;

	//
	// remove lock
	//
	IO_REMOVE_LOCK										RemoveLock;

	//
	// opened
	//
	LONG												DeviceIsOpened;

	//
	// surprise removed
	//
	BOOLEAN												SurpriseRemoved;

	//
	// FIFO control
	//
	UCHAR												SerialFIFOControl;

	//
	// modem control
	//
	UCHAR												SerialModemControl;

	//
	// modem status
	//
	UCHAR												ModemStatus;

	//
	// tx hold reason
	//
	UCHAR												TxHoldReason;

	//
	// rx hold reason
	//
	UCHAR												RxHoldReason;

	//
	// baudrate
	//
	ULONG												Baudrate;

	//
	// serial stats
	//
	SERIALPERF_STATS									SerialStats;

	//
	// serial chars
	//
	SERIAL_CHARS										SerialChars;

	//
	// handflow
	//
	SERIAL_HANDFLOW										SerialHandFlow;

	//
	// queue size
	//
	SERIAL_QUEUE_SIZE									SerialQueueSize;

	//
	// timeouts
	//
	SERIAL_TIMEOUTS										SerialTimeouts;

	//
	// line control
	//
	SERIAL_LINE_CONTROL									SerialLineControl;

	//
	// status
	//
	SERIAL_STATUS										SerialStatus;

	//
	// comm prop
	//
	SERIAL_COMMPROP										SerialCommProp;

	//
	// write lock
	//
	KSPIN_LOCK											WriteLock;

	//
	// current write irp
	//
	PIRP												CurrentWriteIrp;

	//
	// write queue
	//
	LIST_ENTRY											WriteQueueListHead;

	//
	// pending write chars count
	//
	ULONG												PendingWriteCharsCount;

	//
	// write buffer
	//
	PUCHAR												WriteBuffer;

	//
	// write buffer offset
	//
	ULONG												WriteBufferOffset;

	//
	// write buffer length
	//
	ULONG												WriteBufferLength;

	//
	// write irp signature
	//
	LONG												CurrentWriteIrpSignature;

	//
	// bulk out urb
	//
	PURB												BulkOutUrb;

	//
	// bulk out irp
	//
	PIRP												BulkOutIrp;

	//
	// bulk out buffer
	//
	PVOID												BulkOutBuffer;

	//
	// bulk out urb signature
	//
	LONG												CurrentBulkOutUrbSignature;

	//
	// bulk out is running
	//
	BOOLEAN												BulkOutUrbIsRunning;

	//
	// force bulk in stop
	//
	BOOLEAN												ForceBulkOutUrbStop;

	//
	// bulk in stop event
	//
	KEVENT												BulkOutUrbStopEvent;

	//
	// read lock
	//
	KSPIN_LOCK											ReadLock;

	//
	// current read irp
	//
	PIRP												CurrentReadIrp;

	//
	// read queue
	//
	LIST_ENTRY											ReadQueueListHead;

	//
	// read buffer
	//
	PUCHAR												ReadBuffer;

	//
	// first char slot
	//
	ULONG												FirstReadCharSlot;

	//
	// char count
	//
	ULONG												ReadBufferCharsCount;

	//
	// bulk in urb
	//
	PURB												BulkInUrb;

	//
	// bulk in irp
	//
	PIRP												BulkInIrp;

	//
	// bulk in buffer
	//
	PVOID												BulkInBuffer;

	//
	// bulk in is running
	//
	BOOLEAN												BulkInUrbIsRunning;

	//
	// force bulk in stop
	//
	BOOLEAN												ForceBulkInUrbStop;

	//
	// bulk in stop event
	//
	KEVENT												BulkInUrbStopEvent;

	//
	// interrupt lock
	//
	KSPIN_LOCK											InterruptLock;

	//
	// interrupt urb
	//
	PURB												InterruptUrb;

	//
	// interrupt irp
	//
	PIRP												InterruptIrp;

	//
	// interrupt buffer
	//
	PVOID												InterruptBuffer;

	//
	// interrupt is running
	//
	BOOLEAN												InterruptUrbIsRunning;

	//
	// force stop
	//
	BOOLEAN												ForceInterruptUrbStop;

	//
	// stop event
	//
	KEVENT												InterruptUrbStopEvent;

	//
	// wait lock
	//
	KSPIN_LOCK											WaitEventLock;

	//
	// wait queue
	//
	LIST_ENTRY											WaitEventQueue;

	//
	// current wait mask
	//
	ULONG												CurrentWaitMask;
}USB2COM_DEVICE_EXTENSION,*PUSB2COM_DEVICE_EXTENSION;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -