⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 profile.cpp

📁 WinCE5.0部分核心源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    if (index > 0) {
#ifdef UNDER_CE
        //  Prefix note:: NumStr can not return more than 33 bytes.
#endif
        strcpy(prefix, NumStr((ULONG)index, 10));
        }
    // 
    // Buffer to hold all encoded zflags sections
    // 
    UCHAR zFlagsBuf[(2 * sizeof(STPROFILE)) + 1];
    memset(zFlagsBuf, '0', sizeof(zFlagsBuf));
    // 
    // Sizes of each zflags section.
    // 
    UINT sizes[NUM_ZFLAG_KEYS]  =   {
                                        2 * sizeof(profile->zFlags.sum),            // 4
                                        2 * 127,                                    // 254
                                        2 * (sizeof(profile->zFlags.cfg) - 127),    // 58
                                        2 * sizeof(profile->zFlags.SSIDList),       // 208
                                        2 * sizeof(profile->zFlags.APList),         // 52
                                        2 * sizeof(profile->properties)             // 35
                                    };
    // 
    // Read each zflag section from the registry (ASCII encoded).
    // 
    BOOLEAN breakout    = FALSE;
    char    *regkey     = new char[strlen(__zFlagsRegKeyBaseName) + strlen(prefix) + strlen(NumStr(NUM_ZFLAG_KEYS, 10)) + 1];
    int     offset      = 0;
    if (regkey) {
        for (i = 0; (i < NUM_ZFLAG_KEYS) && !breakout; i++) {
            // 
            // Build reg key
            // 
            strcpy(regkey, prefix);
            strcat(regkey, __zFlagsRegKeyBaseName);
            strcat(regkey, NumStr(i+1, 10));
            // 
            // Convert to unicode
            // 
            NDIS_STRING uniRegKey;
            NdisInitString(&uniRegKey, (PUCHAR)regkey);

            if (!GetConfigEntry(ConfigHandle, &uniRegKey, zFlagsBuf + offset, sizes[i]) && 
                (i <= NUM_REQUIRED_ZFLAG_KEYS)) {
                breakout = TRUE;
                }

            offset += sizes[i];

            NdisFreeString(uniRegKey);
            }
        // 
        // Decode 'em if we got 'em all.
        // 
        if (i == NUM_ZFLAG_KEYS) {
            *checkSum   = decodeZFlags(profile, zFlagsBuf);
            retval      = TRUE;
            }
        delete regkey;
        }

    if (retval) {
        // 
        // Set default name if none specified.
        // 
        if (*profile->properties.name == '\0') {
            // 
            // Name is set based on home config bit
            // 
            if (profile->zFlags.cfg.HomeConfiguration & 0x0001) {
                strcpy(profile->properties.name, DEFAULT_HOME_PROFILE_NAME);
                }
            else {
                strcpy(profile->properties.name, DEFAULT_ENTERPRISE_PROFILE_NAME);
                }
            // 
            // Only the zeroth profile can be the default.
            // 
            profile->properties.isDefault       = (index == 0);
            profile->properties.autoSelectable  = TRUE;
            }
        }

    return retval;
}

//===========================================================================
    USHORT decodeZFlags (STPROFILE *profile, UCHAR *zFlagsBuf)
//===========================================================================
// 
// Description: Decode ASCII encoded zflags.
//    
//      Inputs: profile     - pointer to PROFILE structure in which to store
//                            the decoded zFlags.
//              zFlagsBuf   - pointer to a buffer containing ASCII encoded
//                            zFlags.
//    
//     Returns: a checksum calculated from the decoded zFlags structure.
//    
//      (10/26/00)
//---------------------------------------------------------------------------
{
    // 
    // Decode ascii zflags into zFlags buffer.
    // 
    UCHAR *profilePtr = (UCHAR*)profile;
    for (int i = 0; i < (2 * sizeof(STPROFILE)); i += 2) {
        *profilePtr++ = AsciiWordToHex(*(USHORT*)(zFlagsBuf+i)); 
        }
    // 
    // Calculate check sum on zflags and return it.
    // (NOTE: the sum field is excluded from the calculation).
    // 
    USHORT checkSum = 0;
    profilePtr = (UCHAR*)&profile->zFlags.cfg;
    for (i = 2; i < sizeof(STZFLAGS); i++) {
        UCHAR ptr = *profilePtr++;
        checkSum += ptr;
        }
    return(checkSum);
}

 
#ifdef DBG


