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

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

?? dlgpgconfiguration.cpp

?? 1394測試程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// DlgPgConfiguration.cpp : implementation file
//

#include "stdafx.h"
#include "TestApp.h"
#include "DlgPgConfiguration.h"
#include "ddx_ex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgPgConfiguration dialog


CDlgPgConfiguration::CDlgPgConfiguration(CWnd* pParent /*=NULL*/)
	: CDialogPage(CDlgPgConfiguration::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgPgConfiguration)
	m_ValVendorLeafSize = 0;
	m_ValModelLeafSize = 0;
	m_ValUnitDepDirSize = 0;
	m_ValUnitDirSize = 0;
	m_ValHCGapCount = 63;
	m_CheckHCSetGapCount = FALSE;
	m_CheckModelLeaf = FALSE;
	m_CheckUnitDepDir = FALSE;
	m_CheckVendorLeaf = FALSE;
	m_CheckUnitDir = FALSE;
	m_nEachValue = 0;
	//}}AFX_DATA_INIT
}


void CDlgPgConfiguration::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgPgConfiguration)
	DDX_Control(pDX, IDC_CHECK_MODEL_LEAF, m_ButtonGetModelLeaf);
	DDX_Control(pDX, IDC_CHECK_VENDOR_LEAF, m_ButtonGetVendorLeaf);
	DDX_Control(pDX, IDC_CHECK_UNIT_DIR, m_ButtonGetUnitDir);
	DDX_Control(pDX, IDC_CHECK_UNIT_DEP_DIR, m_ButtonGetUnitDepDir);
	DDX_Control(pDX, IDC_CHECK_HC_GAPCOUNT, m_ButtonHCSetGapCount);
	DDX_Control(pDX, IDC_EDIT_NEW_GAPCOUNT, m_EditCtrlHCGapCountValue);
	DDX_Text(pDX, IDC_EDIT_NEW_GAPCOUNT, m_ValHCGapCount);
	DDV_MinMaxDWord(pDX, m_ValHCGapCount, 1, 63);
	DDX_Check(pDX, IDC_CHECK_HC_GAPCOUNT, m_CheckHCSetGapCount);
	DDX_Check(pDX, IDC_CHECK_MODEL_LEAF, m_CheckModelLeaf);
	DDX_Check(pDX, IDC_CHECK_UNIT_DEP_DIR, m_CheckUnitDepDir);
	DDX_Check(pDX, IDC_CHECK_VENDOR_LEAF, m_CheckVendorLeaf);
	DDX_Check(pDX, IDC_CHECK_UNIT_DIR, m_CheckUnitDir);
	DDX_Control(pDX, IDC_COMBO_DEVPROP_SPEED, m_ComboDevPropSpeed);
	DDX_Radio(pDX, IDC_RADIO_HCGET_UNI_ID, m_nEachValue);
	//}}AFX_DATA_MAP

}


BEGIN_MESSAGE_MAP(CDlgPgConfiguration, CDialog)
	//{{AFX_MSG_MAP(CDlgPgConfiguration)
	ON_BN_CLICKED(IDC_BUTTON_CONFIG_INFO, OnButtonConfigInfo)
	ON_BN_CLICKED(IDC_BUTTON_DEV_GET, OnButtonDevGet)
	ON_BN_CLICKED(IDC_BUTTON_HC_GET, OnButtonHcGet)
	ON_BN_CLICKED(IDC_BUTTON_DEV_SET, OnButtonDevSet)
	ON_BN_CLICKED(IDC_BUTTON_HC_SET, OnButtonHcSet)
	ON_BN_CLICKED(IDC_CHECK_HC_GAPCOUNT, OnCheckHCGapCount)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgPgConfiguration message handlers


void CDlgPgConfiguration::OnSelectionChange(BOOL bSelected)
{
	if ( bSelected == TRUE ) {
		// reset check boxes everytime we are selected,
		// this is because actual opened device may have changed
		m_ValVendorLeafSize = 0;
		m_ValModelLeafSize = 0;
		m_ValUnitDepDirSize = 0;
		m_ValUnitDirSize = 0;

		UpdateCheckBoxes();
		UpdateData(FALSE);
	}

}


