📄 ptuserio.cpp
字号:
//////////////////////////////////////////////////////////
// PTUSERIO.CPP文件
#include <windows.h>
#include <stdio.h>
#include <ntddndis.h>
#include "IOCOMMON.h"
#include "ptutils.h"
void DisplayAdapterInfo(HANDLE hAdapter)
{
char buffer[1024 + sizeof(PTUSERIO_OID_DATA) - 1] = {'\0'};
PPTUSERIO_OID_DATA pOid = (PPTUSERIO_OID_DATA)buffer;
pOid->Length = 1024;
// 查询制造商的描述信息
pOid->Oid = OID_GEN_VENDOR_DESCRIPTION;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter, pOid, TRUE))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
wprintf(L" Description: %S \n", pOid->Data);
// 查询正在使用的媒介
NDIS_MEDIUM NdisMedium;
pOid->Oid = OID_GEN_MEDIA_IN_USE ;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter, pOid, TRUE))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
NdisMedium = *((PNDIS_MEDIUM )pOid->Data);
switch(NdisMedium)
{
case NdisMedium802_3:
printf(" Medium: NdisMedium802_3 \n");
break;
case NdisMediumWan:
printf(" Medium: NdisMediumWan \n");
break;
default:
printf(" unkown type \n");
break;
}
// 查询连接状态
int nConnectedState;
pOid->Oid = OID_GEN_MEDIA_CONNECT_STATUS;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter, pOid, TRUE))
{
printf(" Media Connect Status: UNKNOWN \n ");
}
else
{
nConnectedState = *((int*)pOid->Data);
printf( " Media Connect Status: %s\n",
nConnectedState == NdisMediaStateConnected ? "Connected" : "Disconnected");
}
//查询网卡的连接速度
int nLinkSpeed;
pOid->Oid = OID_GEN_LINK_SPEED ;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,true))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
nLinkSpeed=*((int*)pOid->Data)*100;
printf(" LinkSpeed :%d bps\n",nLinkSpeed);
//查询网络类型
NDIS_802_11_NETWORK_TYPE NdisNetType;
pOid->Oid = OID_802_11_NETWORK_TYPES_SUPPORTED;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,true))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
NdisNetType = *((PNDIS_802_11_NETWORK_TYPE)pOid->Data);
switch(NdisNetType)
{
case Ndis802_11FH:
printf(" NETWORKTYPE: Ndis802_11FH \n");
break;
case Ndis802_11DS:
printf(" NETWORKTYPE: Ndis802_11DS \n");
break;
case 2:
printf(" NETWORKTYPE: Ndis802_11OFDM5 \n");
break;
case 3:
printf(" NETWORKTYPE: Ndis802_11OFDM24");
break;
default:
printf(" unkown type \n");
break;
}
//查询网络模式
NDIS_802_11_NETWORK_INFRASTRUCTURE ModeType;
pOid->Oid = OID_802_11_INFRASTRUCTURE_MODE ;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter, pOid, TRUE))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
ModeType = *((PNDIS_802_11_NETWORK_INFRASTRUCTURE)pOid->Data);
switch(ModeType)
{
case Ndis802_11IBSS:
printf(" Mode: Ad-hoc \n");
break;
case Ndis802_11Infrastructure:
printf(" Mode: Infrastructure \n");
break;
default:
printf(" Ndis802_11AutoUnknown \n");
break;
}
//查询网络SSID
NDIS_802_11_SSID SSID;
pOid->Oid = OID_802_11_SSID;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter, pOid, TRUE))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
SSID = *((PNDIS_802_11_SSID)pOid->Data);
printf(" SSID: ");
for(int i=0;i<32;i++)
{
if(SSID.Ssid[i]!='\0')
printf("%c",SSID.Ssid[i]);
else
{
printf("\n");
break;
}
}
/* //检查WEP状态
NDIS_802_11_WEP_STATUS WEP;
pOid->Oid = OID_802_11_WEP_STATUS;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,TRUE))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
WEP = *((PNDIS_802_11_WEP_STATUS)pOid->Data);
printf(" WEP STATUS : %d",WEP);
switch(WEP) {
case 0 :
printf(" WEP STATUS : Enable \n");
break;
case 2 :
printf(" WEP STATUS : Disable \n");
break;
default:
printf(" WEP STATUS : UNKNOWN \n");
}
//网卡能量模式
NDIS_802_11_POWER_MODE PowerModel;
pOid->Oid = OID_802_11_POWER_MODE;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,true))
{
printf(" PtAdapterRequest() failed \n");
return;
}
PowerModel=*((PNDIS_802_11_POWER_MODE)pOid->Data);
switch(PowerModel) {
case Ndis802_11PowerModeCAM:
printf(" PoweModel : Ndis802_11PowerModeCAM");
break;
case Ndis802_11PowerModeMAX_PSP:
printf(" PowerModel :Ndis802_11PowerModeMAX_PSP");
break;
case Ndis802_11PowerModeFast_PSP:
printf(" PowerModel :Ndis802_11PowerModeFast_PSP");
default:
printf(" Unknown Type!");
}
printf("\n");
//Auth
NDIS_802_11_AUTHENTICATION_MODE authtype;
pOid->Oid = OID_802_11_AUTHENTICATION_MODE;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,true))
{
printf("PtAdapterRequest() failed \n");
return;
}
authtype=*((PNDIS_802_11_AUTHENTICATION_MODE)pOid->Data);
printf("%d\n",authtype);
*/
}
//*******************************************************************************
void SetAdapterInfo(HANDLE hAdapter)
{
char buffer[1024 + sizeof(PTUSERIO_OID_DATA) - 1] = {'\0'};
PPTUSERIO_OID_DATA pOid = (PPTUSERIO_OID_DATA)buffer;
pOid->Length = 1024;
printf("\n**********************************\n");
/*//断开连接
pOid->Oid = OID_802_11_DISASSOCIATE;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,false))
{
printf(" PtAdapterRequest() failed \n ");
return;
}*/
pOid->Oid = OID_802_11_BSSID_LIST_SCAN;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,false))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
Sleep(6000);
//读取设置后的网卡信息
{
char *buffer;
buffer = (char *)malloc(sizeof(PTUSERIO_OID_DATA)+1024);
memset(buffer,0,1024);
PTUSERIO_OID_DATA *pOid;
pOid = (PTUSERIO_OID_DATA *)buffer;
PNDIS_802_11_BSSID_LIST Infolist;
pOid->Oid = OID_802_11_BSSID_LIST ;
pOid->Length = 1024;
if(!PtAdapterRequest(hAdapter,pOid,true))
{
printf(" PtAdapterRequest() failed \n ");
return;
}
Infolist = ((PNDIS_802_11_BSSID_LIST)pOid->Data);
printf("\n %d\n",Infolist->NumberOfItems);
NDIS_802_11_SSID sSSID;
NDIS_802_11_NETWORK_INFRASTRUCTURE aptype;
int flag = 20;
int k = 0;
printf(" SSID:\n");
do
{
int num = flag;
for(int i = 0;i<pOid->Data[flag-4];i++)
{
printf("%c",pOid->Data[num]);
num++;
}
aptype=(NDIS_802_11_NETWORK_INFRASTRUCTURE)pOid->Data[flag+76];
switch(aptype)
{
case Ndis802_11IBSS:
printf(" Mode: Ad-hoc \n");
break;
case Ndis802_11Infrastructure:
printf(" Mode: Infrastructure \n");
break;
default:
printf(" Ndis802_11AutoUnknown \n");
break;
}
printf("\n");
flag+=pOid->Data[flag-16];
k++;
} while(k<Infolist->NumberOfItems);
}
{
char array[32];
printf("Input a string:");
scanf("%s",array);
int len;
len = strlen(array);
char *data = array;
char *buffer;
PTUSERIO_OID_DATA *pOid;
buffer=(char *)malloc(sizeof(PTUSERIO_OID_DATA)+len);
memset(buffer,0,sizeof(PTUSERIO_OID_DATA)+len);
if(buffer==NULL) return ;
pOid = (PTUSERIO_OID_DATA *)buffer;
pOid->Oid = OID_802_11_SSID;
pOid->Length = len;
if(data) memcpy(pOid->Data,data,len);
if(!PtAdapterRequest(hAdapter,pOid,false))
{
free(buffer);
printf(" PtAdapterRequest() failed \n ");
return;
}
free(buffer);
return;
}
/*//设置网卡的Auth
{pOid->Oid = OID_802_11_AUTHENTICATION_MODE;
pOid->Length = 1024;
NDIS_802_11_AUTHENTICATION_MODE nType = Ndis802_11AuthModeOpen;
*(PNDIS_802_11_AUTHENTICATION_MODE)pOid->Data = nType;
if(!PtAdapterRequest(hAdapter,pOid,false))
{
printf(" PtAdapterSet() failed \n");
int i=::GetLastError();
printf("%d\n",i);
return;
}}
//设置网卡模式
{pOid->Oid = OID_802_11_INFRASTRUCTURE_MODE;
pOid->Length = 1024;
NDIS_802_11_NETWORK_INFRASTRUCTURE nType = Ndis802_11IBSS;
*(PNDIS_802_11_NETWORK_INFRASTRUCTURE)pOid->Data = nType;
if(!PtAdapterRequest(hAdapter,pOid,false))
{
printf(" PtAdapterSet() failed \n");
int i=::GetLastError();
printf("%d\n",i);
return;
}}
//设置网卡的SSID
{pOid->Oid = OID_802_11_SSID;
pOid->Length = 1024;
NDIS_802_11_SSID SSID ;
SSID.SsidLength = 5;
SSID.Ssid[0]='l';
SSID.Ssid[1]='i';
SSID.Ssid[2]='u';
SSID.Ssid[0]='b';
SSID.Ssid[1]='o';
*(PNDIS_802_11_SSID)pOid->Data = SSID;
if(!PtAdapterRequest(hAdapter,pOid,false))
{
printf(" PtAdapterSet() failed \n");
return;
}} */
}
int main()
{
HANDLE hControlDevice = PtOpenControlDevice();
CIMAdapters adapters;
if(!adapters.EnumAdapters(hControlDevice))
{
printf(" EnumAdapters failed \n");
return -1;
}
//printf(" Driver Bindings: \n");
//for(int i=0; i<adapters.m_nAdapters; i++)
int i=0;
{
// 显示虚拟适配器名称
//printf(" \"%ws\" \n", adapters.m_pwszVirtualName[i]);
// 显示下层适配器名称
//printf(" \"%ws\" \n", adapters.m_pwszAdapterName[i]);
HANDLE hLowerAdapter = PtOpenAdapter(adapters.m_pwszAdapterName[i]);
if(hLowerAdapter != INVALID_HANDLE_VALUE)
{
DisplayAdapterInfo(hLowerAdapter);
SetAdapterInfo(hLowerAdapter);
::CloseHandle(hLowerAdapter);
}
printf(" \n");
}
::CloseHandle(hControlDevice);
return 0;
}
/*
int main()
{
HANDLE hControlDevice = PtOpenControlDevice();
CIMAdapters adapters;
if(!adapters.EnumAdapters(hControlDevice))
{
printf(" EnumAdapters failed \n");
return -1;
}
printf(" Driver Bindings: \n");
for(int i=0; i<adapters.m_nAdapters; i++)
{
// 显示虚拟适配器名称
printf(" \042%ws\042\n", adapters.m_pwszVirtualName[i]);
// 显示下层适配器名称
printf(" \042%ws\042\n", adapters.m_pwszAdapterName[i]);
printf(" \n");
}
::CloseHandle(hControlDevice);
return 0;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -