| OLD | NEW |
| 1 // Copyright 2015 The Crashpad Authors. All rights reserved. | 1 // Copyright 2015 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 base::checked_cast<SIZE_T>(num_bytes), | 224 base::checked_cast<SIZE_T>(num_bytes), |
| 225 &bytes_read) || | 225 &bytes_read) || |
| 226 num_bytes != bytes_read) { | 226 num_bytes != bytes_read) { |
| 227 PLOG(ERROR) << "ReadMemory at 0x" << std::hex << at << std::dec << " of " | 227 PLOG(ERROR) << "ReadMemory at 0x" << std::hex << at << std::dec << " of " |
| 228 << num_bytes << " bytes failed"; | 228 << num_bytes << " bytes failed"; |
| 229 return false; | 229 return false; |
| 230 } | 230 } |
| 231 return true; | 231 return true; |
| 232 } | 232 } |
| 233 | 233 |
| 234 WinVMSize ProcessReaderWin::ReadAvailableMemory(WinVMAddress at, |
| 235 WinVMSize num_bytes, |
| 236 void* into) const { |
| 237 auto ranges = GetAccessibleRangesInMemoryMap( |
| 238 at, num_bytes, process_info_.MemoryInformation()); |
| 239 // We only read up until the first unavailable block, so we only read from the |
| 240 // first range. |
| 241 if (ranges.empty()) |
| 242 return 0; |
| 243 if (!ReadMemory(ranges.front().base(), ranges.front().size(), into)) |
| 244 return 0; |
| 245 return ranges.front().size(); |
| 246 } |
| 247 |
| 234 bool ProcessReaderWin::StartTime(timeval* start_time) const { | 248 bool ProcessReaderWin::StartTime(timeval* start_time) const { |
| 235 FILETIME creation, exit, kernel, user; | 249 FILETIME creation, exit, kernel, user; |
| 236 if (!GetProcessTimes(process_, &creation, &exit, &kernel, &user)) { | 250 if (!GetProcessTimes(process_, &creation, &exit, &kernel, &user)) { |
| 237 PLOG(ERROR) << "GetProcessTimes"; | 251 PLOG(ERROR) << "GetProcessTimes"; |
| 238 return false; | 252 return false; |
| 239 } | 253 } |
| 240 *start_time = FiletimeToTimevalEpoch(creation); | 254 *start_time = FiletimeToTimevalEpoch(creation); |
| 241 return true; | 255 return true; |
| 242 } | 256 } |
| 243 | 257 |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 thread.stack_region_size = 0; | 384 thread.stack_region_size = 0; |
| 371 } else { | 385 } else { |
| 372 thread.stack_region_size = base - limit; | 386 thread.stack_region_size = base - limit; |
| 373 } | 387 } |
| 374 } | 388 } |
| 375 threads_.push_back(thread); | 389 threads_.push_back(thread); |
| 376 } | 390 } |
| 377 } | 391 } |
| 378 | 392 |
| 379 } // namespace crashpad | 393 } // namespace crashpad |
| OLD | NEW |