📄 profile.cpp
字号:
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 + -