BOOL CDlgPgConfiguration::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// fill combo box for set max. speed to device
	m_ComboDevPropSpeed.Init(g_SpeedSelectorTab);

	UpdateCheckBoxes();
	UpdateEditBoxesStates();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


//首先用OnButtonConfigInfo()得到所有緩沖區的大小,然后開辟相應大小的緩沖區,用OnButtonDevGet()再次發送IRP得到所需內容
//這兩個函數以及驅動程序中的相應代碼需要驗證
void CDlgPgConfiguration::OnButtonConfigInfo() 
{
	/*
	typedef struct _Get_1394_CONFIG_INFO_PARAMS
	{
		CONFIG_ROM      ConfigRom;                          // config rom
		ULONG           UnitDirectoryBufferSize;
		IO_ADDRESS      UnitDirectoryLocation;              // Starting Location of Unit Directory
		ULONG           UnitDependentDirectoryBufferSize;
		IO_ADDRESS      UnitDependentDirectoryLocation;
		ULONG           VendorLeafBufferSize;               // Size available to get vendor leafs
		ULONG           ModelLeafBufferSize;                // Size available to get model leafs    
	} Get_Config_Info_Params,*PGet_Config_Info_Params;
*/
	Get_Config_Info_Params  InfoParams;
	InfoParams.UnitDirectoryBufferSize = 0;
	InfoParams.UnitDependentDirectoryBufferSize = 0;
	InfoParams.VendorLeafBufferSize = 0;
	InfoParams.ModelLeafBufferSize = 0;

	DWORD Status = g_CurrentDev.GetDeviceConfigInfo(&InfoParams,sizeof(Get_Config_Info_Params));	
	if ( Status == STATUS_SUCCESS ) 
	{
		// save new buffer sizes, update check boxes enable state
		m_ValUnitDirSize = InfoParams.UnitDirectoryBufferSize;
		m_ValUnitDepDirSize = InfoParams.UnitDependentDirectoryBufferSize;
		m_ValVendorLeafSize = InfoParams.VendorLeafBufferSize;
		m_ValModelLeafSize = InfoParams.ModelLeafBufferSize;
		UpdateCheckBoxes();
	}
	else 
	{
		PrintOut(NL"GetDeviceConfigInfo() failed"NL);
		PrintError(Status);
	}
	PrintOut(NL);
}


