亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? test_d12_driver.cpp

?? USB d12 驅動
?? CPP
字號:
// Test_D12_Driver.cpp
//
// Generated by DriverWizard version DriverStudio 3.0.0 (Build 1126)
//
// This console application demonstrates how to open a handle
// to a device in your driver, and communicate with the driver
// using Read, Write, and DeviceIoControl calls, as appropriate.
//
// This test program attempts to open the device using the
// GUID defined in "..\D12_DriverDeviceinterface.h"

#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

#include <winioctl.h>
#include "..\D12_Driverioctl.h"

#include "..\D12_DriverDeviceinterface.h"	// Has class GUID definition

// This function is found in module OpenByIntf.cpp
HANDLE OpenByInterface(GUID* pClassGuid, DWORD instance, PDWORD pError);

typedef void VOIDFUNC();

// Prototypes
void Usage(void);
void ShowIoctlValues(void);

//	TODO:
//		You can redefine the IOCTL handler prototypes as needed, adding
//		appropriate parameters that can be collected from the command line.
//		To do this you must modify the command line parsing logic.  An
//		example of this is shown in comments throughout the test application.
//
//=== Parameterized IOCTL Example ===
// void Test_IOCTL_PARAMETERIZED(int nVal, ULONG dwVal);
void Test_D12_DRIVER_READ(void);
void Test_D12_DRIVER_WRITE(void);

void CloseIfOpen(void);

// Global data


#define N_IOCODES	2

// Names of IOCTL codes
//
char *IOnames[N_IOCODES+1] =
{

//=== Parameterized IOCTL Example ===
//	"IOCTL_PARAMETERIZED",
	"D12_DRIVER_READ",
	"D12_DRIVER_WRITE",
	""
};

// IOCTL codes
//
int IOcodes[N_IOCODES+1] =
{

//=== Parameterized IOCTL Example ===
//	IOCTL_PARAMETERIZED,
	D12_DRIVER_READ,
	D12_DRIVER_WRITE,
	0
};


// Handle to device opened in driver.
//
HANDLE	hDevice = INVALID_HANDLE_VALUE;

// Class GUID used to open device
//
GUID ClassGuid = D12_DriverDevice_CLASS_GUID;


////////////////////////////////////////////////////////////////////////
// Exit
//
//		Print a message and exit
//
   void Exit(int res)
{
	printf("Exiting...\n\n");
	CloseIfOpen();
	exit(res);
}


////////////////////////////////////////////////////////////////////////
// Main entry point
//
//
int __cdecl main(int argc, char *argv[])
{
	int		nArgIndex;				// Walk through command line arguments
	int		nArgIncrement = 0;
	int		val;

//=== Parameterized IOCTL Example ===
//	int		nVal;
//	ULONG	dwVal;
	DWORD	Error;

	printf("Test application Test_D12_Driver starting...\n");

	hDevice = OpenByInterface( &ClassGuid, 0, &Error);
	if (hDevice == INVALID_HANDLE_VALUE)
	{
		printf("ERROR opening device: (%0x) returned from CreateFile\n", GetLastError());
		Exit(1);
	}
	else
	{
		printf("Device found, handle open.\n");
	}

	// Parse the command line

	if (argc < 2) Usage();

	nArgIndex = 1;
	while (nArgIndex < argc)
	{
		// Parse ahead to determine numeric value of argument

		if (nArgIndex+1 >= argc) Usage();
		if (!isdigit(argv[nArgIndex+1][0])) Usage();
		val = atoi(argv[nArgIndex+1]);

		switch (argv[nArgIndex][0])
		{

			case 'r':
			case 'R':
				printf("Driver does not have a read handler\n");
				nArgIncrement = 2;
				break;

			case 'w':
			case 'W':
				printf("Driver does not have a write handler\n");
				nArgIncrement = 2;
				break;

			case 'i':
			case 'I':
				if (val >= N_IOCODES)
				{
					printf("IO control code index must be less than %d\n", N_IOCODES);
					ShowIoctlValues();
					Exit(1);
				}
				switch (IOcodes[val])
				{

//=== Parameterized IOCTL Example ===
//					case IOCTL_PARAMETERIZED:
//						if (nArgIndex+3 >= argc) Usage();
//						nVal = atoi(argv[nArgIndex+2]);
//						dwVal = strtoul(argv[nArgIndex+3], NULL, 0);
//						Test_IOCTL_PARAMETERIZED(nVal, dwVal);
//						nArgIncrement = 4;
//						break;

					case D12_DRIVER_READ:
						Test_D12_DRIVER_READ();
						nArgIncrement = 2;
						break;

					case D12_DRIVER_WRITE:
						Test_D12_DRIVER_WRITE();
						nArgIncrement = 2;
						break;

					default:
						printf("IO control code not valid\n");
						Exit(1);

				}
				break;

			case '?':
			case 'h':
			default:
				Usage();
		}
		nArgIndex += nArgIncrement;
	}

	return 0;
}


