2007-09-08

無線LANの受信信号強度が取得できない

先日 SSIDを取得したのと同様の方法で無線LANの受信信号強度を取得しようとしています。
 
受信信号強度(RSSI)の取得には OID_802_11_RSSIを 使うようですが、実際に呼び出してみると ERROR_GEN_FAILURE(31)で失敗してしまいます。
 
// RSSI取得
pNdisQueryOid->Oid = OID_802_11_RSSI;
pNdisQueryOid->ptcDeviceName = _T("GSPI86861");

if (DeviceIoControl(
        hNdis                           ,
        IOCTL_NDISUIO_QUERY_OID_VALUE   ,
        (LPVOID)&cBuffer[0]             ,
        sizeof(cBuffer)                 ,
        (LPVOID)&cBuffer[0]             ,
        sizeof(cBuffer)                 ,
        &dwBytesReturned                ,
        NULL)) {

        memcpy_s(&lRssi, sizeof(NDIS_802_11_RSSI), &pNdisQueryOid->Data[0], sizeof(NDIS_802_11_RSSI));
        
        strMessage.Format(_T("RSSI: %ddB"), lRssi);
        MessageBox(NULL, strMessage, _T("受信信号強度を取得してみるテスト"), MB_OK);

} else {
    dwError = GetLastError();
    bRet  = FALSE;
}
 
いろいろ試行錯誤した結果、事前に OID_802_11_RSSI_TRIGGERで トリガ値をセットしておくと何度か成功したのですが、どのような値をセットすればいいのか、成功するときと失敗するときの違いは何なのかがよくわかっていません。
 
もう少し実験と整理が必要ですね。
素直にドキュメント読破した方がいいのかもしれませんが...
 

0 件のコメント: