blob: 0a95e03cbe7f8815ef50aab521d39f986d88b4e7 [file] [log] [blame]
// Copyright 2014 Google Inc. 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.
//
// Defines the Kasko RPC interface.
[
uuid(4FD41D5D-32DF-4C48-8394-19B880B6ACA4),
version(1.0)
]
interface Kasko {
// Specifies the type of Minidump to be included in a report.
typedef enum {
SMALL_DUMP,
LARGER_DUMP,
FULL_DUMP
} DumpType;
// Represents a custom stream to include in a diagnostic report.
typedef struct {
unsigned long type;
unsigned long size;
[size_is(size)] const signed char *data;
} CustomStream;
// Represents a memory range to include in a diagnostic report.
typedef struct {
unsigned long base_address;
unsigned long length;
} MemoryRange;
// Represents a property to include in a diagnostic report.
typedef struct {
[string] const wchar_t* name;
[string] const wchar_t* value;
} CrashKey;
// Represents a diagnostic report request.
typedef struct {
// Optional exception information.
unsigned long exception_info_address;
// The (optional) faulting thread in the target process.
unsigned long thread_id;
// The type of minidump to be included in the report.
DumpType type;
// The number of entries in |user_selected_memory_ranges|.
unsigned long user_selected_memory_ranges_size;
// An optional array of memory ranges that should be included in the report.
// unique -> optional
// (http://blogs.msdn.com/b/oldnewthing/archive/2014/09/19/10559094.aspx)
[unique, size_is(user_selected_memory_ranges_size)]
const MemoryRange* user_selected_memory_ranges;
// The number of entries in |crash_keys|.
unsigned long crash_keys_size;
// An optional array of crash keys. Keys with empty names or values will be
// ignored.
// unique -> optional
// (http://blogs.msdn.com/b/oldnewthing/archive/2014/09/19/10559094.aspx)
[unique, size_is(crash_keys_size)] const CrashKey* crash_keys;
// The number of entries in |custom_streams|.
unsigned long custom_streams_size;
// An optional array of custom streams.
[unique, size_is(custom_streams_size)] const CustomStream* custom_streams;
} MinidumpRequest;
// Sends a diagnostic report for the caller process.
// @param request The request parameters.
boolean SendDiagnosticReport([in] MinidumpRequest request);
}