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

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

?? test_motod12.cpp

?? 數碼顯示
?? CPP
字號:
// Test_MotoD12.cpp
//
// Generated by DriverWizard version DriverStudio 2.6.0 (Build 336)
//
// 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 with link name
// MotoD12Device, which corresponds to Unit 0 of the 
// MotoD12Device device class in the driver.

//
// You can build this application using the command line compiler with
// the following command:
//
//		cl Test_MotoD12.cpp
//


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

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


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_MOTOD12_IOCTL_START(void);
void Test_MOTOD12_IOCTL_STOP(void);
void Test_MOTOD12_IOCTL_READ(void);
void Test_MOTOD12_IOCTL_TIME(void);

void CloseIfOpen(void);
void doRead(int i);
void doWrite(int i);

// Global data


#define N_IOCODES	4

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

//=== Parameterized IOCTL Example ===
//	"IOCTL_PARAMETERIZED",
	"MOTOD12_IOCTL_START",
	"MOTOD12_IOCTL_STOP",
	"MOTOD12_IOCTL_READ",
	"MOTOD12_IOCTL_TIME",
	""
};

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

//=== Parameterized IOCTL Example ===
//	IOCTL_PARAMETERIZED,
	MOTOD12_IOCTL_START,
	MOTOD12_IOCTL_STOP,
	MOTOD12_IOCTL_READ,
	MOTOD12_IOCTL_TIME,
	0
};


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

// Name used to open device
//
char *sLinkName = "\\\\.\\MotoD12Device0";

////////////////////////////////////////////////////////////////////////
// OpenByName
//
//		Open a handle to the requested device
//
HANDLE OpenByName(void)
{
	// Create a handle to the driver
	return CreateFile(sLinkName,
					  GENERIC_READ | GENERIC_WRITE,
					  FILE_SHARE_READ,
					  NULL,
					  OPEN_EXISTING,
					  0,
					  NULL);
}



////////////////////////////////////////////////////////////////////////
// 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;

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

	hDevice = OpenByName();
	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':
				doRead(val);
				nArgIncrement = 2;
				break;

			case 'w':
			case 'W':
				doWrite(val);
				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 MOTOD12_IOCTL_START:
						Test_MOTOD12_IOCTL_START();
						nArgIncrement = 2;
						break;

					case MOTOD12_IOCTL_STOP:
						Test_MOTOD12_IOCTL_STOP();
						nArgIncrement = 2;
						break;

					case MOTOD12_IOCTL_READ:
						Test_MOTOD12_IOCTL_READ();
						nArgIncrement = 2;
						break;

					case MOTOD12_IOCTL_TIME:
						Test_MOTOD12_IOCTL_TIME();
						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;
	}
}


////////////////////////////////////////////////////////////////////////
// doRead
//
//		Read 'n' bytes of data from the device
//
// Note: This simple test app reads data from the device and displays the
//			data as characters.  This behavior can be modified as appropriate
//			for your device.
//
void doRead(int n)
{
	char	buf[64];
	ULONG	nRead;
	int		i;
	int		j;

	//buf = (char *) malloc(n);
	if (buf == NULL)
	{
		printf("Failed to allocate buffer for read");
		Exit(1);
	}

	// Read data from driver
	printf("Reading from device - ");
	ReadFile(hDevice, buf, n, &nRead, NULL);
	
	printf("%d bytes read from device (%d requested).\n", nRead, n);

	// Print what was read
	i = 0;
	while(i < n)
	{
		j = min((i+26),n);
		for(; i < j; i++)
		{
			printf("%c, ", buf[i]);
		}
		printf("\n");
	}
	
	//free(buf);
}


////////////////////////////////////////////////////////////////////////
// doWrite
//
//		Write 'n' bytes of data to the device
//
// Note: This simple test app writes sequential characters to the
// 			device.  This behavior can be modified as appropriate
//			for your device.
//
void doWrite(int n)
{
	char	*buf;
	ULONG	nWritten;
	int		i;
	int		j;

	buf = (char *) malloc(n);
	if (buf == NULL)
	{
		printf("Failed to allocate buffer for write");
		Exit(1);
	}

	// start with the mod26 letter of the number of bytes to write
	j = (n % 26);
	// load buffer with dummy data (abcdefg...)
	for (i=0; i<n; i++, j=(j + 1)%26)
	{
		buf[i] = 'a' + j;
	}
	
	// Write data to driver
	printf("Writing to device - ");
	WriteFile(hDevice, buf, n, &nWritten, NULL);
	printf("%d bytes written to device (%d attempted).\n", nWritten, n);

	// Print what was written
	i = 0;
	while(i < n)
	{
		j = min((i+26),n);
		for(; i < j; i++)
		{
			printf("%c, ", buf[i]);
		}
		printf("\n");
	}

	free(buf);
}


