| 2865 | |
| 2866 | |
| 2867 | string PEView::ReadString(uint64_t rva) |
| 2868 | { |
| 2869 | uint64_t offset = RVAToFileOffset(rva); |
| 2870 | string result; |
| 2871 | char data[STRING_READ_CHUNK_SIZE]; |
| 2872 | while (true) |
| 2873 | { |
| 2874 | size_t len = GetParentView()->Read(data, offset, STRING_READ_CHUNK_SIZE); |
| 2875 | if (len == 0) |
| 2876 | break; |
| 2877 | |
| 2878 | size_t i; |
| 2879 | for (i = 0; i < len; i++) |
| 2880 | { |
| 2881 | if (data[i] == 0) |
| 2882 | break; |
| 2883 | } |
| 2884 | |
| 2885 | result += string(&data[0], &data[i]); |
| 2886 | if (i < len) |
| 2887 | break; |
| 2888 | offset += len; |
| 2889 | } |
| 2890 | return result; |
| 2891 | } |
| 2892 | |
| 2893 | |
| 2894 | uint16_t PEView::Read16(uint64_t rva) |
no test coverage detected