void CDlgPgConfiguration::OnButtonDevGet() 
{
	/*		
	const unsigned int UnitDirectory = 0;
	const unsigned int UnitDependentDirectory = 1;
	const unsigned int VendorLeaf = 2;
	const unsigned int ModelLeaf = 3;
	*/
	unsigned int BlockType;
	unsigned char* BlockBufPtr;	
	DWORD BufSize;
	DWORD Status;
	DWORD i;

	if ( UpdateData(TRUE)	)
	{
		if ( m_CheckUnitDir ) 
		{
			BufSize = m_ValUnitDirSize;
			BlockBufPtr = NULL;
			BlockBufPtr = (unsigned char*)realloc(BlockBufPtr, BufSize);				
			BlockType = UnitDirectory;
			Status = g_CurrentDev.GetDeviceInfoBlock(&BlockType, BlockBufPtr, &BufSize);
			if (Status == STATUS_SUCCESS) 
			{
				// write the results to output window
//				PrintOut("UnitDirectory (%d bytes) successfully read:", BufSize);
				for (i=0; i<BufSize; i++) {
					if ( (i % 4) == 0 ) {
						PrintOut(NL"  ");
					}
	//				PrintOut("0x%02X ", *BlockBufPtr);
		//			BlockBufPtr++;
				}
				PrintOut(NL);
			}
			PrintOut(NL);
		}	
		if ( m_CheckUnitDepDir ) 
		{
			BufSize = m_ValUnitDepDirSize;
			BlockBufPtr = NULL;
			BlockBufPtr = (unsigned char*)realloc(BlockBufPtr, BufSize);			
			BlockType = UnitDependentDirectory;
			Status = g_CurrentDev.GetDeviceInfoBlock(&BlockType, BlockBufPtr, &BufSize);
			if (Status == STATUS_SUCCESS) {
				// write the results to output window
//				PrintOut("UnitDependentDirectory (%d bytes) successfully read:", BufSize);
				for (i=0; i<BufSize; i++) {
					if ( (i % 4) == 0 ) {
						PrintOut(NL"  ");
					}
//					PrintOut("0x%02X ", *BlockBufPtr);
//					BlockBufPtr++;
				}
				PrintOut(NL);
			}
			PrintOut(NL);
		}	
		/*
		typedef struct _TEXTUAL_LEAF {
			USHORT              TL_CRC;                 // using 1994 CRC algorithm
			USHORT              TL_Length;              // length of leaf in quads
			ULONG               TL_Spec_Id;             // vendor defined
			ULONG               TL_Language_Id;         // language Id
			UCHAR               TL_Data;                // variable length data
		} TEXTUAL_LEAF, *PTEXTUAL_LEAF;
		*/
		if ( m_CheckVendorLeaf ) 
		{
			BufSize = (sizeof(TEXTUAL_LEAF)-1) + m_ValVendorLeafSize;
			BlockBufPtr = NULL;
			BlockBufPtr = (unsigned char*)realloc(BlockBufPtr, BufSize);			
			BlockType = VendorLeaf;
			Status = g_CurrentDev.GetDeviceInfoBlock(&BlockType, BlockBufPtr, &BufSize);
			if (Status == STATUS_SUCCESS) {
				// write the results to output window
//				PrintOut("VendorLeaf (%d bytes) successfully read:"NL, BufSize);
				// ### it seems that string length field doesn磘 match the real value
/*				PrintOut("  String length: %d bytes  String CRC: 0x%04X"NL,
											(USHORT)(((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafLength),
											(USHORT)(((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafCRC));
				PrintOut("  Language ID: 0x%X  Specification ID of Language ID: 0x%X"NL,
											((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafLangID,
											((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafSpecID);

				PrintOut("  String is: "); 
				PrintOut("%S"NL,((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafData); 
*/
			}
			PrintOut(NL);
		}	

		if ( m_CheckModelLeaf ) 
		{
			BufSize = (sizeof(TEXTUAL_LEAF)-1) + m_ValModelLeafSize;
			BlockBufPtr = NULL;
			BlockBufPtr = (unsigned char*)realloc(BlockBufPtr, BufSize);			
			BlockType = ModelLeaf;
			Status = g_CurrentDev.GetDeviceInfoBlock(&BlockType, BlockBufPtr, &BufSize);
			if (Status == STATUS_SUCCESS) {
/*				// write the results to output window
				PrintOut("ModelLeaf (%d bytes) successfully read:"NL, BufSize);
				// ### it seems that string length field doesn磘 match the real value
				PrintOut("  String length: %d bytes  String CRC: 0x%04X"NL,
											(USHORT)(((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafLength),
											(USHORT)(((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafCRC));
				PrintOut("  Language ID: 0x%X  Specification ID of Language ID: 0x%X"NL,
											((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafLangID,
											((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafSpecID);

				PrintOut("  String is: "); 
				PrintOut("%S"NL,((SPEC1394_TEXTUAL_LEAF_INFO*)BlockBufPtr)->LeafData); 
*/
			}
			PrintOut(NL);
		}
	}
}

void CDlgPgConfiguration::OnButtonDevSet() 
{	
	DEVICE_XMIT_PROPERTIES XmitProps;
	
	if ( UpdateData(TRUE)	) {
		XmitProps.fulSpeed = m_ComboDevPropSpeed.GetCurItemData();
		
		// call driver (through class library)
		DWORD Status = g_CurrentDev.SetDeviceXmitProperties(&XmitProps);
		if (Status == STATUS_SUCCESS) {
			PrintOut("New Device Xmit Properties successfully set"NL);
		} else {
			PrintOut(NL"SetDeviceXmitProperties() failed"NL);
			PrintError(Status);
		}
		PrintOut(NL);
	}
}