////////////////////////////////////////////////////////////////////////
// Usage
//
//		Print a usage message describing arguments to this program
//
void Usage(void)
{
	printf("Usage: Test_MotoD12 [r n] [w n] [i n]\n");
	printf("       r initiates a read of specified number of bytes\n");
	printf("       w initiates a write of specified number of bytes\n");
	printf("       i initiates an IO Control Code message with specified index value\n");
	ShowIoctlValues();
	printf("Example:\n");
	printf("    Test_MotoD12 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_MOTOD12_IOCTL_START
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_MOTOD12_IOCTL_START(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 (MOTOD12_IOCTL_START) in driver
	printf("Issuing Ioctl to device - ");
	printf("IOCTL START = %xd",MOTOD12_IOCTL_START);
	if (!DeviceIoControl(hDevice,
						 MOTOD12_IOCTL_START,NULL, 0, NULL, 0,
						 &nOutput,
						 NULL)
	   )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
}

////////////////////////////////////////////////////////////////////////
// Test_MOTOD12_IOCTL_STOP
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_MOTOD12_IOCTL_STOP(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 (MOTOD12_IOCTL_STOP) in driver
	printf("Issuing Ioctl to device - ");
	printf("IOCTL START = %xd",MOTOD12_IOCTL_STOP);
	if (!DeviceIoControl(hDevice,
						 MOTOD12_IOCTL_STOP,NULL, 0, NULL, 0,
						 &nOutput,
						 NULL)
	   )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
}

////////////////////////////////////////////////////////////////////////
// Test_MOTOD12_IOCTL_READ
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_MOTOD12_IOCTL_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 (MOTOD12_IOCTL_READ) in driver
	printf("Issuing Ioctl to device - ");
	printf("IOCTL START = %xd",MOTOD12_IOCTL_READ);
	if (!DeviceIoControl(hDevice,
						 MOTOD12_IOCTL_READ,NULL, 0, NULL, 0,
						 &nOutput,
						 NULL)
	   )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
}

////////////////////////////////////////////////////////////////////////
// Test_MOTOD12_IOCTL_TIME
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_MOTOD12_IOCTL_TIME(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 (MOTOD12_IOCTL_TIME) in driver
	printf("Issuing Ioctl to device - ");
	printf("IOCTL START = %lxd",MOTOD12_IOCTL_TIME);
	if (!DeviceIoControl(hDevice,
						 MOTOD12_IOCTL_TIME,
						 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一区二区三区免费野_久草精品视频
午夜精品久久久久久久久久| 国产成人免费9x9x人网站视频| 国产精品白丝在线| 国产欧美一区二区在线观看| 久久久噜噜噜久噜久久综合| 欧美欧美欧美欧美| 日韩一区二区三区在线视频| 欧美一级夜夜爽| 精品成人佐山爱一区二区| 欧美变态口味重另类| 久久久久青草大香线综合精品| 欧美xingq一区二区| 久久蜜桃av一区二区天堂| 日韩欧美在线综合网| 国产亚洲婷婷免费| 亚洲在线视频网站| 亚洲伊人色欲综合网| 亚洲国产成人av好男人在线观看| 午夜精品成人在线视频| 韩国精品一区二区| 懂色av噜噜一区二区三区av| 色av成人天堂桃色av| 在线精品视频一区二区| 欧美精三区欧美精三区| 26uuu国产电影一区二区| 最好看的中文字幕久久| 免费观看一级特黄欧美大片| 国产成人免费网站| 成人黄色电影在线| 欧美一区二区三区啪啪| 中文字幕欧美三区| 日韩av一级电影| 欧美性淫爽ww久久久久无| 亚洲乱码国产乱码精品精的特点| 国产曰批免费观看久久久| 欧美一区日韩一区| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩一区二区在线观看| 一区二区三区**美女毛片| 色综合久久久久综合体桃花网| 中文字幕欧美激情一区| 97久久人人超碰| 亚洲乱码精品一二三四区日韩在线| 成人激情图片网| 亚洲欧美激情小说另类| 欧洲精品一区二区| 蜜桃视频在线一区| 久久免费偷拍视频| 成人综合婷婷国产精品久久| 国产欧美一区二区三区在线老狼| 国产精品996| 亚洲婷婷国产精品电影人久久| 成人免费看视频| 亚洲成人精品在线观看| 91精品在线观看入口| 黑人巨大精品欧美黑白配亚洲| 国产亚洲女人久久久久毛片| voyeur盗摄精品| 日本最新不卡在线| 久久精品亚洲精品国产欧美| 一本大道久久a久久精品综合| 亚洲一区二区五区| 精品99999| 一本色道亚洲精品aⅴ| 亚洲福利国产精品| 久久久久久久久久久久久夜| 成人h动漫精品| 蜜臀国产一区二区三区在线播放| 欧美激情一区二区三区| 欧美少妇bbb| 国产黄色成人av| 午夜激情综合网| 中文字幕乱码久久午夜不卡| 欧美日韩国产不卡| 色综合久久综合中文综合网| 久久99久久精品| 亚洲妇熟xx妇色黄| 亚洲欧美色图小说| 久久精品这里都是精品| 欧美私人免费视频| 91蝌蚪porny九色| 成人午夜看片网址| 韩国三级在线一区| 久久av资源站| 丝袜脚交一区二区| 午夜精品久久久久久久久久久| 中文字幕精品综合| 久久在线观看免费| 精品国产亚洲一区二区三区在线观看| 欧美无砖专区一中文字| 91丨九色丨尤物| 一本大道综合伊人精品热热| av一区二区久久| 91丝袜高跟美女视频| 99精品久久久久久| 92国产精品观看| 99精品久久久久久| 色婷婷激情综合| 色婷婷精品大在线视频| 欧美中文字幕一区二区三区亚洲| 欧美综合欧美视频| 欧美日韩国产色站一区二区三区| 欧美性生交片4| 日韩写真欧美这视频| 欧美mv和日韩mv的网站| 久久色视频免费观看| 久久久噜噜噜久噜久久综合| 国产精品久久三| 亚洲午夜国产一区99re久久| 日韩和欧美一区二区三区| 美女尤物国产一区| 成人污污视频在线观看| 欧美亚洲国产一区在线观看网站| 欧美日韩在线亚洲一区蜜芽| 欧美日韩国产成人在线免费| 欧美一级一级性生活免费录像| 久久久综合精品| 一区二区三区小说| 久久精品国产99国产精品| 丁香啪啪综合成人亚洲小说 | 视频一区二区国产| 久久国产精品99久久人人澡| 99国产精品久久久久久久久久久 | 国产亚洲一区二区三区在线观看| 国产精品污www在线观看| 亚洲一区二区在线播放相泽| 国产精品影视天天线| 欧美日韩精品一区二区三区| 久久久影院官网| 香蕉成人伊视频在线观看| 国产一区二区三区在线观看免费视频| av色综合久久天堂av综合| 欧美成人a在线| 日韩精品欧美成人高清一区二区| av成人老司机| 国产三级一区二区| 精品一区二区影视| 欧美一区二区播放| 视频一区二区中文字幕| 91社区在线播放| 国产精品毛片大码女人| 狠狠色狠狠色综合日日91app| 欧美精选一区二区| 亚洲一级在线观看| 欧美视频在线一区二区三区| 亚洲免费在线观看| 一本大道久久a久久精二百| 1000精品久久久久久久久| 成人国产视频在线观看| 国产精品三级在线观看| 国产jizzjizz一区二区| 国产欧美日韩在线| 成人一级黄色片| 亚洲免费资源在线播放| 91老师片黄在线观看| 亚洲美女精品一区| 欧美性大战久久| 亚洲国产人成综合网站| 在线播放国产精品二区一二区四区| 亚洲一区在线观看视频| 欧美女孩性生活视频| 奇米影视在线99精品| 精品1区2区在线观看| 国产成人免费视频网站高清观看视频| 欧美激情综合在线| 色天使色偷偷av一区二区| 五月综合激情婷婷六月色窝| 91麻豆精品国产综合久久久久久| 日韩在线一区二区| 中文字幕高清不卡| 欧美性大战久久久| 国产精品一区二区你懂的| 亚洲视频免费在线| 日韩欧美另类在线| 成人av网站在线观看免费| 一个色在线综合| 精品福利二区三区| 色婷婷av一区二区三区gif| 奇米亚洲午夜久久精品| 综合久久国产九一剧情麻豆| 欧美男生操女生| www.亚洲色图| 免费看欧美美女黄的网站| 中文字幕一区二区三区精华液 | 欧美午夜精品久久久久久超碰| 美国十次综合导航| 亚洲一线二线三线久久久| 国产视频911| 精品国产伦一区二区三区免费| 在线观看不卡一区| 99国产一区二区三精品乱码| 久久99国产精品久久99| 亚洲资源在线观看| 亚洲丝袜美腿综合| 久久久国产精品麻豆| 91精品国产综合久久久蜜臀图片| 91片黄在线观看| 色综合久久天天| 色偷偷88欧美精品久久久| 国产iv一区二区三区|