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

📄 maptest.c

📁 pci的驱动程序编程基本框架,在此基础上编程非常方便,实现了由PCI进行DMA传送数据功能
💻 C
字号:
#include "windows.h"#include "winioctl.h"#include "stdio.h"#include "stdlib.h"/* #include "ioaccess.h" */typedef LARGE_INTEGER PHYSICAL_ADDRESS;#include "skeleton_nt.h"/* *---------------------------------------------------------------------- * main -- * *	Tries to open the Skeleton driver and send it some IOCTLs * * Results: *	None *---------------------------------------------------------------------- */void __cdeclmain(int argc, char **argv){    HANDLE	hDriver;    PVOID	pMem;    DWORD	cbReturned;    BOOL	ret;    int		status;    /*     * Try to open the device     */    hDriver = CreateFile("\\\\.\\SKELETON0", GENERIC_READ | GENERIC_WRITE,			 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);    if (hDriver == INVALID_HANDLE_VALUE) {        printf ("Can't get a handle to SKELETON0 driver\n");	exit(1);    }    /*     * Try to map the skeleton memory     */    ret = DeviceIoControl(hDriver,			  (DWORD) IOCTL_SKELETON_MAP_USER_PHYSICAL_MEMORY,			  NULL, 0,                   /* In buffer */			  &pMem, sizeof(PVOID), /* Out buffer */			  &cbReturned,			  0);    if (! ret) {        /*         * We failed to map, possibly due to resource conflicts (i.e         * some other driver/device already grabbed the section we         * wanted).         */        printf("DeviceIoControl failed to map the memory\n");	status = 1;	goto done;    }    if (! pMem) {	printf ("pMem = NULL\n");	status = 1;	goto done;    }    /*     * Unmap the skeleton memory     */    DeviceIoControl(hDriver,		    (DWORD) IOCTL_SKELETON_UNMAP_USER_PHYSICAL_MEMORY,		    &pMem, sizeof(PVOID),		    NULL, 0, &cbReturned, 0);  done:    CloseHandle(hDriver);    exit(status);}

⌨️ 快捷键说明

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