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

📄 luojincdriv01device.h

📁 PLX9656驱动程序模型 实现DMA 可修改成其他芯片的驱动 plx9656driver with DMA
💻 H
字号:
// LuojincDriv01Device.h
//
// Generated by DriverWizard version DriverStudio 3.1.0 (Build 1722)
// Requires Compuware's DriverWorks classes
//

#ifndef __LuojincDriv01Device_h__
#define __LuojincDriv01Device_h__

#include "Plx9656Head.h"
class LuojincDriv01Device : public KPnpDevice
{
	// Constructors
public:
	SAFE_DESTRUCTORS;
	LuojincDriv01Device(PDEVICE_OBJECT Pdo, ULONG Unit);
	~LuojincDriv01Device();

	// Member Functions
public:
	DEVMEMBER_DISPATCHERS
	DEVMEMBER_CANCELIRP(LuojincDriv01Device, CancelQueuedIrp)
		// The ISR (interrupt service routine)
	MEMBER_ISR(LuojincDriv01Device, Isr_Irq);
		// The DPC (deferred procedure call) for the ISR
	MEMBER_DPC(LuojincDriv01Device, DpcFor_Irq);
	virtual NTSTATUS OnStartDevice(KIrp I);
	virtual NTSTATUS OnStopDevice(KIrp I);
	virtual NTSTATUS OnRemoveDevice(KIrp I);
	VOID Invalidate(void);
	virtual NTSTATUS DefaultPnp(KIrp I);
	virtual NTSTATUS DefaultPower(KIrp I);
	virtual NTSTATUS OnDevicePowerUp(KIrp I);
	virtual NTSTATUS OnDeviceSleep(KIrp I);
	void SerialRead(KIrp I);
	void SerialWrite(KIrp I);
	VOID ReadMemConfigRegFunc(KIrp I);
	VOID ReadIoConfigRegFunc(KIrp I);
	VOID WriteMemConfigRegFunc(KIrp I);
	VOID WriteIoConfigRegFunc(KIrp I);
	VOID ReadLocalSpace0Func(KIrp I);
	VOID ReadLocalSpace1Func(KIrp I);
	VOID WriteLocalSpace0Func(KIrp I);
	VOID WriteLocalSpace1Func(KIrp I);
	VOID GetDriverInfoFunc(KIrp I);
	VOID SetDriverInfoFunc(KIrp I);



 VOID StartDma(void);



inline void SetSgDesc(
		        PPLX9656_DESCRIPTOR pDesc, 
				ULONG PciLowPart, 
				ULONG PciHighPart,
				ULONG LocalAddr, 
				ULONG Length, 
				bool bValid, 
				bool bEnd, 
				ULONG DescPtr);









void SetFirstSgDma(PPLX9656_DESCRIPTOR pDescriptorVa);




void  EnableDMA0Interrupt(bool yorn);
void  ClearDMA0Interrupt(void);


void SetSgDmaMode(void);





#ifdef _COMMENT_ONLY

		// The following member functions are actually defined by the
		// a DEVMEMBER_xxx or MEMBER_xxx macro (such as DEVMEMBER_DISPATCHERS).
		// The macro __COMMENT_ONLY never gets defined.  These comment-only
		// definitions simply allow easy navigation to the functions within
		// the Developer Studio using the class browser.

	BOOLEAN Isr_Irq(void); // COMMENT_ONLY
	VOID DpcFor_Irq(PVOID Arg1, PVOID Arg2); // COMMENT_ONLY
	VOID CancelQueuedIrp(KIrp I);					// COMMENT_ONLY
	virtual NTSTATUS CleanUp(KIrp I);				// COMMENT_ONLY
	virtual NTSTATUS Create(KIrp I);				// COMMENT_ONLY
	virtual NTSTATUS Close(KIrp I);					// COMMENT_ONLY
	virtual NTSTATUS DeviceControl(KIrp I);			// COMMENT_ONLY
	virtual NTSTATUS SystemControl(KIrp I);			// COMMENT_ONLY
	virtual NTSTATUS Read(KIrp I);					// COMMENT_ONLY
	virtual VOID StartIo(KIrp I);					// COMMENT_ONLY
	virtual NTSTATUS Write(KIrp I);					// COMMENT_ONLY
#endif

	// Member Data
protected:
		// Unit number for this device (0-9)
	ULONG				m_Unit;
	KPnpLowerDevice		m_Lower;
		// The following members correspond to hardware resources in the
		// device.
	KMemoryRange		m_MemoryRange0;
	KMemoryRange		m_MemoryRange2;
	KMemoryRange		m_MemoryRange3;
	KIoRange				m_IoPortRange1;
//	KDmaAdapter			m_Dma;
	KInterrupt			m_Irq;
	KDeferredCall		m_DpcFor_Irq;


public:



//--------------Paet One -----------------//

PDEVICE_OBJECT             m_pDeviceObject ;
PDMA_ADAPTER               m_pDmaAdapter;
ULONG                      m_MapRegisterCount;
PUCHAR                     m_pCommBufferVa;
PPHYSICAL_ADDRESS          m_pCommBufferPa;

//--------------Part Two -----------------//

PMDL                       m_pMdl;
//PUCHAR                     m_pMdlVa;
PUCHAR                     m_pTransferVa;
PVOID                      m_pMapRegisterBase;

ULONG                      m_nBytesRequested;
ULONG                      m_nBytesRemaining;
ULONG                      m_nBytesTransfered;
ULONG                      m_nTransferSize;

//ULONG                      m_nMapRegsNeed;







};


#endif

⌨️ 快捷键说明

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