//===========================================================================
    void listProfiles (STPROFILE *profile, int count)
//===========================================================================
// 
// Description: 
//    
//      Inputs: 
//    
//     Returns: 
//    
//      (02/22/01)
//---------------------------------------------------------------------------
{
    for (int i = 0; i < count; i++) {
        DbgPrint("%-2d) name = %s, autosel = %s, default = %s, valid = %s\n",
                 i,
                 profile[i].properties.name,
                 profile[i].properties.autoSelectable ? "TRUE" : "FALSE",
                 profile[i].properties.isDefault ? "TRUE" : "FALSE",
                 profile[i].isValid ? "TRUE" : "FALSE");
        }
}

//===========================================================================
    void dumpProfile (STPROFILE *profile, BOOLEAN detailed)
//===========================================================================
// 
// Description: 
//    
//      Inputs: 
//    
//     Returns: 
//    
//      (11/13/00)
//---------------------------------------------------------------------------
{
    DbgPrint("--\n");
    DbgPrint("          PROFILE: ");   DbgPrint(profile->properties.name);                                  DbgPrint("\n");
    DbgPrint("   autoSelectable: ");   DbgPrint(profile->properties.autoSelectable ? "TRUE" : "FALSE");     DbgPrint("\n");
    DbgPrint("        isDefault: ");   DbgPrint(profile->properties.isDefault ? "TRUE" : "FALSE");          DbgPrint("\n");
    DbgPrint("          isValid: ");   DbgPrint(profile->isValid ? "TRUE" : "FALSE");                       DbgPrint("\n");

    if (!detailed) {
        DbgPrint("--\n\n");
        }
    else {
        DbgPrint("   ------------------------------------------\n");    
        DbgPrint("   size               = ");   DbgPrint(NumStr(profile->zFlags.cfg.size, 10));                     DbgPrint("\n");
        DbgPrint("   OpMode             = ");   DbgPrint(NumStr(profile->zFlags.cfg.OpMode, 10));                   DbgPrint("\n");
        DbgPrint("   RxMode             = ");   DbgPrint(NumStr(profile->zFlags.cfg.RxMode, 10));                   DbgPrint("\n");
        DbgPrint("   FragThreshhold     = ");   DbgPrint(NumStr(profile->zFlags.cfg.FragThreshhold, 10));           DbgPrint("\n");
        DbgPrint("   RTSThreshhold      = ");   DbgPrint(NumStr(profile->zFlags.cfg.RTSThreshhold, 10));            DbgPrint("\n");

        DbgPrint("   MacId              = ");   
        for (int i = 0; i < 6; i++) {
            DbgPrint(NumStr(profile->zFlags.cfg.MacId[i], 16));
            DbgPrint(":");
            }
        DbgPrint("\n");

        DbgPrint("   SupRates           = ");   
        for (i = 0; i < 8; i++) {
            DbgPrint(NumStr(profile->zFlags.cfg.SupRates[i], 10));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        DbgPrint("   ShortRetryLimit    = ");   DbgPrint(NumStr(profile->zFlags.cfg.ShortRetryLimit, 10));          DbgPrint("\n");
        DbgPrint("   LongRetryLimit     = ");   DbgPrint(NumStr(profile->zFlags.cfg.LongRetryLimit, 10));           DbgPrint("\n");
        DbgPrint("   TxMSDULifetime     = ");   DbgPrint(NumStr(profile->zFlags.cfg.TxMSDULifetime, 10));           DbgPrint("\n");
        DbgPrint("   RxMSDULifetime     = ");   DbgPrint(NumStr(profile->zFlags.cfg.RxMSDULifetime, 10));           DbgPrint("\n");
        DbgPrint("   stationary         = ");   DbgPrint(NumStr(profile->zFlags.cfg.stationary, 10));               DbgPrint("\n");
        DbgPrint("   ordering           = ");   DbgPrint(NumStr(profile->zFlags.cfg.ordering, 10));                 DbgPrint("\n");

        DbgPrint("   RESERVED1          = ");   
        for (i = 0; i < 12; i++) {
            DbgPrint("0x");
            DbgPrint(NumStr(profile->zFlags.cfg.RESERVED1[i], 16));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        DbgPrint("   ScanMode           = ");   DbgPrint(NumStr(profile->zFlags.cfg.ScanMode, 10));                 DbgPrint("\n");
        DbgPrint("   ProbeDelay         = ");   DbgPrint(NumStr(profile->zFlags.cfg.ProbeDelay, 10));               DbgPrint("\n");
        DbgPrint("   ProbeEnergyTO      = ");   DbgPrint(NumStr(profile->zFlags.cfg.ProbeEnergyTO, 10));            DbgPrint("\n");
        DbgPrint("   ProbeRespTO        = ");   DbgPrint(NumStr(profile->zFlags.cfg.ProbeRespTO, 10));              DbgPrint("\n");
        DbgPrint("   BeaconListenTO     = ");   DbgPrint(NumStr(profile->zFlags.cfg.BeaconListenTO, 10));           DbgPrint("\n");
        DbgPrint("   JoinNetTO          = ");   DbgPrint(NumStr(profile->zFlags.cfg.JoinNetTO, 10));                DbgPrint("\n");
        DbgPrint("   AuthenTO           = ");   DbgPrint(NumStr(profile->zFlags.cfg.AuthenTO, 10));                 DbgPrint("\n");
        DbgPrint("   AuthenType         = ");   DbgPrint(NumStr(profile->zFlags.cfg.AuthenType, 10));               DbgPrint("\n");
        DbgPrint("   AssociationTO      = ");   DbgPrint(NumStr(profile->zFlags.cfg.AssociationTO, 10));            DbgPrint("\n");
        DbgPrint("   SpecAPTO           = ");   DbgPrint(NumStr(profile->zFlags.cfg.SpecAPTO, 10));                 DbgPrint("\n");
        DbgPrint("   OfflineScanInterv  = ");   DbgPrint(NumStr(profile->zFlags.cfg.OfflineScanInterv, 10));        DbgPrint("\n");
        DbgPrint("   OfflineScanDuar    = ");   DbgPrint(NumStr(profile->zFlags.cfg.OfflineScanDuar, 10));          DbgPrint("\n");
        DbgPrint("   LinkLossDelay      = ");   DbgPrint(NumStr(profile->zFlags.cfg.LinkLossDelay, 10));            DbgPrint("\n");
        DbgPrint("   MaxBeaconLT        = ");   DbgPrint(NumStr(profile->zFlags.cfg.MaxBeaconLT, 10));              DbgPrint("\n");
        DbgPrint("   ResfreshInterv     = ");   DbgPrint(NumStr(profile->zFlags.cfg.ResfreshInterv, 10));           DbgPrint("\n");

        DbgPrint("   RESERVED2          = ");   
        for (i = 0; i < 2; i++) {
            DbgPrint("0x");
//            DbgPrint(NumStr(profile->zFlags.cfg.RESERVED2[i], 16));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        DbgPrint("   PowerSaveMode      = ");   DbgPrint(NumStr(profile->zFlags.cfg.PowerSaveMode, 10));            DbgPrint("\n");
        DbgPrint("   RcvDTIM            = ");   DbgPrint(NumStr(profile->zFlags.cfg.RcvDTIM, 10));                  DbgPrint("\n");
        DbgPrint("   ListenInterv       = ");   DbgPrint(NumStr(profile->zFlags.cfg.ListenInterv, 10));             DbgPrint("\n");
        DbgPrint("   FastListenInterv   = ");   DbgPrint(NumStr(profile->zFlags.cfg.FastListenInterv, 10));         DbgPrint("\n");
        DbgPrint("   ListenDecay        = ");   DbgPrint(NumStr(profile->zFlags.cfg.ListenDecay, 10));              DbgPrint("\n");
        DbgPrint("   FastListenDecay    = ");   DbgPrint(NumStr(profile->zFlags.cfg.FastListenDecay, 10));          DbgPrint("\n");

        DbgPrint("   RESERVED3          = ");   
        for (i = 0; i < 4; i++) {
            DbgPrint("0x");
            DbgPrint(NumStr(profile->zFlags.cfg.RESERVED3[i], 16));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        DbgPrint("   BeaconPeriod       = ");   DbgPrint(NumStr(profile->zFlags.cfg.BeaconPeriod, 10));             DbgPrint("\n");
        DbgPrint("   AtimDuration       = ");   DbgPrint(NumStr(profile->zFlags.cfg.AtimDuration, 10));             DbgPrint("\n");
        DbgPrint("   HopPeriod          = ");   DbgPrint(NumStr(profile->zFlags.cfg.HopPeriod, 10));                DbgPrint("\n");
        DbgPrint("   HopSet             = ");   DbgPrint(NumStr(profile->zFlags.cfg.HopSet, 10));                   DbgPrint("\n");
        DbgPrint("   DSChannel          = ");   DbgPrint(NumStr(profile->zFlags.cfg.DSChannel, 10));                DbgPrint("\n");
        DbgPrint("   HopPattern         = ");   DbgPrint(NumStr(profile->zFlags.cfg.HopPattern, 10));               DbgPrint("\n");
        DbgPrint("   DTIMPeriod         = ");   DbgPrint(NumStr(profile->zFlags.cfg.DTIMPeriod, 10));               DbgPrint("\n");

        DbgPrint("   RESERVED4          = ");   
        for (i = 0; i < 4; i++) {
            DbgPrint("0x");
  //          DbgPrint(NumStr(profile->zFlags.cfg.RESERVED4[i], 16));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        DbgPrint("   RadioType          = ");   DbgPrint(NumStr(profile->zFlags.cfg.RadioType, 10));                DbgPrint("\n");
        DbgPrint("   Diversity          = ");   DbgPrint(NumStr(profile->zFlags.cfg.Diversity, 10));                DbgPrint("\n");
        DbgPrint("   TransmitPower      = ");   DbgPrint(NumStr(profile->zFlags.cfg.TransmitPower, 10));            DbgPrint("\n");
        DbgPrint("   RSSIThreshhold     = ");   DbgPrint(NumStr(profile->zFlags.cfg.RSSIThreshhold, 10));           DbgPrint("\n");
        DbgPrint("   Modulation         = ");   DbgPrint(NumStr(profile->zFlags.cfg.Modulation, 10));               DbgPrint("\n");
        DbgPrint("   ShortHeaders       = ");   DbgPrint(NumStr(profile->zFlags.cfg.ShortHeaders, 10));             DbgPrint("\n");
        DbgPrint("   HomeConfiguration  = ");   DbgPrint(NumStr(profile->zFlags.cfg.HomeConfiguration, 10));        DbgPrint("\n");

        DbgPrint("   RESERVED5          = ");   
        for (i = 0; i < 2; i++) {
            DbgPrint("0x");
            DbgPrint(NumStr(profile->zFlags.cfg.RESERVED5[i], 16));
            DbgPrint(", ");
            }
        DbgPrint("\n");

        char s[17];
        NdisZeroMemory(s, 17);
        memcpy(s, profile->zFlags.cfg.NodeName, 16);
        DbgPrint("   NodeName           = ");   DbgPrint(s);                                                        DbgPrint("\n");
        DbgPrint("   ARLThreshhold      = ");   DbgPrint(NumStr(profile->zFlags.cfg.ARLThreshhold, 10));            DbgPrint("\n");
        DbgPrint("   ARLDecay           = ");   DbgPrint(NumStr(profile->zFlags.cfg.ARLDecay, 10));                 DbgPrint("\n");
        DbgPrint("   ARLDelay           = ");   DbgPrint(NumStr(profile->zFlags.cfg.ARLDelay, 10));                 DbgPrint("\n");
        DbgPrint("   Reserved1          = ");   DbgPrint(NumStr(profile->zFlags.cfg.Reserved1, 10));                DbgPrint("\n");
        DbgPrint("   MagicMode          = ");   DbgPrint(NumStr(profile->zFlags.cfg.MagicMode, 10));                DbgPrint("\n");
        DbgPrint("   MaxPowerSave       = ");   DbgPrint(NumStr(profile->zFlags.cfg.MaxPowerSave, 10));             DbgPrint("\n");
        }
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -