本文整理汇总了C++中OSData::appendBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ OSData::appendBytes方法的具体用法?C++ OSData::appendBytes怎么用?C++ OSData::appendBytes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OSData
的用法示例。
在下文中一共展示了OSData::appendBytes方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setDataProperty
void SMBPackedStrings::setDataProperty( IORegistryEntry * entry,
const char * key,
UInt8 index ) const
{
UInt8 length;
const char * string = SMBPackedStrings::stringAtIndex(index, &length);
if (length)
{
OSData * data = OSData::withCapacity(length + 1);
if (data)
{
data->appendBytes(string, length);
data->appendByte('\0', 1);
entry->setProperty(key, data);
data->release();
}
}
}
示例2: start
//.........这里部分代码省略.........
}
}
dictString = hwDict->getObject("version");
if(dictString)
{
OSString * rootVersion = OSDynamicCast( OSString, dictString);
if(rootVersion->getLength() > 1) iosRoot->setProperty("version", OSData::withBytes(rootVersion->getCStringNoCopy(), rootVersion->getLength() + 1) );
}
dictString = hwDict->getObject("board-id");
if(dictString)
{
OSString * rootBoardId = OSDynamicCast( OSString, dictString);
if(rootBoardId->getLength() > 1) iosRoot->setProperty("board-id", OSData::withBytes(rootBoardId->getCStringNoCopy(), rootBoardId->getLength() + 1) );
}
dictString = hwDict->getObject("serial-number");
if(dictString)
{
OSString * rootSerial = OSDynamicCast( OSString, dictString);
if(rootSerial->getLength() > 1)
{
UInt8 length = rootSerial->getLength();
const char *serialNumberString = rootSerial->getCStringNoCopy();
// The serial-number property in the IORegistry is a 43-byte data object.
// Bytes 0 through 2 are the last three bytes of the serial number string.
// Bytes 11 through 20, inclusive, are the serial number string itself.
// All other bytes are '\0'.
OSData * data = OSData::withCapacity(43);
if (data)
{
data->appendBytes(serialNumberString + (length - 3), 3);
data->appendBytes(NULL, 10);
data->appendBytes(serialNumberString, length);
data->appendBytes(NULL, 43 - length - 10 - 3);
iosRoot->setProperty("serial-number", data);
data->release();
}
iosRoot->setProperty(kIOPlatformSerialNumberKey, rootSerial);
}
}
dictString = hwDict->getObject("UUID-key");
if(dictString)
{
OSString * rootUUIDKey = OSDynamicCast( OSString, hwDict->getObject("UUID-key"));
iosRoot->setProperty(kIOPlatformUUIDKey, rootUUIDKey);
publishResource(kIOPlatformUUIDKey, rootUUIDKey);
}
bool useEfiBus = false;
UInt64 fsbFrequency = 0;
UInt64 msr;
dictString = hwDict->getObject("use-efi-bus");
if (dictString) useEfiBus = (OSDynamicCast(OSBoolean, dictString))->getValue();
IORegistryEntry * efiPlatform = fromPath("/efi/platform", gIODTPlane);
if (efiPlatform && useEfiBus)
{
OSData * efiFSBFreq = OSDynamicCast(OSData, efiPlatform->getProperty("FSBFrequency"));
bcopy(efiFSBFreq->getBytesNoCopy(), &fsbFrequency, efiFSBFreq->getLength());
efiPlatform->release();
}
else
示例3: if
IOReturn
IOEthernetInterface::setupMulticastFilter(IONetworkController * ctr)
{
void * multiAddrs = 0;
UInt mcount;
OSData * mcData = 0;
ifnet_t interface;
struct sockaddr dlAddress;
IOReturn ret = kIOReturnSuccess;
bool ok;
ifmultiaddr_t *addressList;
interface = getIfnet();
assert(interface);
// get the list and count how many mcast link addresses there are
if(ifnet_get_multicast_list(interface, &addressList))
return kIOReturnNoMemory;
mcount = 0;
for(int i=0; addressList[i]; i++)
{
ifmaddr_address(addressList[i], &dlAddress, sizeof(dlAddress));
if (dlAddress.sa_family == AF_UNSPEC || dlAddress.sa_family == AF_LINK)
mcount++;
}
_mcAddrCount = mcount;
// now rewalk the list and copy the addresses to a format suitable to give to the controller
if ( mcount )
{
char * addrp;
mcData = OSData::withCapacity(mcount * ETHER_ADDR_LEN);
if (!mcData)
{
DLOG("%s: no memory for multicast address list\n", getName());
ifnet_free_multicast_list(addressList);
return kIOReturnNoMemory;
}
// Loop through the list and copy the link multicast
// address to the OSData.
for(int i = 0; addressList[i]; i++)
{
//retrieve the datalink mcast address
ifmaddr_address(addressList[i], &dlAddress, sizeof(dlAddress));
if (dlAddress.sa_family == AF_UNSPEC)
addrp = &dlAddress.sa_data[0];
else if (dlAddress.sa_family == AF_LINK)
addrp = LLADDR((struct sockaddr_dl *)&dlAddress);
else
continue;
ok = mcData->appendBytes((const void *) addrp, ETHER_ADDR_LEN);
assert(ok);
}
multiAddrs = (void *) mcData->getBytesNoCopy();
assert(multiAddrs);
}
// Issue a controller command to setup the multicast filter.
ret = ((IOEthernetController *)ctr)->setMulticastList(
(IOEthernetAddress *) multiAddrs,
mcount);
if (mcData)
{
if (ret == kIOReturnSuccess)
setProperty(kIOMulticastAddressList, mcData);
mcData->release();
}
else {
removeProperty(kIOMulticastAddressList);
}
ifnet_free_multicast_list(addressList);
return ret;
}