pciSample(4)

2019-08-26 17:36

//下面几条语句设置DMA寄存器,读数据:FromDeviceToMemory //L地址

WRITE_REGISTER_USHORT((PUSHORT)(pREG+DMALBASE),RAM); //H地址

WRITE_REGISTER_ULONG((PULONG)(pREG+DMAHBASE),address);

//字节长度,0表示传输4字节,4表示传输8字节

WRITE_REGISTER_USHORT((PUSHORT)(pREG+DMASIZE),(USHORT)length-1);

//启动DMA传输 WRITE_REGISTER_USHORT((PUSHORT)(pREG+DMACTL),0x101);

// Release our interrupt spinlock WdfInterruptReleaseLock( pDeviceContext->Interrupt );

return TRUE; }

BOOLEAN

PCISample_EvtInterruptIsr(

IN WDFINTERRUPT Interrupt, IN ULONG MessageID ) {

PDEVICE_CONTEXT pDeviceContext; PUCHAR pREG; USHORT status; pDeviceContext = GetDeviceContext(WdfInterruptGetDevice(Interrupt)); pREG = pDeviceContext->MemBaseAddress;

//读取中断状态寄存器值

status = READ_REGISTER_USHORT((PUSHORT)(pREG+HINT)); if ((status & 0x020) == 0x020)

{ //判断是否为DMA传输结束中断 //若是,清除并禁止中断 WRITE_REGISTER_ULONG((PULONG)(pREG+HINT),0x3FF);

//

// Request the DPC to complete the transfer. //

WdfInterruptQueueDpcForIsr(Interrupt);

return TRUE; } else

return FALSE; // 不是由该设备产生的中断,返回FALSE }

VOID

PCISample_EvtInterruptDpc(

IN WDFINTERRUPT Interrupt, IN WDFOBJECT Device ) {

NTSTATUS status; WDFDEVICE device;

PDEVICE_CONTEXT pDeviceContext; WDFDMATRANSACTION dmaTransaction; BOOLEAN transactionComplete; WDFREQUEST request; size_t bytesTransferred;

pDeviceContext = GetDeviceContext(Device); dmaTransaction = pDeviceContext->DmaTransaction; request = WdfDmaTransactionGetRequest(dmaTransaction); // // Indicate this DMA operation has completed: // This may drive the transfer on the next packet if // there is still data to be transfered in the request. // transactionComplete =

WdfDmaTransactionDmaCompleted(dmaTransaction, &status); if (transactionComplete) {

}

//DMA传输字节数

bytesTransferred = WdfDmaTransactionGetBytesTransferred(dmaTransaction); //终止传输

WdfDmaTransactionRelease(dmaTransaction);

WdfRequestCompleteWithInformation(request, status, bytesTransferred); DbgPrint(\

return; }

/******************************************************************/ Resource.h

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file. // Used by WDFSample.rc //

// Next default values for new objects //

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif

/***************************************************8/ Sources

TARGETNAME=PCISample TARGETTYPE=DRIVER

KMDF_VERSION=1 INF_NAME=PCISample

MISCFILES=$(OBJ_PATH)\\$(O)\\$(INF_NAME).inf NTTARGETFILES=

C_DEFINES= $(C_DEFINES)

INCLUDES=$(INCLUDES);..\\..\\inc

SOURCES=driver.c \\ device.c \\ queue.c \\

WDFSample.rc

/*****************************************************************/ WDFSample.rc

//Microsoft Developer Studio generated resource script. //

#include \

#define APSTUDIO_READONLY_SYMBOLS

///////////////////////////////////////////////////////////////////////////// //

// Generated from the TEXTINCLUDE 2 resource. //

#define APSTUDIO_HIDDEN_SYMBOLS #include \

#undef APSTUDIO_HIDDEN_SYMBOLS #include \

///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS

///////////////////////////////////////////////////////////////////////////// // Chinese (P.R.C.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) #ifdef _WIN32

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED #pragma code_page(936) #endif //_WIN32

#ifndef _MAC

///////////////////////////////////////////////////////////////////////////// //

// Version //

VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0

PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else

FILEFLAGS 0x0L

#endif

FILEOS 0x40004L FILETYPE 0x3L FILESUBTYPE 0x7L BEGIN

BLOCK \ BEGIN

BLOCK \ BEGIN

VALUE \

VALUE \电子工业出版社\\0\ VALUE \ VALUE \ VALUE \

VALUE \最新WDF设备驱动程序开发(武安河)\\0\ VALUE \ VALUE \ VALUE \ VALUE \ VALUE \ VALUE \ END END

BLOCK \ BEGIN

VALUE \ END END

#endif // !_MAC

#ifdef APSTUDIO_INVOKED

///////////////////////////////////////////////////////////////////////////// //

// TEXTINCLUDE //

1 TEXTINCLUDE DISCARDABLE BEGIN

\END

2 TEXTINCLUDE DISCARDABLE


pciSample(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2号主变铁芯夹件接地故障处理方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: