win-capture: Add graphics-hook-info.h
This header contains global defines, structures, and helper inline functions for the graphics hook that will be shared between game capture, the hook, and the get-graphics-addrs helper application.master
parent
6ece794334
commit
8c3878b0b6
|
@ -3,6 +3,7 @@ project(win-capture)
|
|||
set(win-capture_HEADERS
|
||||
obfuscate.h
|
||||
hook-helpers.h
|
||||
graphics-hook-info.h
|
||||
window-helpers.h
|
||||
dc-capture.h)
|
||||
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "hook-helpers.h"
|
||||
|
||||
#define EVENT_CAPTURE_RESTART "CaptureHook_Restart"
|
||||
#define EVENT_CAPTURE_STOP "CaptureHook_Stop"
|
||||
|
||||
#define EVENT_HOOK_READY "CaptureHook_HookReady"
|
||||
#define EVENT_HOOK_EXIT "CaptureHook_Exit"
|
||||
|
||||
#define EVENT_HOOK_KEEPALIVE "CaptureHook_KeepAlive"
|
||||
|
||||
#define MUTEX_TEXTURE1 "CaptureHook_TextureMutex1"
|
||||
#define MUTEX_TEXTURE2 "CaptureHook_TextureMutex2"
|
||||
|
||||
#define SHMEM_HOOK_INFO "Local\\CaptureHook_HookInfo"
|
||||
#define SHMEM_TEXTURE "Local\\CaptureHook_Texture"
|
||||
|
||||
#define PIPE_NAME "CaptureHook_Pipe"
|
||||
|
||||
#pragma pack(push, 8)
|
||||
|
||||
struct d3d8_offsets {
|
||||
uint32_t present;
|
||||
uint32_t reset;
|
||||
};
|
||||
|
||||
struct d3d9_offsets {
|
||||
uint32_t present;
|
||||
uint32_t present_ex;
|
||||
uint32_t present_swap;
|
||||
uint32_t reset;
|
||||
uint32_t reset_ex;
|
||||
};
|
||||
|
||||
struct dxgi_offsets {
|
||||
uint32_t present;
|
||||
uint32_t resize;
|
||||
};
|
||||
|
||||
struct ddraw_offsets {
|
||||
uint32_t surface_create;
|
||||
uint32_t surface_restore;
|
||||
uint32_t surface_release;
|
||||
uint32_t surface_unlock;
|
||||
uint32_t surface_blt;
|
||||
uint32_t surface_flip;
|
||||
uint32_t surface_set_palette;
|
||||
uint32_t palette_set_entries;
|
||||
};
|
||||
|
||||
struct shmem_data {
|
||||
volatile int last_tex;
|
||||
uint32_t tex1_offset;
|
||||
uint32_t tex2_offset;
|
||||
};
|
||||
|
||||
struct shtex_data {
|
||||
uint32_t tex_handle;
|
||||
};
|
||||
|
||||
enum capture_type {
|
||||
CAPTURE_TYPE_MEMORY,
|
||||
CAPTURE_TYPE_TEXTURE
|
||||
};
|
||||
|
||||
struct graphics_offsets {
|
||||
struct d3d8_offsets d3d8;
|
||||
struct d3d9_offsets d3d9;
|
||||
struct dxgi_offsets dxgi;
|
||||
struct ddraw_offsets ddraw;
|
||||
};
|
||||
|
||||
struct hook_info {
|
||||
/* capture info */
|
||||
enum capture_type type;
|
||||
uint32_t window;
|
||||
uint32_t format;
|
||||
uint32_t cx;
|
||||
uint32_t cy;
|
||||
uint32_t base_cx;
|
||||
uint32_t base_cy;
|
||||
uint32_t pitch;
|
||||
uint32_t map_id;
|
||||
uint32_t map_size;
|
||||
bool flip;
|
||||
|
||||
/* additional options */
|
||||
uint64_t frame_interval;
|
||||
bool use_scale;
|
||||
bool force_shmem;
|
||||
bool capture_overlay;
|
||||
|
||||
/* hook addresses */
|
||||
struct graphics_offsets offsets;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
static inline HANDLE get_hook_info(DWORD id)
|
||||
{
|
||||
HANDLE handle;
|
||||
char new_name[64];
|
||||
sprintf(new_name, "%s%d", SHMEM_HOOK_INFO, id);
|
||||
|
||||
handle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL,
|
||||
PAGE_READWRITE, 0, sizeof(struct hook_info), new_name);
|
||||
|
||||
if (!handle && GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
handle = OpenFileMappingA(FILE_MAP_ALL_ACCESS, false,
|
||||
new_name);
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
Loading…
Reference in New Issue