| Index: util/win/registration_protocol_win.h
|
| diff --git a/util/win/registration_protocol_win.h b/util/win/registration_protocol_win.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dbd6cb5645f8fe73075aeaf754da5051255dbf60
|
| --- /dev/null
|
| +++ b/util/win/registration_protocol_win.h
|
| @@ -0,0 +1,106 @@
|
| +// Copyright 2015 The Crashpad Authors. All rights reserved.
|
| +//
|
| +// 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_UTIL_WIN_REGISTRATION_PROTOCOL_WIN_H_
|
| +#define CRASHPAD_UTIL_WIN_REGISTRATION_PROTOCOL_WIN_H_
|
| +
|
| +#include <windows.h>
|
| +#include <stdint.h>
|
| +
|
| +#include "base/strings/string16.h"
|
| +#include "util/win/address_types.h"
|
| +
|
| +namespace crashpad {
|
| +
|
| +#pragma pack(push, 1)
|
| +
|
| +//! \brief Structure read out of the client process by the crash handler when an
|
| +//! exception occurs.
|
| +struct ExceptionInformation {
|
| + //! \brief The address of an EXCEPTION_POINTERS structure in the client
|
| + //! process that describes the exception.
|
| + WinVMAddress exception_pointers;
|
| +
|
| + //! \brief The thread on which the exception happened.
|
| + DWORD thread_id;
|
| +};
|
| +
|
| +//! \brief A client registration request.
|
| +struct RegistrationRequest {
|
| + //! \brief The address, in the client process address space, of an
|
| + //! ExceptionInformation structure.
|
| + WinVMAddress exception_information;
|
| +
|
| + //! \brief The PID of the client process.
|
| + DWORD client_process_id;
|
| +};
|
| +
|
| +//! \brief A message only sent to the server by itself to trigger shutdown.
|
| +struct ShutdownRequest {
|
| + //! \brief A randomly generated token used to validate the the shutdown
|
| + //! request was not sent from another process.
|
| + uint64_t token;
|
| +};
|
| +
|
| +//! \brief The message passed from client to server by
|
| +//! SendToCrashHandlerServer().
|
| +struct ClientToServerMessage {
|
| + //! \brief Indicates which field of the union is in use.
|
| + enum Type : uint32_t {
|
| + //! \brief For RegistrationRequest.
|
| + kRegister,
|
| + //! \brief For ShutdownRequest.
|
| + kShutdown,
|
| + } type;
|
| +
|
| + union {
|
| + RegistrationRequest registration;
|
| + ShutdownRequest shutdown;
|
| + };
|
| +};
|
| +
|
| +//! \brief A client registration response.
|
| +//!
|
| +//! See <a
|
| +//! href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203">Interprocess
|
| +//! Communication Between 32-bit and 64-bit Applications</a> for details on
|
| +//! communicating handle values between processes of varying bitness.
|
| +struct RegistrationResponse {
|
| + //! \brief An event `HANDLE`, valid in the client process, that should be
|
| + //! signaled to request a crash report. 64-bit clients should convert the
|
| + //! value to a `HANDLE` using sign-extension.
|
| + uint32_t request_report_event;
|
| +};
|
| +
|
| +//! \brief The response sent back to the client via SendToCrashHandlerServer().
|
| +union ServerToClientMessage {
|
| + RegistrationResponse registration;
|
| +};
|
| +
|
| +#pragma pack(pop)
|
| +
|
| +//! \brief Connect over the given \a pipe_name, passing \a message to the
|
| +//! server, storing the server's reply into \a response.
|
| +//!
|
| +//! Typically clients will not use this directly, instead using
|
| +//! CrashpadClient::SetHandler().
|
| +//!
|
| +//! \sa CrashpadClient::SetHandler()
|
| +bool SendToCrashHandlerServer(const base::string16& pipe_name,
|
| + const ClientToServerMessage& message,
|
| + ServerToClientMessage* response);
|
| +
|
| +} // namespace crashpad
|
| +
|
| +#endif // CRASHPAD_UTIL_WIN_REGISTRATION_PROTOCOL_WIN_H_
|
|
|