/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
aFilename.Truncate(); // This implementation is nice because it uses fully documented APIs that // are available on all Windows versions that we support.
nsAutoHandle fileMapping(
CreateFileMapping(aHandle, nullptr, PAGE_READONLY, 0, 1, nullptr)); if (!fileMapping) { returnfalse;
} constauto view = MapViewOfFile(fileMapping, FILE_MAP_READ, aOffset.HighPart,
aOffset.LowPart, 1); if (!view) { returnfalse;
} constauto cleanup =
MakeScopeExit([&]() { mozilla::Unused << UnmapViewOfFile(view); });
nsAutoString mappedFilename;
DWORD len = 0;
SetLastError(ERROR_SUCCESS); do {
mappedFilename.SetLength(mappedFilename.Length() + MAX_PATH);
len = GetMappedFileNameW(GetCurrentProcess(), view, mappedFilename.get(),
mappedFilename.Length());
} while (!len && GetLastError() == ERROR_INSUFFICIENT_BUFFER); if (!len) { returnfalse;
}
mappedFilename.Truncate(len); return NtPathToDosPath(mappedFilename, aFilename);
}
RVAMap<IMAGE_DOS_HEADER> peHeader(map, 0); if (!peHeader) { return base::PROCESS_ARCH_INVALID;
}
RVAMap<IMAGE_NT_HEADERS> ntHeader(map, peHeader->e_lfanew); if (!ntHeader) { return base::PROCESS_ARCH_INVALID;
}
switch (ntHeader->FileHeader.Machine) { case IMAGE_FILE_MACHINE_I386: return base::PROCESS_ARCH_I386; case IMAGE_FILE_MACHINE_AMD64: return base::PROCESS_ARCH_X86_64; case IMAGE_FILE_MACHINE_ARM64: return base::PROCESS_ARCH_ARM_64; case IMAGE_FILE_MACHINE_ARM: case IMAGE_FILE_MACHINE_ARMNT: case IMAGE_FILE_MACHINE_THUMB: return base::PROCESS_ARCH_ARM; default: return base::PROCESS_ARCH_INVALID;
}
}
} // namespace mozilla
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.