diff --git a/client/crashpad_client.h b/client/crashpad_client.h index d3d7e347..18b7b131 100644 --- a/client/crashpad_client.h +++ b/client/crashpad_client.h @@ -72,22 +72,33 @@ class CrashpadClient { const std::vector& arguments); #if defined(OS_WIN) || DOXYGEN - //! \brief Sets the IPC port of a presumably-running Crashpad handler process + //! \brief Sets the IPC pipe of a presumably-running Crashpad handler process //! which was started with StartHandler() or by other compatible means //! and does an IPC message exchange to register this process with the //! handler. However, just like StartHandler(), crashes are not serviced //! until UseHandler() is called. //! - //! The IPC port name (somehow) encodes enough information so that - //! registration is done with a crash handler using the appropriate database - //! and upload server. - //! //! \param[in] ipc_pipe The full name of the crash handler IPC pipe. This is //! a string of the form `"\\.\pipe\NAME"`. //! //! \return `true` on success and `false` on failure. bool SetHandlerIPCPipe(const std::wstring& ipc_pipe); + //! \brief Retrieves the IPC pipe name used to register with the Crashpad + //! handler. + //! + //! This method retrieves the IPC pipe name set by SetHandlerIPCPipe(), or a + //! suitable IPC pipe name chosen by StartHandler(). It is intended to be used + //! to obtain the IPC pipe name so that it may be passed to other processes, + //! so that they may register with an existing Crashpad handler by calling + //! SetHandlerIPCPipe(). + //! + //! This method is only defined on Windows. + //! + //! \return The full name of the crash handler IPC pipe, a string of the form + //! `"\\.\pipe\NAME"`. + std::wstring GetHandlerIPCPipe() const; + //! \brief Requests that the handler capture a dump even though there hasn't //! been a crash. //! diff --git a/client/crashpad_client_win.cc b/client/crashpad_client_win.cc index c4715ad5..3f23dde1 100644 --- a/client/crashpad_client_win.cc +++ b/client/crashpad_client_win.cc @@ -200,6 +200,11 @@ bool CrashpadClient::SetHandlerIPCPipe(const std::wstring& ipc_pipe) { return true; } +std::wstring CrashpadClient::GetHandlerIPCPipe() const { + DCHECK(!ipc_pipe_.empty()); + return ipc_pipe_; +} + bool CrashpadClient::UseHandler() { DCHECK(!ipc_pipe_.empty()); DCHECK_EQ(g_signal_exception, INVALID_HANDLE_VALUE);