//get、set host的函數OnButtonHcGet()和OnButtonHcSet()也需要測試
/*總共有六種類型,前三種分配空間,發送IRP即可
  第四種與分配計算機端的1394地址空間有關
  第五種和第六種都存在可能分配的緩沖區不夠的問題,可先發一個IRP過去,如果返回
  ERROR_INSUFFICIENT_BUFFER,則返回了正確的緩沖區長度,重新分配,重發IRP
*/
void CDlgPgConfiguration::OnButtonHcGet() 
{
	/*	
	//
	typedef struct _GET_LOCAL_HOST_INFORMATION {
		ULONG           Status;
		ULONG           nLevel;
		ULONG           ulBufferSize;
		UCHAR           Information[1];
	} GET_LOCAL_HOST_INFORMATION, *PGET_LOCAL_HOST_INFORMATION;
	*/	
	PGET_LOCAL_HOST_INFORMATION pGetLocalHostInfo;
	ULONG nLength;
	if ( UpdateData(TRUE)	) 
	{

		if ( m_nEachValue == 0 ) //GET_HOST_UNIQUE_ID GET_LOCAL_HOST_INFO1 主機控制器ID
		{
			nLength = sizeof(GET_LOCAL_HOST_INFORMATION) + sizeof(GET_LOCAL_HOST_INFO1);
			pGetLocalHostInfo = (PGET_LOCAL_HOST_INFORMATION)LocalAlloc(LPTR, nLength);
			pGetLocalHostInfo->Status = 0;
			pGetLocalHostInfo->nLevel = GET_HOST_UNIQUE_ID;
			pGetLocalHostInfo->ulBufferSize = nLength;
	
			// call driver (through class library)
			DWORD Status = g_CurrentDev.GetLocalHostInfo(pGetLocalHostInfo);
			if ( Status == STATUS_SUCCESS && pGetLocalHostInfo->Status == 0 )
			{
				// display information	
				PrintOut("get host success"NL);
				PGET_LOCAL_HOST_INFO1   LocalHostInfo1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲人成人精品| 91香蕉国产在线观看软件| 777亚洲妇女| 日韩电影在线观看电影| 91精品国产高清一区二区三区蜜臀| 亚洲第一精品在线| 在线播放91灌醉迷j高跟美女 | 2020国产成人综合网| 韩国女主播一区| 国产精品久99| 欧美日韩免费不卡视频一区二区三区| 婷婷综合另类小说色区| 精品国产免费久久| av一区二区久久| 亚洲一二三级电影| 精品国产乱码久久久久久牛牛 | 亚洲激情自拍视频| 5858s免费视频成人| 精品一区二区三区免费毛片爱| 国产午夜亚洲精品羞羞网站| 99国产一区二区三精品乱码| 水蜜桃久久夜色精品一区的特点 | 欧美影视一区二区三区| 久久99国产精品尤物| 中文乱码免费一区二区| 欧美亚洲综合网| 国产一区视频导航| 悠悠色在线精品| 精品成人一区二区三区| 色噜噜狠狠色综合中国| 美女在线一区二区| 亚洲精品日韩专区silk| 日韩精品中文字幕一区| 色就色 综合激情| 国内精品免费在线观看| 洋洋成人永久网站入口| 久久中文娱乐网| 欧美日韩国产bt| 91视频你懂的| 国产一区福利在线| 亚洲sss视频在线视频| 国产精品午夜免费| 欧美成人综合网站| 欧美日韩国产免费| 成人免费高清在线观看| 免费看精品久久片| 一区二区三区不卡视频| 精品捆绑美女sm三区| 欧洲人成人精品| 99久久99久久精品免费观看| 国产一区二区免费在线| 日韩一区欧美二区| 一区二区三区在线影院| 国产精品女人毛片| 久久人人爽人人爽| 日韩午夜在线播放| 欧美另类高清zo欧美| 91久久人澡人人添人人爽欧美| 国产成人自拍网| 久久精品噜噜噜成人av农村| 亚洲影视资源网| 亚洲欧美日韩系列| 国产精品久久久久久久久免费相片 | 天天色天天操综合| 一区二区高清视频在线观看| 国产精品免费av| 中文字幕+乱码+中文字幕一区| 久久日韩粉嫩一区二区三区| 欧美成人精精品一区二区频| 91精品免费在线| 欧美一区二区三区在线观看| 欧美日韩中文国产| 在线观看国产日韩| 色8久久精品久久久久久蜜| 97精品久久久久中文字幕| www.欧美色图| 99久久精品国产导航| 94-欧美-setu| 日本伦理一区二区| 91福利在线看| 在线观看日韩av先锋影音电影院| 97se亚洲国产综合自在线| 色综合久久99| 欧美日韩中文另类| 欧美一卡二卡在线观看| 日韩欧美国产精品一区| 久久夜色精品国产欧美乱极品| 久久中文娱乐网| 国产欧美一区二区精品婷婷| 中文字幕av一区二区三区 | 一区二区三区在线播| 有码一区二区三区| 婷婷国产v国产偷v亚洲高清| 六月丁香婷婷色狠狠久久| 精品一区二区在线视频| 国产成人精品免费一区二区| 97久久人人超碰| 欧美精品丝袜久久久中文字幕| 日韩欧美一级在线播放| 国产人久久人人人人爽| 一区二区三区四区不卡在线| 性欧美疯狂xxxxbbbb| 精品一区二区三区影院在线午夜| 国产精品中文字幕欧美| 91在线播放网址| 欧美挠脚心视频网站| 精品国产一区二区三区不卡| 国产人成亚洲第一网站在线播放| 亚洲人成网站影音先锋播放| 日韩精品欧美精品| 国产99久久久国产精品| 欧美综合天天夜夜久久| 日韩欧美国产综合| 亚洲啪啪综合av一区二区三区| 日本欧美肥老太交大片| av在线免费不卡| 欧美一级理论片| 国产精品久久久久久久久快鸭 | 高清不卡在线观看| 日本乱人伦一区| 亚洲精品一区二区三区香蕉| 亚洲男同1069视频| 精品一区二区免费在线观看| 91蜜桃视频在线| 久久综合九色综合欧美亚洲| 亚洲影院理伦片| 成人免费看片app下载| 制服丝袜亚洲精品中文字幕| 国产精品你懂的在线欣赏| 日韩av网站在线观看| 99re这里只有精品首页| 精品成人一区二区三区四区| 亚洲一二三区在线观看| 国产91在线看| 欧美成人a在线| 香蕉久久夜色精品国产使用方法| 成人午夜在线免费| 欧美成人一区二区| 五月综合激情婷婷六月色窝| 99在线热播精品免费| 久久久久久久综合日本| 石原莉奈在线亚洲三区| 一本在线高清不卡dvd| 国产日产欧美精品一区二区三区| 日韩中文字幕一区二区三区| 91在线精品一区二区| 国产网站一区二区| 看国产成人h片视频| 56国语精品自产拍在线观看| 一区二区在线观看av| 不卡区在线中文字幕| 久久夜色精品国产噜噜av| 麻豆精品一区二区综合av| 欧美在线短视频| 亚洲在线观看免费| 91久久国产最好的精华液| 国产精品美女久久久久av爽李琼| 国内精品嫩模私拍在线| 精品国产污污免费网站入口 | 夜夜嗨av一区二区三区网页| www.色精品| 中文字幕视频一区| 成人91在线观看| 日韩理论电影院| 一本色道久久综合亚洲91| 亚洲少妇30p| 欧美性高清videossexo| 成人免费视频在线观看| 91玉足脚交白嫩脚丫在线播放| 亚洲人妖av一区二区| 91蝌蚪国产九色| 亚洲一区二区成人在线观看| 欧美日韩国产免费| 视频一区二区欧美| 欧美大肚乱孕交hd孕妇| 老汉av免费一区二区三区| 精品电影一区二区三区| 国产一区二区三区免费播放 | xfplay精品久久| 国产精品资源在线| 国产精品欧美久久久久无广告| 成人教育av在线| 亚洲精品中文字幕在线观看| 在线看日韩精品电影| 亚洲国产美国国产综合一区二区| 欧美精品在线观看播放| 麻豆国产精品官网| 国产欧美日韩精品在线| 91老司机福利 在线| 视频一区二区三区在线| 欧美精品一区二区三区高清aⅴ| 丁香一区二区三区| 亚洲一区二区三区四区在线免费观看 | 国产精品自在欧美一区| 国产精品成人网| 欧美日韩三级一区| 老司机午夜精品| 中文字幕亚洲区| 正在播放亚洲一区| 成人一区二区三区中文字幕|