?? testdevice.cpp
字號(hào):
// testdevice.cpp: implementation of the Ctestdevice class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "testpro.h"
#include "testdevice.h"
#include "TestDeviceInterface.h"
#include "testioctl.h"
#include <winioctl.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
HANDLE OpenByInterface(GUID* pClassGuid, DWORD instance, PDWORD pError);
GUID ClassGuid = TestDevice_CLASS_GUID;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Ctestdevice::Ctestdevice()
{
}
Ctestdevice::~Ctestdevice()
{
}
DWORD Ctestdevice::Endpoint1ReadPipes(UINT Length, void *pBuffer)
{
ULONG nOutput; // Count written to bufOutput
// Call device IO Control interface (THERMOMETER_READ_DATA) in driver
if (!DeviceIoControl(hDevice,
D12_DRIVER_READ,
pBuffer,
Length,
pBuffer,
Length,
&nOutput,
NULL)
)
{
DWORD dError=GetLastError();
CString error;
error.Format("ERROR:DeviceIoControl read returns %d",dError);
AfxMessageBox(error);
return dError;
}
/* CString readnum;
readnum.Format("讀到的數(shù)據(jù)大小為%d", nOutput);
AfxMessageBox(readnum);*/
return ERROR_SUCCESS;
}
DWORD Ctestdevice::Endpoint1WritePipes(UINT Length, void *pBuffer)
{
ULONG nOutput; // Count written to bufOutput
// Call device IO Control interface (THERMOMETER_READ_DATA) in driver
if (!DeviceIoControl(hDevice,
D12_DRIVER_WRITE,
pBuffer,
Length,
pBuffer,
Length,
&nOutput,
NULL)
)
{
DWORD dError=GetLastError();
CString error;
error.Format("ERROR:DeviceIoControl write returns %d",dError);
AfxMessageBox(error);
return dError;
}
/* CString writenum;
writenum.Format("發(fā)送的數(shù)據(jù)大小為%d", nOutput);
AfxMessageBox(writenum);*/
return ERROR_SUCCESS;
}
DWORD Ctestdevice::IniDevice()
{
DWORD dError = 0;
hDevice = OpenByInterface( &ClassGuid, 0, &dError);
if (hDevice == INVALID_HANDLE_VALUE)
{
CString error;
error.Format("設(shè)備不可用,錯(cuò)誤號(hào)(%d),請(qǐng)重新連接!", dError);
AfxMessageBox(error);
return dError;
}
else
{
AfxMessageBox("設(shè)備可使用!");
}
return ERROR_SUCCESS;
}
DWORD Ctestdevice::ReadBulkPipes(UINT Length,void* pBuffer,DWORD* dwBytesTransferred)
{
if (!DeviceIoControl(hDevice,
D12_DRIVER_BULK_IN,
pBuffer,
Length,
pBuffer,
Length,
dwBytesTransferred,
NULL)
)
{
DWORD dError=GetLastError();
CString error;
error.Format("塊讀取錯(cuò)誤%d",dError);
return dError;
}
/* CString num;
num.Format("塊傳讀取數(shù)據(jù)個(gè)數(shù)是%d!",*dwBytesTransferred);
AfxMessageBox(num);*/
return ERROR_SUCCESS;
}
DWORD Ctestdevice::WriteBulkPipes(UINT Length,void* pBuffer,DWORD* dwBytesTransferred)
{
if (!DeviceIoControl(hDevice,
D12_DRIVER_BULK_OUT,
pBuffer,
Length,
pBuffer,
Length,
dwBytesTransferred,
NULL)
)
{
DWORD dError=GetLastError();
CString error;
error.Format("塊寫入錯(cuò)誤%d",dError);
AfxMessageBox(error);
return dError;
}
/* CString num;
num.Format("塊寫入數(shù)據(jù)個(gè)數(shù)是%d!",*dwBytesTransferred);
AfxMessageBox(num);*/
return ERROR_SUCCESS;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -