// Copyright 2014 The Crashpad Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef CRASHPAD_MINIDUMP_MINIDUMP_MODULE_WRITER_H_ #define CRASHPAD_MINIDUMP_MINIDUMP_MODULE_WRITER_H_ #include <windows.h> #include <dbghelp.h> #include <stdint.h> #include <sys/types.h> #include <time.h> #include <memory> #include <string> #include <vector> #include "minidump/minidump_extensions.h" #include "minidump/minidump_stream_writer.h" #include "minidump/minidump_writable.h" namespace crashpad { class ModuleSnapshot; namespace internal { class MinidumpUTF16StringWriter; } // namespace internal //! \brief The base class for writers of CodeView records referenced by //! MINIDUMP_MODULE::CvRecord in minidump files. class MinidumpModuleCodeViewRecordWriter : public internal::MinidumpWritable { … }; namespace internal { //! \brief The base class for writers of CodeView records that serve as links to //! `.pdb` (program database) files. template <typename CodeViewRecordType> class MinidumpModuleCodeViewRecordPDBLinkWriter : public MinidumpModuleCodeViewRecordWriter { … }; } // namespace internal //! \brief The writer for a CodeViewRecordPDB20 object in a minidump file. //! //! Most users will want MinidumpModuleCodeViewRecordPDB70Writer or //! MinidumpModuleCodeViewRecordBuildIDWriter instead. class MinidumpModuleCodeViewRecordPDB20Writer final : public internal::MinidumpModuleCodeViewRecordPDBLinkWriter< CodeViewRecordPDB20> { … }; //! \brief The writer for a CodeViewRecordPDB70 object in a minidump file. class MinidumpModuleCodeViewRecordPDB70Writer final : public internal::MinidumpModuleCodeViewRecordPDBLinkWriter< CodeViewRecordPDB70> { … }; //! \brief The writer for a CodeViewRecordBuildID object in a minidump file. class MinidumpModuleCodeViewRecordBuildIDWriter final : public MinidumpModuleCodeViewRecordWriter { … }; //! \brief The writer for an IMAGE_DEBUG_MISC object in a minidump file. //! //! Most users will want MinidumpModuleCodeViewRecordPDB70Writer instead. class MinidumpModuleMiscDebugRecordWriter final : public internal::MinidumpWritable { … }; //! \brief The writer for a MINIDUMP_MODULE object in a minidump file. //! //! Because MINIDUMP_MODULE objects only appear as elements of //! MINIDUMP_MODULE_LIST objects, this class does not write any data on its own. //! It makes its MINIDUMP_MODULE data available to its MinidumpModuleListWriter //! parent, which writes it as part of a MINIDUMP_MODULE_LIST. class MinidumpModuleWriter final : public internal::MinidumpWritable { … }; //! \brief The writer for a MINIDUMP_MODULE_LIST stream in a minidump file, //! containing a list of MINIDUMP_MODULE objects. class MinidumpModuleListWriter final : public internal::MinidumpStreamWriter { … }; } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_MODULE_WRITER_H_