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

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

?? test_usbsoftlock.cpp

?? 幾個非常適用的用FPGA編寫的實例
?? CPP
字號:
                // Test_USBSoftLock.cpp
//
// Generated by DriverWizard version DriverStudio 2.7.0 (Build 562)
//
// 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
// USBSoftLockDevice, which corresponds to Unit 0 of the
// USBSoftLockDevice device class in the driver.

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


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

#include <winioctl.h>
#include "..\USBSoftLockioctl.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_USBSOFTLOCK_IOCTL_GET_PASSWORD(void);
void Test_USBSOFTLOCK_IOCTL_SET_PASSWORD(void);

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

// Global data


#define N_IOCODES	2

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

//=== Parameterized IOCTL Example ===
//	"IOCTL_PARAMETERIZED",
	"USBSOFTLOCK_IOCTL_GET_PASSWORD",
	"USBSOFTLOCK_IOCTL_SET_PASSWORD",
	""
};

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

//=== Parameterized IOCTL Example ===
//	IOCTL_PARAMETERIZED,
	USBSOFTLOCK_IOCTL_GET_PASSWORD,
	USBSOFTLOCK_IOCTL_SET_PASSWORD,
	0
};


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

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

////////////////////////////////////////////////////////////////////////
// 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_USBSoftLock 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 USBSOFTLOCK_IOCTL_GET_PASSWORD:
						Test_USBSOFTLOCK_IOCTL_GET_PASSWORD();
						nArgIncrement = 2;
						break;

					case USBSOFTLOCK_IOCTL_SET_PASSWORD:
						Test_USBSOFTLOCK_IOCTL_SET_PASSWORD();
						nArgIncrement = 2;
						break;

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

				}
				break;

			case '?':
			case 'h':
			default:
				Usage();
		}
		nArgIndex += nArgIncrement;
	}
	
	printf("\n");
	system("pause");

	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;
	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_USBSoftLock [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_USBSoftLock 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

#define BUFFER_LENGTH		512

#define PASSWORD_LENGTH		8

//=== 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_USBSOFTLOCK_IOCTL_GET_PASSWORD
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_USBSOFTLOCK_IOCTL_GET_PASSWORD(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[BUFFER_LENGTH];		// Input to device
	CHAR	bufOutput[BUFFER_LENGTH];	// Output from device
	ULONG	nOutput;						// Count written to bufOutput

	memset(bufInput, 0, BUFFER_LENGTH);
	memset(bufOutput, 0, BUFFER_LENGTH);

	printf("bufInput : 0x%X, bufOutput : 0x%X\n", (LONG)bufInput, (LONG)bufOutput);

	// Call device IO Control interface (USBSOFTLOCK_IOCTL_GET_PASSWORD) in driver
	printf("Issuing Ioctl to device - ");
	if (!DeviceIoControl(hDevice,
						 USBSOFTLOCK_IOCTL_GET_PASSWORD,
						 bufInput,
						 PASSWORD_LENGTH,
						 bufOutput,
						 PASSWORD_LENGTH,
						 &nOutput,
						 NULL) )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
	else {
		printf("input buffer is : %s, output buffer is %s, output buffer size is %d", 
			bufInput, 
			bufOutput,
			nOutput);
	}
}

////////////////////////////////////////////////////////////////////////
// Test_USBSOFTLOCK_IOCTL_SET_PASSWORD
//
//		Test one Io Control Code
//
// TODO:
//		Pass appropriate arguments to your device and check
//		the return value
//
void Test_USBSOFTLOCK_IOCTL_SET_PASSWORD(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

	memset(bufInput, 0, BUFFER_LENGTH);
	memset(bufOutput, 0, BUFFER_LENGTH);

	strcpy(bufInput, "ABCDEFGH");

	// Call device IO Control interface (USBSOFTLOCK_IOCTL_SET_PASSWORD) in driver
	printf("Issuing Ioctl to device - ");
	if (!DeviceIoControl(hDevice,
						 USBSOFTLOCK_IOCTL_SET_PASSWORD,
						 bufInput,
						 PASSWORD_LENGTH,
						 bufOutput,
						 PASSWORD_LENGTH,
						 &nOutput,
						 NULL) )
	{
		printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
		Exit(1);
	}
	else {
		printf("input buffer is : %s, output buffer is %s, output buffer size is %d", 
			bufInput, 
			bufOutput,
			nOutput);
	}
}


////////////////////////////////////////////////////////////////////////
// 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一区二区三区免费野_久草精品视频
免费人成在线不卡| 91免费版pro下载短视频| 亚洲乱码国产乱码精品精的特点| 91碰在线视频| www.亚洲色图| 色悠久久久久综合欧美99| aa级大片欧美| 色噜噜狠狠色综合欧洲selulu | 久久成人麻豆午夜电影| 视频一区二区国产| 美女mm1313爽爽久久久蜜臀| 日本欧美肥老太交大片| 国产欧美日韩精品a在线观看| 欧美无乱码久久久免费午夜一区| 久久狠狠亚洲综合| 国产精品一区二区三区乱码| 成人av电影在线播放| jvid福利写真一区二区三区| 久久99热国产| 成人性视频网站| 色综合久久66| 日韩免费视频一区二区| 日本一区二区三区电影| 日韩免费看网站| 国产亚洲综合在线| 亚洲精品乱码久久久久久黑人| 久久久精品tv| 亚洲三级免费观看| 天天综合色天天| 丁香一区二区三区| 精品一区二区免费在线观看| 国产成人av自拍| 91麻豆国产精品久久| 777欧美精品| 国产精品久久久久久亚洲伦| 亚洲电影欧美电影有声小说| 极品少妇xxxx精品少妇偷拍| 日韩精品一级中文字幕精品视频免费观看| 国产精品蜜臀av| 亚洲一区影音先锋| 综合久久一区二区三区| 美女在线一区二区| 日本aⅴ亚洲精品中文乱码| 亚洲欧美日韩国产另类专区| 麻豆精品国产传媒mv男同| www.66久久| 精品国产一区二区国模嫣然| 一级精品视频在线观看宜春院| 自拍偷拍亚洲激情| 国产一区在线不卡| 国产91丝袜在线播放0| 国产麻豆视频精品| 91精品国产综合久久香蕉麻豆| 欧美美女一区二区在线观看| 国产精品视频观看| 国产日本一区二区| 久久国产精品99精品国产 | 一级日本不卡的影视| 国产91富婆露脸刺激对白| 国产成人亚洲综合色影视| 欧美精品乱码久久久久久 | 91福利视频网站| 中文字幕乱码一区二区免费| 欧美国产日韩在线观看| 国产一区二区主播在线| 制服丝袜亚洲精品中文字幕| 一区二区三区蜜桃| 波多野结衣欧美| 亚洲国产成人午夜在线一区| 国产乱码精品一品二品| 色诱视频网站一区| 亚洲欧美一区二区三区国产精品| 亚洲一区影音先锋| 欧美视频在线观看一区二区| 欧美电影精品一区二区| 美女精品一区二区| 日韩精品一区二区三区四区视频| 欧美国产综合色视频| 国产成人精品三级麻豆| 国产日产欧美一区| 亚洲国产日韩精品| 欧美日韩激情在线| 欧美激情一区二区三区| 成人黄色片在线观看| 亚洲三级在线免费观看| 在线精品视频一区二区三四| 亚洲国产一区二区三区| 欧美一区二区三区色| 精品亚洲免费视频| 国产精品情趣视频| 日韩精品每日更新| 欧美v国产在线一区二区三区| 亚洲婷婷综合色高清在线| 一本色道综合亚洲| 国产午夜精品一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 国内精品伊人久久久久影院对白| 91美女视频网站| 一区二区成人在线视频| av一区二区不卡| 亚洲图片欧美色图| 精品日韩在线观看| 97久久人人超碰| 午夜在线成人av| 久久一夜天堂av一区二区三区| 亚洲午夜av在线| 亚洲精品在线免费观看视频| 97se狠狠狠综合亚洲狠狠| 日韩福利视频导航| 国产精品久久久久四虎| 国产成人精品一区二区三区网站观看 | 亚洲免费视频中文字幕| 国产精品一区二区三区99| 亚洲三级小视频| 久久中文娱乐网| 91麻豆视频网站| 国产精品1区二区.| 天堂久久久久va久久久久| 国产精品初高中害羞小美女文| 国产麻豆精品theporn| 久久婷婷国产综合精品青草| 青青草国产精品97视觉盛宴| 678五月天丁香亚洲综合网| 成人一区二区视频| 麻豆视频一区二区| 一区二区三区丝袜| 国产精品美女视频| 久久色中文字幕| 91精品久久久久久久99蜜桃| 一本久道久久综合中文字幕| 日本亚洲电影天堂| 一区二区三区加勒比av| 欧美亚洲一区二区三区四区| 成人丝袜18视频在线观看| 老司机精品视频在线| 精品久久久影院| 欧美精品一级二级三级| 麻豆精品国产91久久久久久| 亚洲r级在线视频| 亚洲三级视频在线观看| 中文字幕免费不卡| 国产蜜臀97一区二区三区| 成人黄色在线看| 国产成人免费视频网站| 亚洲乱码中文字幕| 一区在线中文字幕| 亚洲日本乱码在线观看| 国产精品色呦呦| 国产精品你懂的在线欣赏| 国产日韩欧美精品在线| 国产婷婷一区二区| 久久久噜噜噜久噜久久综合| 色狠狠桃花综合| 91天堂素人约啪| 色乱码一区二区三区88 | 99久久综合国产精品| 国产激情精品久久久第一区二区 | 精品视频一区三区九区| 麻豆高清免费国产一区| 国产精品理论片| 国产精品久久久久国产精品日日 | 6080国产精品一区二区| 91精品啪在线观看国产60岁| 国产成人aaaa| 91视频在线观看| 欧洲日韩一区二区三区| 欧美放荡的少妇| 精品粉嫩aⅴ一区二区三区四区| 色综合中文字幕国产 | 亚洲精品中文字幕乱码三区| 一区二区成人在线观看| 三级欧美韩日大片在线看| 久久国产精品72免费观看| 高清不卡在线观看av| 色偷偷一区二区三区| 福利91精品一区二区三区| 国产电影精品久久禁18| 99久久久无码国产精品| 国产乱码字幕精品高清av| 成人18精品视频| 国产在线一区二区| 99久久99久久久精品齐齐| 欧美日韩极品在线观看一区| 久久影院午夜论| 亚洲高清视频的网址| 国产一区二区三区av电影 | 色综合久久中文综合久久97 | 国产精品久久久久久久久动漫| 久久色中文字幕| 一区二区三区在线观看欧美| 久久成人麻豆午夜电影| 日本乱人伦aⅴ精品| 日韩欧美电影一区| 91超碰这里只有精品国产| 国产日韩一级二级三级| 天堂资源在线中文精品| 成人一二三区视频| 日韩一级黄色大片| 亚洲欧美欧美一区二区三区| 国产一区二区伦理|