VOID GetAPList(HANDLE Handle, AP_DATA **ppAP_data, long *plItems)
{
UCHAR  QueryBuffer[4096];
PNDISPROT_QUERY_OID pQueryOid;
PNDISPROT_SET_OID pSetOid;
PNDIS_802_11_BSSID_LIST pBssid_List;
ULONG  i = 0;
int  j = 0;
DWORD  dwBytesReturned;pSetOid = (PNDISPROT_SET_OID) &QueryBuffer[0];
pSetOid->Oid = OID_802_11_BSSID_LIST_SCAN;if (!DeviceIoControl(Handle,
IOCTL_NDISPROT_SET_OID_VALUE,
(LPVOID) &QueryBuffer[0],
sizeof(QueryBuffer),
(LPVOID) &QueryBuffer[0],
0,
&dwBytesReturned,
NULL))
{DEBUGP(("IOCTL SET BSSID_LIST_SCAN failed: %d\n", GetLastError()));
}pQueryOid = (PNDISPROT_QUERY_OID) &QueryBuffer[0];
pQueryOid->Oid = OID_802_11_BSSID_LIST;
if (DeviceIoControl(Handle, //<---This line fails to run!!!
IOCTL_NDISPROT_QUERY_OID_VALUE,
(LPVOID) &QueryBuffer[0],
sizeof(QueryBuffer),
(LPVOID) &QueryBuffer[0],
sizeof(QueryBuffer),
&dwBytesReturned,
NULL))
{
DEBUGP(("IOCTL BSSID_LIST succeeded\n"));
pBssid_List = (PNDIS_802_11_BSSID_LIST)pQueryOid->Data;
*plItems = pBssid_List->NumberOfItems;
*ppAP_data = (AP_DATA *) calloc(pBssid_List->NumberOfItems, sizeof(AP_DATA));for ( i = 0; i < pBssid_List->NumberOfItems; i++ )
{
for ( j = 0; j < 6; j++ )
{
(*ppAP_data)[i].mac_addr[j] = (pBssid_List->Bssid[i]).MacAddress[j];
}
(*ppAP_data)[i].Rssi = (pBssid_List->Bssid[i]).Rssi;
}
}else
{DEBUGP(("IOCTL BSSID_LIST failed: %d\n", GetLastError()));
}}如题,上面的一段程序我是在网上找到的。 我有些看不懂。
PNDISPROT_QUERY_OID pQueryOid;
PNDISPROT_SET_OID pSetOid;  这两句,为什么在MSDN上PNDISPROT_QUERY_OID和PNDISPROT_SET_OID找不到相应的类结构体。我觉得应该不是自己定义的。请教牛人。