程序功能:提取无线网卡的信号强度
问题:设备不能打开
无线网卡驱动的系统文件打不开,创建不了相关的设备hDevice
在DeviceIoControl中 参数IOCTL_GET_INFO 不知怎么定义请各位赐教,谢谢!!
readSS.cpp#include "StdAfx.h"
#include <stdio.h>
#include <windows.h>
#include "readSS.h"
#define __NOT_WINCE__#ifdef __NOT_WINCE__
#define SPRINT sprintf
#define STRCPY strcpy
#define STRCAT strcat
#define STRLEN strlen #else //! __NOT_WINCE__
#define SPRINT swprintf
#define STRCPY wcscpy
#define STRCAT wcscat
#define STRLEN wcslen
#endif //__NOT_WINCE__#define ShowMessage(str) \
::MessageBox( NULL, TEXT(str), TEXT("Warning"),MB_OKCANCEL )#define ShowMessageFmt(str) TCHAR lpCaption[260] ;\
SPRINT(lpCaption ,TEXT("%s") , TEXT(str) , GetLastError() ) ; \
ShowMessage(lpCaption );
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
//IoControlOpenCall(hDevice);
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
#define IOCTL_GET_INFO 0x00000017//0x170002 //0x170002 (EX_AC_BD_CLOSE_ERR) Bd close err = %d, bd # = %d, phy mod # = %d, bd type = %d
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//此处如何定义满足要求!
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++void CreadSS::GetApInfo(/*HWND hWnd*/ )
{
HANDLE hDevice ;
//++++++++++++++++++++SteP1++++++++++++++++++++++++++++++
hDevice = CreateFile("\\\\.\\C:\\WINDOWS\\system32\\drivers\\sis162u.sys",//"\\\\?\\H:\\winnt\\system32\\drivers\\wlluc48.sys",//m_pDriverName,//driverStr,
0,
FILE_SHARE_READ|FILE_SHARE_WRITE,
0,//NULL,
OPEN_EXISTING,
0,
0//NULL
);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 此处创建不了 hDevice;参数设置不正确。
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //C:\\WINDOWS\\system32\\drivers\\sis162u.sys
//++++++++++++++++++++SteP2++++++++++++++++++++++++++++++
if( hDevice == INVALID_HANDLE_VALUE )
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree( lpMsgBuf );
ShowMessageFmt("Can't open the driver getApinfo [%d]" );
return ;
} //++++++++++++++++++++SteP3++++++++++++++++++++++++++++++
memset(m_pOutBuf, 0x00, m_dwOutBuf_Size );
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
IoControlOpenCall(hDevice);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//参数出错,hDevice;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP5++++++++++++++++++++++++++++++
if ( (m_pOutBufW[0] !=0 ) | (m_pOutBufW[1] !=0 ) )
{
// Driver ready for action
do{
// Read access point scan results
//++++++++++++++++++++SteP5.A++++++++++++++++++++++++++++++
IoControlCall(hDevice, 0x820, 0x5DD); //++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++
PrintResult(/*hWnd*/);
} while( (m_dwBytesReturned>12) && (m_dwBytesReturned<=0x5DD) ) ;
// while( (m_dwBytesReturned<=12) | (m_dwBytesReturned>0x5DD) ) ;
// Broadcast the scan request //++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
IoControlScanCall(hDevice);
}
// Tell the driver we are done. //++++++++++++++++++++SteP7++++++++++++++++++++++++++++++
IoControlCloseCall(hDevice); //++++++++++++++++++++SteP8++++++++++++++++++++++++++++++
CloseHandle(hDevice); tCount++;}//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
//IoControlOpenCall(hDevice);
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
void CreadSS::IoControlOpenCall(HANDLE hDevice )
{
BOOL iDeviceIoControlFlag=false; iDeviceIoControlFlag = DeviceIoControl (hDevice,
(DWORD)( IOCTL_GET_INFO ) ,//没有定义 IOCTL_GET_INFO
//IOCTL_GET_INFO,
&m_dwInBuf,sizeof(m_dwInBuf),
&m_pOutBuf,sizeof(m_pOutBuf),
&m_dwBytesReturned,
(LPOVERLAPPED)NULL
); if( !iDeviceIoControlFlag )
{
LPVOID lpMsgBuf; FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree( lpMsgBuf );
//The LocalFree function frees the specified local memory object and invalidates its handle.
//This function is provided only for compatibility with 16-bit versions of Windows.
ShowMessageFmt("DeviceIoControl Error [%d]" );
}}
问题:设备不能打开
无线网卡驱动的系统文件打不开,创建不了相关的设备hDevice
在DeviceIoControl中 参数IOCTL_GET_INFO 不知怎么定义请各位赐教,谢谢!!
readSS.cpp#include "StdAfx.h"
#include <stdio.h>
#include <windows.h>
#include "readSS.h"
#define __NOT_WINCE__#ifdef __NOT_WINCE__
#define SPRINT sprintf
#define STRCPY strcpy
#define STRCAT strcat
#define STRLEN strlen #else //! __NOT_WINCE__
#define SPRINT swprintf
#define STRCPY wcscpy
#define STRCAT wcscat
#define STRLEN wcslen
#endif //__NOT_WINCE__#define ShowMessage(str) \
::MessageBox( NULL, TEXT(str), TEXT("Warning"),MB_OKCANCEL )#define ShowMessageFmt(str) TCHAR lpCaption[260] ;\
SPRINT(lpCaption ,TEXT("%s") , TEXT(str) , GetLastError() ) ; \
ShowMessage(lpCaption );
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
//IoControlOpenCall(hDevice);
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
#define IOCTL_GET_INFO 0x00000017//0x170002 //0x170002 (EX_AC_BD_CLOSE_ERR) Bd close err = %d, bd # = %d, phy mod # = %d, bd type = %d
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//此处如何定义满足要求!
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++void CreadSS::GetApInfo(/*HWND hWnd*/ )
{
HANDLE hDevice ;
//++++++++++++++++++++SteP1++++++++++++++++++++++++++++++
hDevice = CreateFile("\\\\.\\C:\\WINDOWS\\system32\\drivers\\sis162u.sys",//"\\\\?\\H:\\winnt\\system32\\drivers\\wlluc48.sys",//m_pDriverName,//driverStr,
0,
FILE_SHARE_READ|FILE_SHARE_WRITE,
0,//NULL,
OPEN_EXISTING,
0,
0//NULL
);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 此处创建不了 hDevice;参数设置不正确。
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //C:\\WINDOWS\\system32\\drivers\\sis162u.sys
//++++++++++++++++++++SteP2++++++++++++++++++++++++++++++
if( hDevice == INVALID_HANDLE_VALUE )
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree( lpMsgBuf );
ShowMessageFmt("Can't open the driver getApinfo [%d]" );
return ;
} //++++++++++++++++++++SteP3++++++++++++++++++++++++++++++
memset(m_pOutBuf, 0x00, m_dwOutBuf_Size );
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
IoControlOpenCall(hDevice);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//参数出错,hDevice;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP5++++++++++++++++++++++++++++++
if ( (m_pOutBufW[0] !=0 ) | (m_pOutBufW[1] !=0 ) )
{
// Driver ready for action
do{
// Read access point scan results
//++++++++++++++++++++SteP5.A++++++++++++++++++++++++++++++
IoControlCall(hDevice, 0x820, 0x5DD); //++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++
PrintResult(/*hWnd*/);
} while( (m_dwBytesReturned>12) && (m_dwBytesReturned<=0x5DD) ) ;
// while( (m_dwBytesReturned<=12) | (m_dwBytesReturned>0x5DD) ) ;
// Broadcast the scan request //++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
IoControlScanCall(hDevice);
}
// Tell the driver we are done. //++++++++++++++++++++SteP7++++++++++++++++++++++++++++++
IoControlCloseCall(hDevice); //++++++++++++++++++++SteP8++++++++++++++++++++++++++++++
CloseHandle(hDevice); tCount++;}//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++GetApInfo+++++++++
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
//IoControlOpenCall(hDevice);
//++++++++++++++++++++SteP4++++++++++++++++++++++++++++++
void CreadSS::IoControlOpenCall(HANDLE hDevice )
{
BOOL iDeviceIoControlFlag=false; iDeviceIoControlFlag = DeviceIoControl (hDevice,
(DWORD)( IOCTL_GET_INFO ) ,//没有定义 IOCTL_GET_INFO
//IOCTL_GET_INFO,
&m_dwInBuf,sizeof(m_dwInBuf),
&m_pOutBuf,sizeof(m_pOutBuf),
&m_dwBytesReturned,
(LPOVERLAPPED)NULL
); if( !iDeviceIoControlFlag )
{
LPVOID lpMsgBuf; FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree( lpMsgBuf );
//The LocalFree function frees the specified local memory object and invalidates its handle.
//This function is provided only for compatibility with 16-bit versions of Windows.
ShowMessageFmt("DeviceIoControl Error [%d]" );
}}
//IoControlCall(hDevice, 0x820, 0x5DD);
//++++++++++++++++++++SteP5.A++++++++++++++++++++++++++++++
void CreadSS::IoControlCall(HANDLE hDevice ,WORD wCode , WORD wLength )
{
BOOL iDeviceIoControlFlag=false ;
//m_dwInBuf= 0xFF020401; m_pOutBufW[2] = 0;
m_pOutBufW[3] = 4;
m_pOutBufW[4] = wLength;
m_pOutBufW[5] = wCode; iDeviceIoControlFlag =DeviceIoControl (hDevice,
//(DWORD)( IOCTL_GET_INFO ) ,
IOCTL_GET_INFO,
&m_dwInBuf,sizeof(m_dwInBuf),
&m_pOutBuf,sizeof(m_pOutBuf),
&m_dwBytesReturned,
0); if( !iDeviceIoControlFlag )
{
ShowMessageFmt("DeviceIoControl Error [%d]" );
}}
//++++++++++++++++++++SteP5.A++++++++++++++++++++++++++++++
//IoControlCall(hDevice, 0x820, 0x5DD);
//++++++++++++++++++++SteP5.A++++++++++++++++++++++++++++++//++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++
//PrintResult(/*hWnd*/);
//++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++
void CreadSS::PrintResult(/*HWND hWnd*/ )
{
int i, j =0;
int APCount = (m_dwBytesReturned-12) / 50;
CString str1,str2;
// TCHAR lpszText[260],lpszText1[260],lpszText2[260];
// TCHAR lpCaption[260];
//HDC hDC ;
//lpszText3[]=""; if( APCount == 0 ) return ;
//hDC = GetDC(hWnd); //for( i=0;i <APCount -1; i++) STRCPY(lpszText3,"");
for( i=0;i<6;i++)
{
j = 6+i*25 ; #define Swap_Val(a,b) (((int)(((BYTE*)(&a))[b])))
#define Swap(a) (Swap_Val(a,0)<<8) | Swap_Val(a,1) // MAC address of access point
/*SPRINT(lpCaption, TEXT("%.4X%.4X%.4X "),
Swap(m_pOutBufW[j+3]), Swap(m_pOutBufW[j+4]), Swap(m_pOutBufW[j+5]) );*/ SPRINT(lpCaption,"%.4X%.4X%.4X ",Swap(m_pOutBufW[j+3]), Swap(m_pOutBufW[j+4]), Swap(m_pOutBufW[j+5]) ); signal[i].MACAdress=lpCaption;
signal[i].Channel=m_pOutBufW[j];
signal[i].SignalStrength=m_pOutBufW[j+2];
signal[i].noise=m_pOutBufW[j+1];
signal[i].networkID=(TCHAR*)(&m_pOutBuf[j*2+18]); str1=lpCaption;
STRCAT(lpszText3,str1); SPRINT(temp, "%ld %ld %ld \n",
m_pOutBufW[j], m_pOutBufW[j+2], m_pOutBufW[j+1]);
str2=temp;
STRCAT(lpszText3,str2);
SPRINT(lpszText,//lpCaption,
TEXT(" %ld %ld %ld %ld %ld"), //%s %d %ld %d
tCount,
j,//m_dwBytesReturned,
m_pOutBufW[6], // Channel
m_pOutBufW[7], // Signal
m_pOutBufW[8]);
/*m_pOutBufW[j], // Channel
m_pOutBufW[j+2], // Signal
m_pOutBufW[j+1]*///, // Noise
/*(TCHAR*)(&m_pOutBuf[j*2+18]) ); */// Net ID SPRINT(lpszText1,//lpCaption,
TEXT(" %ld %ld %ld %ld %ld "), //%s %ld tCount,
m_dwBytesReturned,
m_pOutBufW[31],
m_pOutBufW[32],
m_pOutBufW[33]
/*,
m_pOutBufW[j],
m_pOutBufW[j+2],
m_pOutBufW[j+1]*///,
/*(TCHAR*)(&m_pOutBuf[j*2+18])*/ ); SPRINT(lpszText2,TEXT(" %ld %ld %ld %ld %ld "), //%s
tCount,
m_dwBytesReturned,
m_pOutBufW[56],
m_pOutBufW[57],
m_pOutBufW[58]//,
/*(TCHAR*)(&m_pOutBuf[j*2+18])*/ );
/*TextOut(hDC,10,10,lpCaption, STRLEN(lpCaption));
TextOut(hDC,10,60,lpszText, STRLEN(lpszText) );
TextOut(hDC,10,80,lpszText1, STRLEN(lpszText1) );
TextOut(hDC,10,100,lpszText2, STRLEN(lpszText2) );
*/
}// ReleaseDC(hWnd,hDC);
}//++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++
//PrintResult(/*hWnd*/);
//++++++++++++++++++++SteP5.B++++++++++++++++++++++++++++++//++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
//IoControlScanCall(hDevice);
//++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
void CreadSS::IoControlScanCall(HANDLE hDevice )
{
BOOL iDeviceIoControlFlag=false; m_pOutBufW[2] = 0;
m_pOutBufW[3] = 2;
m_pOutBufW[4] = 0x800;
m_pOutBufW[5] = 6; iDeviceIoControlFlag =DeviceIoControl (hDevice,
//(DWORD)( IOCTL_GET_INFO ) ,
IOCTL_GET_INFO,
&m_dwInBuf,sizeof(m_dwInBuf),
&m_pOutBuf,sizeof(m_pOutBuf),
&m_dwBytesReturned,
0//(LPOVERLAPPED)NULL
) ; if( !iDeviceIoControlFlag )
{
ShowMessageFmt("DeviceIoControl Error [%d]" );
}}
//++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
//IoControlScanCall(hDevice);
//++++++++++++++++++++SteP6++++++++++++++++++++++++++++++
//IoControlCloseCall(hDevice);
//++++++++++++++++++++SteP7++++++++++++++++++++++++++++++
void CreadSS::IoControlCloseCall(HANDLE hDevice )
{
BOOL iDeviceIoControlFlag=false ; m_pOutBufW[2] = 0x45;
m_pOutBufW[3] = 1;
m_pOutBufW[4] = 0;
m_pOutBufW[5] = 0; iDeviceIoControlFlag = DeviceIoControl (hDevice,
//(DWORD)( IOCTL_GET_INFO ) ,
IOCTL_GET_INFO,
&m_dwInBuf,sizeof(m_dwInBuf),
&m_pOutBuf,sizeof(m_pOutBuf),
&m_dwBytesReturned,
0
) ; if( !iDeviceIoControlFlag )
{
ShowMessageFmt("DeviceIoControl Error [%d]" );
}}
//++++++++++++++++++++SteP7++++++++++++++++++++++++++++++
//IoControlCloseCall(hDevice);
//++++++++++++++++++++SteP7++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP8++++++++++++++++++++++++++++++
//CloseHandle(hDevice);//The CloseHandle function closes an open object handle.
//BOOL CloseHandle(
// HANDLE hObject // handle to object to close
//);
//++++++++++++++++++++SteP8++++++++++++++++++++++++++++++
//++++++++++++++++++++SteP01++++++++++++++++++++++++++++++
//CreadSS::CreadSS(void)
//++++++++++++++++++++SteP01++++++++++++++++++++++++++++++
CreadSS::CreadSS(void)
{
m_pOutBufW = (WORD*)( &m_pOutBuf[0] ) ;
m_dwInBuf=0xFF020401;
//driverStr="\\\\.\\{5ECE4190-B085-4375-8B8A-40C8FAED1002}";
tCount=0;
//FindDriverName();
//driverStr="\\\\.\\{0D8B9FB3-1966-4FFC-8D66-CA34AA1FA5C2}";
// driverStr="\\\\.\\{{4D36E972-E325-11CE-BFC1-08002BE10318}}";
// driverStr="C:\\WINDOWS\\system32\\drivers\\sis162u.sys";
driverStr="\\\\.\\{{B8265A68-AD8D-41C3-AE9F-702B7893E44A}}";
}CreadSS::~CreadSS(void)
{
}
//++++++++++++++++++++SteP01++++++++++++++++++++++++++++++
//CreadSS::CreadSS(void)
//++++++++++++++++++++SteP01++++++++++++++++++++++++++++++//++++++++++++++++++++SteP02++++++++++++++++++++++++++++++
//void CreadSS::FindDriverName()
//++++++++++++++++++++SteP02++++++++++++++++++++++++++++++
void CreadSS::FindDriverName()
{
HKEY hKey;
// char driverString[0xFFFF];
TCHAR lpDriverName[260] = TEXT("") ;
TCHAR szInfo[] =
TEXT("SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_0b3b&Pid_1613\\5&3ae78c2c&0&1") ;
// TEXT("SYSTEM\\CurrentControlSet\\Enum\\PCMCIA\\Lucent_Technologies-WaveLAN/IEEE-C908\\1") ; //HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0b3b&Pid_1613\5&3ae78c2c&0&1
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, // Handle of an open key
//"SYSTEM\\CurrentControlSet\\Enum\\PCMCIA\\Lucent_Technologies-WaveLAN/IEEE-C908\\1",
szInfo, // Address of subkey name
(DWORD) 0, // Reserved value
KEY_QUERY_VALUE, // Desired security access
&hKey); // Opened handle buffer
// STRCPY( m_pDriverName, lpDriverName); if (lRet != ERROR_SUCCESS)
{
ShowMessage("Can't find WaveLan card"); return ;
} DWORD dwKeyType = REG_SZ;
TCHAR lpstr[261] ;
DWORD dwKeySize = 260 ; lRet = RegQueryValueEx(hKey,
"driver",
NULL,
&dwKeyType,
(LPBYTE)&lpstr[0],
&dwKeySize); TCHAR szInfo1[0xFFFF];
STRCPY(szInfo1,"SYSTEM\\CurrentControlSet\\Control\\Class\\");
STRCAT(szInfo1,lpstr); if (lRet != ERROR_SUCCESS)
{
ShowMessage("Can't find WaveLan card driver"); return ;
}
else{
RegCloseKey(hKey);
} lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, // Handle of an open key
szInfo1, // Address of subkey name
(DWORD) 0, // Reserved value
KEY_QUERY_VALUE, // Desired security access
&hKey); // Opened handle buffer
if (lRet != ERROR_SUCCESS)
{
ShowMessage("Can't find WaveLan card driver Name"); return ;
}
lRet = RegQueryValueEx(hKey,
"NetCfgInstanceId",
NULL,
&dwKeyType,
(LPBYTE)&lpstr[0],
&dwKeySize); if (lRet != ERROR_SUCCESS)
{
ShowMessage("Can''t load WaveLan driver name");
}
else
{
STRCPY( lpDriverName, TEXT("\\\\.\\") ) ;
STRCAT( lpDriverName , lpstr );
} RegCloseKey( hKey );
STRCPY( m_pDriverName ,lpDriverName );
if( STRLEN( m_pDriverName ) == 0)
{
ShowMessage("Error finding WaveLan driver");
}}
//++++++++++++++++++++SteP02++++++++++++++++++++++++++++++
//void CreadSS::FindDriverName()
//++++++++++++++++++++SteP02++++++++++++++++++++++++++++++//++++++++++++++++++++SteP03++++++++++++++++++++++++++++++
//void CreadSS::FormCreate
//++++++++++++++++++++SteP03++++++++++++++++++++++++++++++
void CreadSS::FormCreate( /*CObject lpObject*/ )
{
m_pOutBufW = (WORD*)( &m_pOutBuf[0] ) ;
m_dwInBuf= 0xFF020401;
// driverStr="\\\\.\\{5ECE4190-B085-4375-8B8A-40C8FAED1002}";
// driverStr="\\\\.\\{0D8B9FB3-1966-4FFC-8D66-CA34AA1FA5C2}"; driverStr="\\\\.\\{{4D36E972-E325-11CE-BFC1-08002BE10318}}";
FindDriverName();
}
//++++++++++++++++++++SteP03++++++++++++++++++++++++++++++
//void CreadSS::FormCreate
//++++++++++++++++++++SteP03++++++++++++++++++++++++++++++
#define __readSS_H__#ifdef __cplusplus
extern "C"
{
#endif struct CSignal
{
CString MACAdress;
int Channel;
int SignalStrength;
int noise;
CString networkID;
};
class CreadSS
{
private : TCHAR m_pDriverName[260] ;
LPCTSTR driverStr; #define m_dwOutBuf_Size 0x200B//0x4016
BYTE m_pOutBuf[m_dwOutBuf_Size] ; DWORD m_dwInBuf;
DWORD m_dwBytesReturned;
private : void IoControlCall(HANDLE,WORD, WORD );
void IoControlOpenCall(HANDLE);
void IoControlScanCall(HANDLE);
void IoControlCloseCall(HANDLE);
void PrintResult();
void FindDriverName(); public : CreadSS(void);
~CreadSS(void);
WORD* m_pOutBufW;
int tCount;
TCHAR lpszText[260],lpszText1[260],lpszText2[260];
TCHAR lpszText3[1000],temp[260];
TCHAR lpCaption[260];
CSignal signal[10]; void GetApInfo();
void FormCreate(/*CObject*/);
// void TimerTimer( /*HWND CObject*/); };
#ifdef __cplusplus
}
#endif#endif //__readSS_H__