////////////////////////////////////////////////////////////////////////
// CloseIfOpen
//
//		Close the device if we previously opened a handle to it.
//
void CloseIfOpen(void)
{
	if (hDevice != INVALID_HANDLE_VALUE)
	{
		// Close the handle to the driver
		if (!CloseHandle(hDevice))
		{
			printf("ERROR: CloseHandle returns %0x.\n", GetLastError());
		}
		hDevice = INVALID_HANDLE_VALUE;
	}
}






////////////////////////////////////////////////////////////////////////
// Usage
//
//		Print a usage message describing arguments to this program
//
void Usage(void)
{
	printf("Usage: Test_D12_Driver [r n] [w n] [i n]\n");
	printf("       i initiates an IO Control Code message with specified index value\n");
	ShowIoctlValues();
	printf("Example:\n");
	printf("    Test_D12_Driver r 32 w 32\n");
	printf("        read 32 bytes, then write 32 bytes\n");

	Exit(1);
}



#define	IOCTL_INBUF_SIZE	512
#define	IOCTL_OUTBUF_SIZE	512

//=== Parameterized IOCTL Example ===
//void Test_IOCTL_PARAMETERIZED(int nVal, ULONG dwVal)
//{
//  Function body same as other IOCTL handlers, with command line
//	parameters 'nVal' and 'dwVal' available as input.
//}

////////////////////////////////////////////////////////////////////////
// Test_D12_DRIVER_READ
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_D12_DRIVER_READ(void)
{
// Note that Input and Output are named from the point of view
// of the DEVICE:
//		bufInput  supplies data to the device
//		bufOutput is written by the device to return data to this application

	CHAR	bufInput[IOCTL_INBUF_SIZE];		// Input to device
	CHAR	bufOutput[IOCTL_OUTBUF_SIZE];	// Output from device
	ULONG	nOutput;						// Count written to bufOutput

	// Call device IO Control interface (D12_DRIVER_READ) in driver
	printf("Issuing Ioctl to device - ");
	if (!DeviceIoControl(hDevice,
						 D12_DRIVER_READ,
						 bufInput,
						 IOCTL_INBUF_SIZE,
						 bufOutput,
						 IOCTL_OUTBUF_SIZE,
						 &nOutput,
						 NULL)
	   )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
}

////////////////////////////////////////////////////////////////////////
// Test_D12_DRIVER_WRITE
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_D12_DRIVER_WRITE(void)
{
// Note that Input and Output are named from the point of view
// of the DEVICE:
//		bufInput  supplies data to the device
//		bufOutput is written by the device to return data to this application

	CHAR	bufInput[IOCTL_INBUF_SIZE];		// Input to device
	CHAR	bufOutput[IOCTL_OUTBUF_SIZE];	// Output from device
	ULONG	nOutput;						// Count written to bufOutput

	// Call device IO Control interface (D12_DRIVER_WRITE) in driver
	printf("Issuing Ioctl to device - ");
	if (!DeviceIoControl(hDevice,
						 D12_DRIVER_WRITE,
						 bufInput,
						 IOCTL_INBUF_SIZE,
						 bufOutput,
						 IOCTL_OUTBUF_SIZE,
						 &nOutput,
						 NULL)
	   )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
}


