Converted lpFileName to std::string.
ReadFile now takes filename as a std::string.
Manage FILE* using FileHandle.
Use FileHandle for all remaining FILE*s.
Convert Name to std::string.
Converted another Name to std::string.
Removed constructor and destructor.

The constructor did nothing, and the destructor did nothing the default destructor wouldn't do anyhow. All members are default initialized, and the default destructor closes the FileHandle and clears the vectors, which also clears the strings.
No need for copying all the sections.
Made threadInfoMap an instance variable.
Manage thread HANDLEs using ThreadHandle.

The handles are managed automatically, and the special treatment in the destructor is not necessary and more. This actually changes the behavior: when handling the EXIT_THREAD_DEBUG_EVENT, the call to erase now actually closes the handles. Previously they were never closed.
Return value not interpreted correctly. Any non-zero value means success.
Minor changes
Use range based for loops where appropriate.
Return references to members that can never be null.
Converted to range based for loops and reduced number of copies.
ParseInjFileHooks uses sscanf_s.
Manage the module handle.

The return statement on success caused this function to never free the library.
Manage the find handle.
Wrapper around Find File.
Assorted minor changes