本文整理汇总了C++中MemoryWriter::seek方法的典型用法代码示例。如果您正苦于以下问题:C++ MemoryWriter::seek方法的具体用法?C++ MemoryWriter::seek怎么用?C++ MemoryWriter::seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemoryWriter
的用法示例。
在下文中一共展示了MemoryWriter::seek方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: allocateVMT
void JITCompiler32 :: allocateVMT(MemoryWriter& vmtWriter, size_t flags, size_t vmtLength)
{
alignCode(&vmtWriter, VA_ALIGNMENT, false);
// create VMT header:
// dummy package reference
vmtWriter.writeDWord(0);
// vmt length
vmtWriter.writeDWord(vmtLength);
// vmt flags
vmtWriter.writeDWord(flags);
// dummy class reference
vmtWriter.writeDWord(0);
int position = vmtWriter.Position();
size_t vmtSize = 0;
if (test(flags, elStandartVMT)) {
// + VMT length
vmtSize = vmtLength * sizeof(VMTEntry);
}
vmtWriter.writeBytes(0, vmtSize);
vmtWriter.seek(position);
}
示例2: fixVMT
void JITCompiler32 :: fixVMT(MemoryWriter& vmtWriter, void* classClassVAddress, void* packageVAddress, int count, bool virtualMode)
{
_Memory* image = vmtWriter.Memory();
// update class package reference if available
if (packageVAddress != NULL) {
int position = vmtWriter.Position();
vmtWriter.seek(position - 0x10);
if (virtualMode) {
vmtWriter.writeRef((ref_t)packageVAddress, 0);
}
else vmtWriter.writeDWord((int)packageVAddress);
vmtWriter.seek(position);
}
// update class vmt reference if available
if (classClassVAddress != NULL) {
vmtWriter.seek(vmtWriter.Position() - 4);
if (virtualMode) {
vmtWriter.writeRef((ref_t)classClassVAddress, 0);
}
else vmtWriter.writeDWord((int)classClassVAddress);
}
// if in virtual mode mark method addresses as reference
if (virtualMode) {
ref_t entryPosition = vmtWriter.Position();
for (int i = 0 ; i < count ; i++) {
image->addReference(mskCodeRef, entryPosition + 4);
entryPosition += 8;
}
}
}