////////////////////////////////////////////////////////////////////////
// ShowIoctlValues
//
//		Print list of IO Control Code values for usage display
//
void ShowIoctlValues(void)
{
	int i;

	for (i=0; i<N_IOCODES; i++)
	{
		if (i==0)
			printf( "         IO control code index\n");
		printf( "           %d is code %s [%x]\n", i, IOnames[i], IOcodes[i]);

//=== Parameterized IOCTL Example ===
//		if (IOcodes[i] == IOCTL_PARAMETERIZED)
//		{
//			printf( "               and has two arguments: <arg1 desc.> <arg1 desc.>\n");
//			printf( "               Example: i %d <IOCTL index> <ex. arg1> <ex. arg2>\n", i);
//		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本午夜精品视频在线观看| 欧美日韩在线精品一区二区三区激情| 欧美一区二区精品| 亚洲r级在线视频| 国产精品一区在线观看乱码| 欧洲视频一区二区| 偷拍一区二区三区| 欧美三级韩国三级日本三斤| 亚洲少妇最新在线视频| 94-欧美-setu| 一区二区三区免费在线观看| 欧美主播一区二区三区| 国产精品不卡在线| 一本色道综合亚洲| 亚洲国产va精品久久久不卡综合| 99国产精品久| 亚洲妇熟xx妇色黄| 日韩你懂的在线播放| 国模套图日韩精品一区二区 | 欧美韩日一区二区三区| 成人毛片视频在线观看| 亚洲欧美日韩国产综合| 欧美性猛交一区二区三区精品 | 亚洲欧美激情小说另类| 国产精品资源在线看| 国产日韩精品久久久| 99久久久无码国产精品| 日本一区二区三区电影| 一本色道久久综合亚洲91| 亚洲综合精品久久| 日韩一区二区麻豆国产| 国产aⅴ精品一区二区三区色成熟| 国产精品美女久久久久av爽李琼| 在线观看一区不卡| 激情综合亚洲精品| 久久综合久久鬼色| 不卡高清视频专区| 亚洲第一激情av| 精品国产乱码91久久久久久网站| 成人黄色在线视频| 亚洲高清在线视频| 欧美一区二区三区四区视频| 成人综合婷婷国产精品久久蜜臀| 亚洲精品国产一区二区精华液 | 高清不卡在线观看| 热久久国产精品| 亚洲一区二区三区四区在线免费观看| 亚洲精品在线观看网站| 欧美揉bbbbb揉bbbbb| 91在线免费播放| 国产乱色国产精品免费视频| 午夜av一区二区三区| 亚洲精品成人精品456| 亚洲精品一区二区三区在线观看| 欧美性色黄大片手机版| 色综合天天综合给合国产| 国产精品亚洲视频| 国产一区二区福利视频| 免费成人在线观看视频| 亚洲成人动漫在线免费观看| ...av二区三区久久精品| 国产清纯美女被跳蛋高潮一区二区久久w | 国产亲近乱来精品视频| 欧美大白屁股肥臀xxxxxx| 一区二区三区在线视频免费| 欧美高清在线精品一区| 久久精品亚洲一区二区三区浴池| 欧美一区中文字幕| 在线综合+亚洲+欧美中文字幕| 欧美在线观看视频在线| 欧洲一区二区三区在线| 91九色02白丝porn| 91精品福利在线| 色婷婷久久久亚洲一区二区三区 | 欧美午夜不卡视频| 欧美性生活大片视频| 在线日韩一区二区| 欧美日韩一级二级| 欧美群妇大交群中文字幕| 在线观看亚洲专区| 在线播放亚洲一区| 欧美一区二区在线免费播放| 日韩三级伦理片妻子的秘密按摩| 亚洲成在人线在线播放| 亚洲激情一二三区| 亚洲国产精品欧美一二99| 亚洲高清一区二区三区| 日韩精品久久久久久| 蜜臀99久久精品久久久久久软件| 美女网站在线免费欧美精品| 精品一区二区三区香蕉蜜桃 | 亚洲图片激情小说| 亚洲色图19p| 一区二区三区加勒比av| 丝袜亚洲另类丝袜在线| 久久精品理论片| 丁香六月久久综合狠狠色| 91啦中文在线观看| 欧美色大人视频| 精品国产一二三区| 亚洲欧洲日韩女同| 婷婷成人激情在线网| 精品在线播放免费| 91美女片黄在线| 日韩一区二区三| 成人欧美一区二区三区白人| 亚洲成人精品一区| 韩国成人在线视频| 成人sese在线| 欧美丰满少妇xxxxx高潮对白 | 国产成人亚洲综合a∨婷婷图片| 99久久精品免费看| 91精品在线免费| 国产精品理论在线观看| 午夜精品久久久久| 成人精品电影在线观看| 777xxx欧美| 国产精品看片你懂得| 日韩激情一区二区| 成人精品免费看| 欧美精品18+| 国产精品久久久久久久久搜平片 | 91视频免费看| 欧美精品一区二区久久婷婷| 亚洲免费资源在线播放| 国产九色精品成人porny| 欧美日韩五月天| **性色生活片久久毛片| 久久精品国产**网站演员| 91一区二区在线| 久久久国际精品| 日韩高清不卡一区二区| 日本久久精品电影| 国产欧美日韩在线| 免费一区二区视频| 欧美日韩一区中文字幕| 亚洲欧洲另类国产综合| 国产原创一区二区三区| 欧美日韩日日摸| 亚洲综合色视频| 91麻豆国产香蕉久久精品| 国产欧美久久久精品影院| 免费观看一级欧美片| 欧美色综合网站| 一区二区在线看| 91视频国产资源| 亚洲同性同志一二三专区| 成人性生交大片免费看在线播放| 精品美女一区二区三区| 日本91福利区| 欧美一激情一区二区三区| 亚洲夂夂婷婷色拍ww47| 91麻豆免费看片| 国产精品成人一区二区艾草| 粉嫩av一区二区三区| 久久久天堂av| 福利一区在线观看| 国产精品五月天| 成人免费福利片| 综合久久综合久久| 91女厕偷拍女厕偷拍高清| 国产精品二三区| 99精品视频一区| 亚洲男人的天堂网| 色婷婷综合久久久中文一区二区| 亚洲欧美日韩国产手机在线| 97aⅴ精品视频一二三区| 中文字幕一区二区三区在线不卡| 丁香一区二区三区| 中文字幕一区二区三区不卡| jlzzjlzz亚洲日本少妇| 国产精品久久久久久久久搜平片 | 欧美网站一区二区| 亚洲第一二三四区| 欧美男人的天堂一二区| 天堂一区二区在线免费观看| 欧美精品久久天天躁| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩一区二区三区观看| 国内精品写真在线观看| 国产夜色精品一区二区av| 国产成人午夜高潮毛片| 专区另类欧美日韩| 欧美视频三区在线播放| 麻豆精品一区二区av白丝在线| 久久婷婷色综合| 波多野结衣在线一区| 亚洲一区国产视频| 日韩一区二区免费高清| 国产精品69毛片高清亚洲| 中文字幕一区二区三区四区| 精品污污网站免费看| 免费观看日韩av| 国产精品欧美久久久久一区二区| 91浏览器打开| 美美哒免费高清在线观看视频一区二区| 久久久久99精品一区| 在线亚洲精品福利网址导航| 精品一区二区在线视频| 一区在线播放视频|