当前位置: 首页>>代码示例>>C++>>正文


C++ cptr::addr方法代码示例

本文整理汇总了C++中vm::cptr::addr方法的典型用法代码示例。如果您正苦于以下问题:C++ cptr::addr方法的具体用法?C++ cptr::addr怎么用?C++ cptr::addr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在vm::cptr的用法示例。


在下文中一共展示了cptr::addr方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: cellSailPlayerCreateDescriptor

s32 cellSailPlayerCreateDescriptor(vm::ptr<CellSailPlayer> pSelf, s32 streamType, vm::ptr<u32> pMediaInfo, vm::cptr<char> pUri, vm::ptr<u32> ppDesc)
{
	cellSail.Warning("cellSailPlayerCreateDescriptor(pSelf_addr=0x%x, streamType=%d, pMediaInfo_addr=0x%x, pUri_addr=0x%x, ppDesc_addr=0x%x)", pSelf.addr(), streamType,
					pMediaInfo.addr(), pUri.addr(), ppDesc.addr());
	
	u32 descriptorAddress = Memory.Alloc(sizeof(CellSailDescriptor), 1);
	auto descriptor = vm::ptr<CellSailDescriptor>::make(descriptorAddress);
	*ppDesc = descriptorAddress;
	descriptor->streamType = streamType;
	descriptor->registered = false;

	//pSelf->descriptors = 0;
	pSelf->repeatMode = 0;

	switch (streamType)
	{
		case CELL_SAIL_STREAM_PAMF:
		{
			std::string uri = pUri.get_ptr();
			if (uri.substr(0, 12) == "x-cell-fs://") {
				std::string path = uri.substr(12);
				vfsFile f;
				if (f.Open(path)) {
					u64 size = f.GetSize();
					u32 buf_ = Memory.Alloc(size, 1);
					auto bufPtr = vm::cptr<PamfHeader>::make(buf_);
					PamfHeader *buf = const_cast<PamfHeader*>(bufPtr.get_ptr());
					assert(f.Read(buf, size) == size);
					u32 sp_ = Memory.Alloc(sizeof(CellPamfReader), 1);
					auto sp = vm::ptr<CellPamfReader>::make(sp_);
					u32 r = cellPamfReaderInitialize(sp, bufPtr, size, 0);

					descriptor->internalData[0] = buf_;
					descriptor->internalData[1] = sp_;
				}
				else
					cellSail.Warning("Couldn't open PAMF: %s", uri.c_str());

			}
			else
				cellSail.Warning("Unhandled uri: %s", uri.c_str());
			break;
		}
		default:
			cellSail.Error("Unhandled stream type: %d", streamType);
	}

	//cellSail.Todo("pSelf_addr=0x%x, pDesc_addr=0x%x", pSelf.addr(), descriptor.addr());
	//cellSailPlayerAddDescriptor(pSelf, ppDesc);

	return CELL_OK;
}
开发者ID:kallew,项目名称:rpcs3,代码行数:52,代码来源:cellSail.cpp

示例2: inet_addr

	s32 inet_addr(vm::cptr<char> cp)
	{
		sys_net.Warning("inet_addr(cp=*0x%x)", cp.addr());
		return htonl(::inet_addr(cp.get_ptr())); // return a big-endian IP address (WTF? function should return LITTLE-ENDIAN value)
	}
开发者ID:kallew,项目名称:rpcs3,代码行数:5,代码来源:sys_net.cpp

示例3: sys_spu_image_open

s32 sys_spu_image_open(vm::ptr<sys_spu_image> img, vm::cptr<char> path)
{
    sys_spu.Warning("sys_spu_image_open(img_addr=0x%x, path_addr=0x%x [%s])", img.addr(), path.addr(), path.get_ptr());

    vfsFile f(path.get_ptr());
    if(!f.IsOpened())
    {
        sys_spu.Error("sys_spu_image_open error: '%s' not found!", path.get_ptr());
        return CELL_ENOENT;
    }

    SceHeader hdr;
    hdr.Load(f);

    if (hdr.CheckMagic())
    {
        sys_spu.Error("sys_spu_image_open error: '%s' is encrypted! Decrypt SELF and try again.", path.get_ptr());
        Emu.Pause();
        return CELL_ENOENT;
    }

    f.Seek(0);

    u32 entry;
    u32 offset = LoadSpuImage(f, entry);

    img->type = SYS_SPU_IMAGE_TYPE_USER;
    img->entry_point = entry;
    img->addr = offset; // TODO: writing actual segment info
    img->nsegs = 1; // wrong value

    return CELL_OK;
}
开发者ID:kallew,项目名称:rpcs3,代码行数:33,代码来源:sys_spu.cpp


注:本文中的vm::cptr::addr方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。