Pre-work launcher refactoring #278
@@ -80,7 +80,7 @@ cflags += \
|
||||
# Each AVS-dependent project should consume the earliest AVS import definition
|
||||
# that is still ABI-compatible with the real build its target links against.
|
||||
|
||||
avsvers_32 := 1700 1603 1601 1508 1403 1304 1101 1002 803 0
|
||||
avsvers_32 := 1700 1603 1601 1508 1403 1306 1304 1101 1002 803 0
|
||||
avsvers_64 := 1700 1603 1601 1509 1508
|
||||
|
||||
imps += avs avs-ea3
|
||||
@@ -91,6 +91,7 @@ include src/main/acioemu/Module.mk
|
||||
include src/main/aciomgr/Module.mk
|
||||
include src/main/aciotest/Module.mk
|
||||
include src/main/asio/Module.mk
|
||||
include src/main/avs-util/Module.mk
|
||||
include src/main/bio2drv/Module.mk
|
||||
include src/main/bio2emu-iidx/Module.mk
|
||||
include src/main/bio2emu/Module.mk
|
||||
@@ -685,9 +686,9 @@ $(zipdir)/ddr-12.zip: \
|
||||
$(V)zip -j $@ $^
|
||||
|
||||
$(zipdir)/ddr-13.zip: \
|
||||
build/bin/avs2_1304-32/launcher.exe \
|
||||
build/bin/avs2_1304-32/ddrhook2.dll \
|
||||
build/bin/avs2_1304-32/unicorntail.dll \
|
||||
build/bin/avs2_1306-32/launcher.exe \
|
||||
build/bin/avs2_1306-32/ddrhook2.dll \
|
||||
build/bin/avs2_1306-32/unicorntail.dll \
|
||||
build/bin/indep-32/config.exe \
|
||||
build/bin/indep-32/ddrio.dll \
|
||||
build/bin/indep-32/ddrio-mm.dll \
|
||||
@@ -700,7 +701,7 @@ $(zipdir)/ddr-13.zip: \
|
||||
$(V)echo ... $@
|
||||
$(V)zip -j $@ $^
|
||||
|
||||
$(zipdir)/ddr-14-to-16.zip: \
|
||||
$(zipdir)/ddr-14-to-18.zip: \
|
||||
build/bin/avs2_1508-32/launcher.exe \
|
||||
build/bin/avs2_1508-32/ddrhook2.dll \
|
||||
build/bin/avs2_1508-32/unicorntail.dll \
|
||||
@@ -709,6 +710,8 @@ $(zipdir)/ddr-14-to-16.zip: \
|
||||
build/bin/indep-32/eamio.dll \
|
||||
build/bin/indep-32/geninput.dll \
|
||||
dist/ddr/config.bat \
|
||||
dist/ddr/gamestart-17.bat \
|
||||
dist/ddr/gamestart-18.bat \
|
||||
dist/ddr/gamestart-14.bat \
|
||||
dist/ddr/gamestart-15.bat \
|
||||
dist/ddr/gamestart-16.bat \
|
||||
@@ -716,7 +719,7 @@ $(zipdir)/ddr-14-to-16.zip: \
|
||||
$(V)echo ... $@
|
||||
$(V)zip -j $@ $^
|
||||
|
||||
$(zipdir)/ddr-16-x64.zip: \
|
||||
$(zipdir)/ddr-16-to-18-x64.zip: \
|
||||
build/bin/avs2_1603-64/launcher.exe \
|
||||
build/bin/avs2_1603-64/ddrhook2.dll \
|
||||
build/bin/avs2_1603-64/unicorntail.dll \
|
||||
@@ -725,6 +728,8 @@ $(zipdir)/ddr-16-x64.zip: \
|
||||
build/bin/indep-64/eamio.dll \
|
||||
build/bin/indep-64/geninput.dll \
|
||||
dist/ddr/config.bat \
|
||||
dist/ddr/gamestart-17.bat \
|
||||
dist/ddr/gamestart-18.bat \
|
||||
dist/ddr/gamestart-16.bat \
|
||||
| $(zipdir)/
|
||||
$(V)echo ... $@
|
||||
@@ -827,8 +832,8 @@ $(BUILDDIR)/bemanitools.zip: \
|
||||
$(zipdir)/ddr-12.zip \
|
||||
$(zipdir)/ddr-12-us.zip \
|
||||
$(zipdir)/ddr-13.zip \
|
||||
$(zipdir)/ddr-14-to-16.zip \
|
||||
$(zipdir)/ddr-16-x64.zip \
|
||||
$(zipdir)/ddr-14-to-18.zip \
|
||||
$(zipdir)/ddr-16-to-18-x64.zip \
|
||||
$(zipdir)/ddr-hwio-x86.zip \
|
||||
$(zipdir)/ddr-hwio-x64.zip \
|
||||
$(zipdir)/doc.zip \
|
||||
|
||||
@@ -40,9 +40,12 @@ The following games are supported with their corresponding hook-libraries.
|
||||
- Dance Dance Revolution X (`ddr-11.zip`): [ddrhook1](doc/ddrhook/ddrhook1.md)
|
||||
- Dance Dance Revolution X2 (US/EU regions) (`ddr-12-us.zip`): [ddrhook1](doc/ddrhook/ddrhook1.md)
|
||||
- Dance Dance Revolution X2 (JP region) (`ddr-12.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution 2013 (`ddr-14-to-16.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution 2014 (`ddr-14-to-16.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution A (`ddr-14-to-16.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution X3 vs. 2ndMIX (`ddr-13.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution 2013 (`ddr-14-to-18.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution 2014 (`ddr-14-to-18.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution A (`ddr-14-to-18.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution A20 (`ddr-14-to-18.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- Dance Dance Revolution A20+ (`ddr-14-to-18.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
|
||||
- [Beatmania IIDX](doc/iidxhook/README.md)
|
||||
- Beatmania IIDX 9th Style (`iidx-09-to-12.zip`): [iidxhook1](doc/iidxhook/iidxhook1.md)
|
||||
- Beatmania IIDX 10th Style (`iidx-09-to-12.zip`): [iidxhook1](doc/iidxhook/iidxhook1.md)
|
||||
|
||||
@@ -9,6 +9,8 @@ The following games are supported by this hook library:
|
||||
- Dance Dance Revolution 2013
|
||||
- Dance Dance Revolution 2014
|
||||
- Dance Dance Revolution A
|
||||
- Dance Dance Revolution A20
|
||||
- Dance Dance Revolution A20+
|
||||
|
||||
Note that different builds of the same hook library are required to run the different versions. See
|
||||
different distribution packages, e.g. `ddr-12.zip`, `ddr-13.zip` etc.
|
||||
|
||||
+104
-17
@@ -4,6 +4,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
enum property_create_flag {
|
||||
PROPERTY_FLAG_READ = 0x1,
|
||||
@@ -26,18 +27,39 @@ enum property_node_traversal {
|
||||
};
|
||||
|
||||
enum property_type {
|
||||
PROPERTY_TYPE_VOID = 1,
|
||||
PROPERTY_TYPE_S8 = 2,
|
||||
PROPERTY_TYPE_U8 = 3,
|
||||
PROPERTY_TYPE_S16 = 4,
|
||||
PROPERTY_TYPE_U16 = 5,
|
||||
PROPERTY_TYPE_S32 = 6,
|
||||
PROPERTY_TYPE_U32 = 7,
|
||||
PROPERTY_TYPE_S64 = 8,
|
||||
PROPERTY_TYPE_U64 = 9,
|
||||
PROPERTY_TYPE_BIN = 10,
|
||||
PROPERTY_TYPE_STR = 11,
|
||||
PROPERTY_TYPE_BOOL = 52
|
||||
PROPERTY_TYPE_VOID = 0x01,
|
||||
PROPERTY_TYPE_S8 = 0x02,
|
||||
PROPERTY_TYPE_U8 = 0x03,
|
||||
PROPERTY_TYPE_S16 = 0x04,
|
||||
PROPERTY_TYPE_U16 = 0x05,
|
||||
PROPERTY_TYPE_S32 = 0x06,
|
||||
PROPERTY_TYPE_U32 = 0x07,
|
||||
PROPERTY_TYPE_S64 = 0x08,
|
||||
PROPERTY_TYPE_U64 = 0x09,
|
||||
PROPERTY_TYPE_BIN = 0x0A,
|
||||
PROPERTY_TYPE_STR = 0x0B,
|
||||
PROPERTY_TYPE_IP4 = 0x0C,
|
||||
PROPERTY_TYPE_TIME = 0x0D,
|
||||
PROPERTY_TYPE_FLOAT = 0x0E,
|
||||
PROPERTY_TYPE_DOUBLE = 0x0F,
|
||||
PROPERTY_TYPE_4U8 = 0x25,
|
||||
PROPERTY_TYPE_ATTR = 0x2E,
|
||||
PROPERTY_TYPE_BOOL = 0x34,
|
||||
|
||||
// Missing __type attribute
|
||||
PROPERTY_TYPE_VOID_WITH_ATTRIBUTES = 0x40 | PROPERTY_TYPE_VOID,
|
||||
PROPERTY_TYPE_ARRAY_S8 = 0x40 | PROPERTY_TYPE_S8,
|
||||
PROPERTY_TYPE_ARRAY_U8 = 0x40 | PROPERTY_TYPE_U8,
|
||||
PROPERTY_TYPE_ARRAY_S16 = 0x40 | PROPERTY_TYPE_S16,
|
||||
PROPERTY_TYPE_ARRAY_U16 = 0x40 | PROPERTY_TYPE_U16,
|
||||
PROPERTY_TYPE_ARRAY_S32 = 0x40 | PROPERTY_TYPE_S32,
|
||||
PROPERTY_TYPE_ARRAY_U32 = 0x40 | PROPERTY_TYPE_U32,
|
||||
PROPERTY_TYPE_ARRAY_S64 = 0x40 | PROPERTY_TYPE_S64,
|
||||
PROPERTY_TYPE_ARRAY_U64 = 0x40 | PROPERTY_TYPE_U64,
|
||||
PROPERTY_TYPE_ARRAY_TIME = 0x40 | PROPERTY_TYPE_TIME,
|
||||
PROPERTY_TYPE_ARRAY_BOOL = 0x40 | PROPERTY_TYPE_BOOL,
|
||||
|
||||
PROPERTY_TYPE_STR_WITH_ATTRIBUTES = 0x40 | PROPERTY_TYPE_STR,
|
||||
};
|
||||
|
||||
struct property;
|
||||
@@ -66,6 +88,7 @@ enum psmap_type {
|
||||
PSMAP_TYPE_STR = 10,
|
||||
PSMAP_TYPE_ATTR = 45,
|
||||
PSMAP_TYPE_BOOL = 50,
|
||||
PSMAP_TYPE_TERMINATOR = 0xFF,
|
||||
};
|
||||
|
||||
#define PSMAP_FLAG_HAVE_DEFAULT 0x01
|
||||
@@ -102,7 +125,7 @@ struct property_psmap {
|
||||
|
||||
#define PSMAP_END \
|
||||
{ \
|
||||
0xFF, 0, 0, 0, NULL, 0 \
|
||||
PSMAP_TYPE_TERMINATOR, 0, 0, 0, NULL, 0 \
|
||||
} \
|
||||
} \
|
||||
;
|
||||
@@ -160,6 +183,11 @@ void avs_boot(
|
||||
|
||||
void avs_shutdown(void);
|
||||
|
||||
typedef uint32_t avs_desc;
|
||||
typedef int avs_error;
|
||||
|
||||
#define AVS_IS_ERROR(x) x < 0
|
||||
|
||||
void log_body_fatal(const char *module, const char *fmt, ...);
|
||||
void log_body_info(const char *module, const char *fmt, ...);
|
||||
void log_body_misc(const char *module, const char *fmt, ...);
|
||||
@@ -187,6 +215,7 @@ int property_insert_read(
|
||||
uint32_t context);
|
||||
int property_mem_write(struct property *prop, void *bytes, int nbytes);
|
||||
void *property_desc_to_buffer(struct property *prop);
|
||||
avs_error property_query_size(struct property *prop);
|
||||
void property_file_write(struct property *prop, const char *path);
|
||||
int property_set_flag(struct property *prop, int flags, int mask);
|
||||
void property_destroy(struct property *prop);
|
||||
@@ -203,8 +232,8 @@ int property_psmap_export(
|
||||
const struct property_psmap *psmap);
|
||||
|
||||
struct property_node *property_node_clone(
|
||||
struct property *new_parent,
|
||||
int unk0,
|
||||
struct property *parent_prop,
|
||||
struct property_node *parent_node,
|
||||
struct property_node *src,
|
||||
bool deep);
|
||||
struct property_node *property_node_create(
|
||||
@@ -226,15 +255,73 @@ void property_node_remove(struct property_node *node);
|
||||
enum property_type property_node_type(struct property_node *node);
|
||||
struct property_node *property_node_traversal(
|
||||
struct property_node *node, enum property_node_traversal direction);
|
||||
void property_node_datasize(struct property_node *node);
|
||||
int property_node_datasize(struct property_node *node);
|
||||
avs_error property_node_read(struct property_node *node, enum property_type type, void* data, uint32_t data_size);
|
||||
|
||||
static inline void property_remove(struct property *prop, struct property_node *node, const char *path)
|
||||
{
|
||||
struct property_node *cur = property_search(prop, node, path);
|
||||
while (cur) {
|
||||
struct property_node *next = property_node_traversal(node, TRAVERSE_NEXT_SEARCH_RESULT);
|
||||
property_node_remove(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
bool std_getenv(const char *key, char *val, uint32_t nbytes);
|
||||
void std_setenv(const char *key, const char *val);
|
||||
|
||||
void* avs_fs_open(const char* path, int mode, int flags);
|
||||
struct avs_stat {
|
||||
uint64_t st_atime;
|
||||
uint64_t st_mtime;
|
||||
uint64_t st_ctime;
|
||||
uint32_t unk1;
|
||||
uint32_t filesize;
|
||||
struct stat padding;
|
||||
};
|
||||
|
||||
#if AVS_VERSION <= 1306
|
||||
enum avs_file_mode {
|
||||
AVS_FILE_READ = 0x00,
|
||||
AVS_FILE_WRITE = 0x01,
|
||||
AVS_FILE_READ_WRITE = 0x02,
|
||||
AVS_FILE_CREATE = 0x10,
|
||||
AVS_FILE_TRUNCATE = 0x20,
|
||||
AVS_FILE_EXCLUSIVE = 0x80,
|
||||
};
|
||||
#else
|
||||
enum avs_file_mode {
|
||||
AVS_FILE_READ = 0x01,
|
||||
AVS_FILE_WRITE = 0x02,
|
||||
AVS_FILE_CREATE = 0x10,
|
||||
AVS_FILE_TRUNCATE = 0x20,
|
||||
AVS_FILE_EXCLUSIVE = 0x80,
|
||||
};
|
||||
#endif
|
||||
|
||||
enum avs_file_flag {
|
||||
AVS_FILE_FLAG_SHARE_READ = 0x124,
|
||||
AVS_FILE_FLAG_SHARE_WRITE = 0x92,
|
||||
};
|
||||
|
||||
enum avs_seek_origin {
|
||||
AVS_SEEK_SET = 0,
|
||||
AVS_SEEK_CUR = 1,
|
||||
AVS_SEEK_END = 2,
|
||||
};
|
||||
|
||||
avs_desc avs_fs_open(const char *path, uint16_t mode, int flags);
|
||||
int avs_fs_close(avs_desc desc);
|
||||
size_t avs_fs_read(avs_desc desc, char *buf, uint32_t sz);
|
||||
int avs_fs_lseek(avs_desc desc, long pos, int whence);
|
||||
int avs_fs_lstat(const char *path, struct avs_stat *st);
|
||||
int avs_fs_copy(const char *src, const char *dest);
|
||||
int avs_fs_addfs(void *filesys_struct);
|
||||
int avs_fs_mount(
|
||||
const char *mountpoint, const char *fsroot, const char *fstype, void *data);
|
||||
avs_desc avs_fs_opendir(const char *path);
|
||||
const char* avs_fs_readdir(avs_desc dir);
|
||||
void avs_fs_closedir(avs_desc dir);
|
||||
|
||||
bool avs_is_active();
|
||||
|
||||
|
||||
@@ -2,6 +2,12 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot
|
||||
avs_fs_close
|
||||
avs_fs_copy
|
||||
avs_fs_lseek
|
||||
avs_fs_lstat
|
||||
avs_fs_open
|
||||
avs_fs_read
|
||||
avs_net_ctrl
|
||||
avs_shutdown
|
||||
avs_thread_create
|
||||
@@ -26,6 +32,7 @@ EXPORTS
|
||||
property_node_clone
|
||||
property_node_create
|
||||
property_node_name
|
||||
property_node_read
|
||||
property_node_refer
|
||||
property_node_remove
|
||||
property_node_type
|
||||
|
||||
@@ -2,6 +2,15 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot
|
||||
avs_fs_close
|
||||
avs_fs_copy
|
||||
avs_fs_lseek
|
||||
avs_fs_lstat
|
||||
avs_fs_open
|
||||
avs_fs_read
|
||||
avs_fs_opendir
|
||||
avs_fs_readdir
|
||||
avs_fs_closedir
|
||||
avs_net_ctrl
|
||||
avs_shutdown
|
||||
avs_thread_create
|
||||
@@ -27,11 +36,13 @@ EXPORTS
|
||||
property_node_create
|
||||
property_node_datasize
|
||||
property_node_name
|
||||
property_node_read
|
||||
property_node_refer
|
||||
property_node_remove
|
||||
property_node_type
|
||||
property_node_traversal
|
||||
property_node_refdata
|
||||
property_query_size
|
||||
property_psmap_export
|
||||
property_psmap_import
|
||||
std_getenv
|
||||
|
||||
@@ -2,6 +2,15 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot @22 NONAME
|
||||
avs_fs_close @60 NONAME
|
||||
avs_fs_copy @63 NONAME
|
||||
avs_fs_lseek @70 NONAME
|
||||
avs_fs_lstat @71 NONAME
|
||||
avs_fs_open @75 NONAME
|
||||
avs_fs_read @77 NONAME
|
||||
avs_fs_opendir @76 NONAME
|
||||
avs_fs_readdir @78 NONAME
|
||||
avs_fs_closedir @61 NONAME
|
||||
avs_net_ctrl @107 NONAME
|
||||
avs_shutdown @140 NONAME
|
||||
avs_thread_create @156 NONAME
|
||||
@@ -19,8 +28,15 @@ EXPORTS
|
||||
property_insert_read @255 NONAME
|
||||
property_node_create @266 NONAME
|
||||
property_node_datasize @267 NONAME
|
||||
property_node_name @274 NONAME
|
||||
property_node_read @276 NONAME
|
||||
property_node_refer @278 NONAME
|
||||
property_node_remove @279 NONAME
|
||||
property_node_type @282 NONAME
|
||||
property_node_clone @280 NONAME
|
||||
property_node_traversal @282 NONAME
|
||||
property_node_refdata @277 NONAME
|
||||
property_query_size @290 NONAME
|
||||
property_psmap_import @288 NONAME
|
||||
property_psmap_export @287 NONAME
|
||||
property_read_query_memsize @291 NONAME
|
||||
|
||||
@@ -2,7 +2,15 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot @237 NONAME
|
||||
avs_fs_close @276 NONAME
|
||||
avs_fs_copy @283 NONAME
|
||||
avs_fs_lseek @16 NONAME
|
||||
avs_fs_lstat @97 NONAME
|
||||
avs_fs_open @178 NONAME
|
||||
avs_fs_read @306 NONAME
|
||||
avs_fs_opendir @216 NONAME
|
||||
avs_fs_readdir @130 NONAME
|
||||
avs_fs_closedir @131 NONAME
|
||||
avs_net_ctrl @15 NONAME
|
||||
avs_shutdown @333 NONAME
|
||||
avs_thread_create @183 NONAME
|
||||
@@ -19,8 +27,15 @@ EXPORTS
|
||||
property_insert_read @23 NONAME
|
||||
property_node_create @316 NONAME
|
||||
property_node_datasize @249 NONAME
|
||||
property_node_name @255 NONAME
|
||||
property_node_read @2 NONAME
|
||||
property_node_refer @268 NONAME
|
||||
property_node_remove @129 NONAME
|
||||
property_node_type @329 NONAME
|
||||
property_node_clone @130 NONAME
|
||||
property_node_traversal @93 NONAME
|
||||
property_node_refdata @330 NONAME == XC058ba5000151
|
||||
property_query_size @250 NONAME == XC058ba5000101
|
||||
property_psmap_import @102 NONAME
|
||||
property_psmap_export @110 NONAME
|
||||
property_read_query_memsize @100 NONAME
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
LIBRARY libavs-win32-ea3
|
||||
|
||||
EXPORTS
|
||||
ea3_boot @94 NONAME
|
||||
ea3_shutdown @97 NONAME
|
||||
@@ -0,0 +1,44 @@
|
||||
LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot @237 NONAME == XC058ba50000f4
|
||||
avs_fs_close @276 NONAME == XC058ba500011b
|
||||
avs_fs_copy @283 NONAME == XC058ba5000122
|
||||
avs_fs_lseek @16 NONAME == XC058ba500000f
|
||||
avs_fs_lstat @97 NONAME == XC058ba5000063
|
||||
avs_fs_open @178 NONAME == XC058ba50000b6
|
||||
avs_fs_read @306 NONAME == XC058ba5000139
|
||||
avs_fs_opendir @216 NONAME == XC058ba50000dd
|
||||
avs_fs_readdir @130 NONAME == XC058ba5000086
|
||||
avs_fs_closedir @131 NONAME == XC058ba5000087
|
||||
avs_net_ctrl @15 NONAME == XC058ba500000e
|
||||
avs_shutdown @333 NONAME == XC058ba5000154
|
||||
avs_thread_create @183 NONAME == XC058ba50000bb
|
||||
avs_thread_destroy @76 NONAME == XC058ba500004e
|
||||
avs_thread_exit @147 NONAME == XC058ba5000097
|
||||
avs_thread_join @92 NONAME == XC058ba500005e
|
||||
log_body_misc @44 NONAME == XC058ba500002d
|
||||
log_body_info @339 NONAME == XC058ba500015a
|
||||
log_body_warning @219 NONAME == XC058ba50000e1
|
||||
log_body_fatal @128 NONAME == XC058ba5000084
|
||||
property_create @256 NONAME == XC058ba5000107
|
||||
property_desc_to_buffer @201 NONAME == XC058ba50000cd
|
||||
property_destroy @264 NONAME == XC058ba500010f
|
||||
property_insert_read @23 NONAME == XC058ba5000016
|
||||
property_node_create @316 NONAME == XC058ba5000143
|
||||
property_node_datasize @249 NONAME == XC058ba5000100
|
||||
property_node_name @255 NONAME == XC058ba5000106
|
||||
property_node_read @2 NONAME == XC058ba5000001
|
||||
property_node_refer @268 NONAME == XC058ba5000113
|
||||
property_node_remove @129 NONAME == XC058ba5000085
|
||||
property_node_type @329 NONAME == XC058ba5000150
|
||||
property_node_clone @252 NONAME == XC058ba5000103
|
||||
property_node_traversal @93 NONAME == XC058ba500005f
|
||||
property_node_refdata @330 NONAME == XC058ba5000151
|
||||
property_query_size @250 NONAME == XC058ba5000101
|
||||
property_psmap_import @102 NONAME == XC058ba5000068
|
||||
property_psmap_export @110 NONAME == XC058ba5000071
|
||||
property_read_query_memsize @100 NONAME == XC058ba5000066
|
||||
property_search @244 NONAME == XC058ba50000fb
|
||||
std_getenv @226 NONAME == XC058ba50000e8
|
||||
std_setenv @114 NONAME == XC058ba5000075
|
||||
@@ -2,6 +2,15 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot @298 NONAME
|
||||
avs_fs_close @573 NONAME == XC0bbe97000119
|
||||
avs_fs_copy @573 NONAME == XC0bbe97000120
|
||||
avs_fs_lseek @573 NONAME ==
|
||||
avs_fs_lstat @573 NONAME == XC0bbe9700005f
|
||||
avs_fs_open @573 NONAME == XC0bbe970000b3
|
||||
avs_fs_read @573 NONAME ==
|
||||
avs_fs_opendir @573 NONAME == XC0bbe970000db
|
||||
avs_fs_readdir @573 NONAME ==
|
||||
avs_fs_closedir @573 NONAME ==
|
||||
avs_net_ctrl @100 NONAME
|
||||
avs_shutdown @299 NONAME
|
||||
avs_thread_create @6 NONAME
|
||||
@@ -15,7 +24,14 @@ EXPORTS
|
||||
property_desc_to_buffer @131 NONAME
|
||||
property_destroy @130 NONAME
|
||||
property_insert_read @133 NONAME
|
||||
property_node_name @573 NONAME ==
|
||||
property_node_read @573 NONAME ==
|
||||
property_node_remove @148 NONAME
|
||||
property_node_type @573 NONAME ==
|
||||
property_node_clone @149 NONAME
|
||||
property_node_traversal @151 NONAME
|
||||
property_node_refdata @573 NONAME ==
|
||||
property_query_size @573 NONAME ==
|
||||
property_psmap_import @163 NONAME
|
||||
property_psmap_export @164 NONAME
|
||||
property_read_query_memsize @161 NONAME
|
||||
|
||||
@@ -5,8 +5,13 @@ EXPORTS
|
||||
avs_fs_close @65 NONAME
|
||||
avs_fs_lseek @59 NONAME
|
||||
avs_fs_lseek64 @60 NONAME
|
||||
avs_fs_lstat @79 NONAME
|
||||
avs_fs_open @58 NONAME
|
||||
avs_fs_read @61 NONAME
|
||||
avs_fs_copy @81 NONAME
|
||||
avs_fs_opendir @72 NONAME == XCd229cc0000f0
|
||||
avs_fs_readdir @73 NONAME == XCd229cc0000bb
|
||||
avs_fs_closedir @74 NONAME == XCd229cc0000b8
|
||||
avs_net_ctrl @98 NONAME
|
||||
avs_shutdown @286 NONAME
|
||||
avs_thread_create @6 NONAME
|
||||
@@ -22,8 +27,16 @@ EXPORTS
|
||||
property_destroy @128 NONAME
|
||||
property_insert_read @131 NONAME
|
||||
property_node_create @145 NONAME
|
||||
property_node_name @150 NONAME
|
||||
property_node_read @154 NONAME == XCd229cc0000f3
|
||||
property_node_refer @158 NONAME
|
||||
property_node_remove @146 NONAME
|
||||
property_node_type @151 NONAME == XCd229cc000071
|
||||
property_node_clone @147 NONAME
|
||||
property_node_traversal @149 NONAME
|
||||
property_node_refdata @148 NONAME == XCd229cc00009f
|
||||
property_node_datasize @153 NONAME == XCd229cc000083
|
||||
property_query_size @142 NONAME == XCd229cc000032
|
||||
property_psmap_export @162 NONAME
|
||||
property_psmap_import @161 NONAME
|
||||
property_read_query_memsize @159 NONAME
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_fs_close @65 NONAME
|
||||
avs_fs_copy @81 NONAME
|
||||
avs_fs_lseek @59 NONAME
|
||||
avs_fs_lstat @79 NONAME
|
||||
avs_fs_open @58 NONAME
|
||||
avs_fs_read @61 NONAME
|
||||
avs_fs_opendir @72 NONAME == XCnbrep7000047
|
||||
avs_fs_readdir @73 NONAME == XCnbrep7000048
|
||||
avs_fs_closedir @74 NONAME == XCnbrep7000049
|
||||
avs_thread_create @5 NONAME
|
||||
avs_thread_destroy @7 NONAME
|
||||
avs_thread_exit @11 NONAME
|
||||
@@ -12,7 +21,15 @@ EXPORTS
|
||||
property_insert_read @128 NONAME
|
||||
property_search @141 NONAME
|
||||
property_node_create @142 NONAME
|
||||
property_node_name @147 NONAME == XCnbrep7000092
|
||||
property_node_remove @143 NONAME
|
||||
property_node_type @148 NONAME == XCnbrep7000093
|
||||
property_node_clone @144 NONAME
|
||||
property_node_traversal @146 NONAME
|
||||
property_node_refdata @145 NONAME == XCnbrep7000090
|
||||
property_node_datasize @150 NONAME == XCnbrep7000095
|
||||
property_node_read @151 NONAME == XCnbrep7000096
|
||||
property_query_size @139 NONAME == XCnbrep700008a
|
||||
property_node_refer @155 NONAME
|
||||
property_read_query_memsize @156 NONAME
|
||||
property_psmap_export @159 NONAME
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_fs_close @86 NONAME == XCnbrep7000055
|
||||
avs_fs_copy @102 NONAME == XCnbrep7000065
|
||||
avs_fs_lseek @80 NONAME == XCnbrep700004f
|
||||
avs_fs_lstat @100 NONAME == XCnbrep7000063
|
||||
avs_fs_open @79 NONAME == XCnbrep700004e
|
||||
avs_fs_read @82 NONAME == XCnbrep7000051
|
||||
avs_fs_opendir @93 NONAME == XCnbrep700005c
|
||||
avs_fs_readdir @94 NONAME == XCnbrep700005d
|
||||
avs_fs_closedir @95 NONAME == XCnbrep700005e
|
||||
avs_thread_create @5 NONAME
|
||||
avs_thread_destroy @7 NONAME
|
||||
avs_thread_exit @11 NONAME
|
||||
@@ -12,7 +21,15 @@ EXPORTS
|
||||
property_insert_read @149 NONAME
|
||||
property_search @162 NONAME
|
||||
property_node_create @163 NONAME
|
||||
property_node_name @168 NONAME == XCnbrep70000a7
|
||||
property_node_remove @164 NONAME
|
||||
property_node_type @169 NONAME == XCnbrep70000a8
|
||||
property_node_clone @165 NONAME
|
||||
property_node_traversal @167 NONAME
|
||||
property_node_refdata @166 NONAME == XCnbrep70000a5
|
||||
property_node_datasize @171 NONAME == XCnbrep70000aa
|
||||
property_query_size @160 NONAME == XCnbrep700009f
|
||||
property_node_read @172 NONAME == XCnbrep70000ab
|
||||
property_node_refer @176 NONAME
|
||||
property_read_query_memsize @177 NONAME
|
||||
property_psmap_import @179 NONAME
|
||||
|
||||
@@ -6,7 +6,16 @@ EXPORTS
|
||||
avs_thread_exit @11 NONAME
|
||||
avs_thread_join @12 NONAME
|
||||
avs_fs_addfs @73 NONAME
|
||||
avs_fs_close @86 NONAME == XCgsqzn0000055
|
||||
avs_fs_copy @102 NONAME == XCgsqzn0000065
|
||||
avs_fs_lseek @80 NONAME == XCgsqzn000004f
|
||||
avs_fs_lstat @100 NONAME == XCgsqzn0000063
|
||||
avs_fs_mount @76 NONAME
|
||||
avs_fs_open @79 NONAME == XCgsqzn000004e
|
||||
avs_fs_read @82 NONAME == XCgsqzn0000051
|
||||
avs_fs_opendir @93 NONAME == XCgsqzn000005c
|
||||
avs_fs_readdir @94 NONAME == XCgsqzn000005d
|
||||
avs_fs_closedir @95 NONAME == XCgsqzn000005e
|
||||
avs_net_ctrl @119 NONAME
|
||||
property_create @145 NONAME
|
||||
property_destroy @146 NONAME
|
||||
@@ -14,7 +23,15 @@ EXPORTS
|
||||
property_insert_read @149 NONAME
|
||||
property_search @162 NONAME
|
||||
property_node_create @163 NONAME
|
||||
property_node_name @168 NONAME == XCgsqzn00000a7
|
||||
property_node_remove @164 NONAME
|
||||
property_node_type @169 NONAME == XCgsqzn00000a8
|
||||
property_node_clone @165 NONAME
|
||||
property_node_traversal @167 NONAME
|
||||
property_node_refdata @166 NONAME == XCgsqzn00000a5
|
||||
property_node_datasize @171 NONAME == XCgsqzn00000aa
|
||||
property_node_read @172 NONAME == XCgsqzn00000ab
|
||||
property_query_size @160 NONAME == XCgsqzn000009f
|
||||
property_node_refer @176 NONAME
|
||||
property_read_query_memsize @177 NONAME
|
||||
property_psmap_import @179 NONAME
|
||||
|
||||
@@ -2,6 +2,12 @@ LIBRARY libavs-win32
|
||||
|
||||
EXPORTS
|
||||
avs_boot
|
||||
avs_fs_close
|
||||
avs_fs_copy
|
||||
avs_fs_lseek
|
||||
avs_fs_lstat
|
||||
avs_fs_open
|
||||
avs_fs_read
|
||||
avs_net_ctrl
|
||||
avs_shutdown
|
||||
avs_thread_create
|
||||
@@ -27,6 +33,7 @@ EXPORTS
|
||||
property_node_create
|
||||
property_node_datasize
|
||||
property_node_name
|
||||
property_node_read
|
||||
property_node_refer
|
||||
property_node_remove
|
||||
property_node_type
|
||||
|
||||
@@ -3,10 +3,15 @@ LIBRARY libavs-win64
|
||||
EXPORTS
|
||||
avs_boot @285 NONAME
|
||||
avs_fs_close @65 NONAME
|
||||
avs_fs_copy @81 NONAME
|
||||
avs_fs_lseek @59 NONAME
|
||||
avs_fs_lseek64 @60 NONAME
|
||||
avs_fs_lstat @79 NONAME
|
||||
avs_fs_open @58 NONAME
|
||||
avs_fs_read @61 NONAME
|
||||
avs_fs_opendir @72 NONAME == XCd229cc0000f0
|
||||
avs_fs_readdir @73 NONAME == XCd229cc0000bb
|
||||
avs_fs_closedir @74 NONAME == XCd229cc0000b8
|
||||
avs_net_ctrl @98 NONAME
|
||||
avs_shutdown @286 NONAME
|
||||
avs_thread_create @6 NONAME
|
||||
@@ -22,8 +27,16 @@ EXPORTS
|
||||
property_destroy @128 NONAME
|
||||
property_insert_read @131 NONAME
|
||||
property_node_create @145 NONAME
|
||||
property_node_name @150 NONAME
|
||||
property_node_read @154 NONAME == XCd229cc0000f3
|
||||
property_node_refer @158 NONAME
|
||||
property_node_remove @146 NONAME
|
||||
property_node_type @151 NONAME == XCd229cc000071
|
||||
property_node_clone @147 NONAME
|
||||
property_node_traversal @149 NONAME
|
||||
property_node_refdata @148 NONAME == XCd229cc00009f
|
||||
property_node_datasize @153 NONAME == XCd229cc000083
|
||||
property_query_size @142 NONAME == XCd229cc000032
|
||||
property_psmap_export @162 NONAME
|
||||
property_psmap_import @161 NONAME
|
||||
property_read_query_memsize @159 NONAME
|
||||
|
||||
@@ -3,10 +3,15 @@ LIBRARY libavs-win64
|
||||
EXPORTS
|
||||
avs_boot @285 NONAME
|
||||
avs_fs_close @65 NONAME
|
||||
avs_fs_copy @81 NONAME
|
||||
avs_fs_lseek @59 NONAME
|
||||
avs_fs_lseek64 @60 NONAME
|
||||
avs_fs_lstat @78 NONAME
|
||||
avs_fs_open @58 NONAME
|
||||
avs_fs_read @61 NONAME
|
||||
avs_fs_opendir @573 NONAME ==
|
||||
avs_fs_readdir @573 NONAME ==
|
||||
avs_fs_closedir @573 NONAME ==
|
||||
avs_net_ctrl @98 NONAME
|
||||
avs_shutdown @286 NONAME
|
||||
avs_thread_create @6 NONAME
|
||||
@@ -22,8 +27,16 @@ EXPORTS
|
||||
property_destroy @128 NONAME
|
||||
property_insert_read @131 NONAME
|
||||
property_node_create @145 NONAME
|
||||
property_node_name @573 NONAME ==
|
||||
property_node_read @573 NONAME ==
|
||||
property_query_size @573 NONAME ==
|
||||
property_node_refer @158 NONAME
|
||||
property_node_remove @146 NONAME
|
||||
property_node_type @573 NONAME ==
|
||||
property_node_clone @147 NONAME
|
||||
property_node_traversal @149 NONAME
|
||||
property_node_refdata @573 NONAME ==
|
||||
property_node_datasize @573 NONAME ==
|
||||
property_psmap_export @162 NONAME
|
||||
property_psmap_import @161 NONAME
|
||||
property_read_query_memsize @159 NONAME
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
LIBRARY libavs-win64
|
||||
|
||||
EXPORTS
|
||||
avs_fs_close @65 NONAME
|
||||
avs_fs_copy @81 NONAME
|
||||
avs_fs_lseek @59 NONAME
|
||||
avs_fs_lstat @79 NONAME
|
||||
avs_fs_open @58 NONAME
|
||||
avs_fs_read @61 NONAME
|
||||
avs_fs_opendir @72 NONAME == XCnbrep7000047
|
||||
avs_fs_readdir @73 NONAME == XCnbrep7000048
|
||||
avs_fs_closedir @74 NONAME == XCnbrep7000049
|
||||
avs_thread_create @5 NONAME
|
||||
avs_thread_destroy @7 NONAME
|
||||
avs_thread_exit @11 NONAME
|
||||
@@ -12,7 +21,15 @@ EXPORTS
|
||||
property_insert_read @128 NONAME
|
||||
property_search @141 NONAME
|
||||
property_node_create @142 NONAME
|
||||
property_node_name @147 NONAME == XCnbrep7000092
|
||||
property_node_remove @143 NONAME
|
||||
property_node_type @148 NONAME == XCnbrep7000093
|
||||
property_node_clone @144 NONAME
|
||||
property_node_traversal @146 NONAME
|
||||
property_node_refdata @145 NONAME == XCnbrep7000090
|
||||
property_node_datasize @150 NONAME == XCnbrep7000095
|
||||
property_node_read @151 NONAME == XCnbrep7000096
|
||||
property_query_size @139 NONAME == XCnbrep700008a
|
||||
property_node_refer @155 NONAME
|
||||
property_read_query_memsize @156 NONAME
|
||||
property_psmap_export @159 NONAME
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
LIBRARY libavs-win64
|
||||
|
||||
EXPORTS
|
||||
avs_fs_close @86 NONAME == XCnbrep7000055
|
||||
avs_fs_copy @102 NONAME == XCnbrep7000065
|
||||
avs_fs_lseek @80 NONAME == XCnbrep700004f
|
||||
avs_fs_lstat @100 NONAME == XCnbrep7000063
|
||||
avs_fs_open @79 NONAME == XCnbrep700004e
|
||||
avs_fs_read @82 NONAME == XCnbrep7000051
|
||||
avs_fs_opendir @93 NONAME == XCnbrep700005c
|
||||
avs_fs_readdir @94 NONAME == XCnbrep700005d
|
||||
avs_fs_closedir @95 NONAME == XCnbrep700005e
|
||||
avs_thread_create @5 NONAME
|
||||
avs_thread_destroy @7 NONAME
|
||||
avs_thread_exit @11 NONAME
|
||||
@@ -12,7 +21,15 @@ EXPORTS
|
||||
property_insert_read @149 NONAME
|
||||
property_search @162 NONAME
|
||||
property_node_create @163 NONAME
|
||||
property_node_name @168 NONAME == XCnbrep70000a7
|
||||
property_node_remove @164 NONAME
|
||||
property_node_type @169 NONAME == XCnbrep70000a8
|
||||
property_node_clone @165 NONAME
|
||||
property_node_traversal @167 NONAME
|
||||
property_node_refdata @166 NONAME == XCnbrep70000a5
|
||||
property_node_datasize @171 NONAME == XCnbrep70000aa
|
||||
property_node_read @172 NONAME == XCnbrep70000ab
|
||||
property_query_size @160 NONAME == XCnbrep700009f
|
||||
property_node_refer @176 NONAME
|
||||
property_read_query_memsize @177 NONAME
|
||||
property_psmap_import @179 NONAME
|
||||
|
||||
@@ -6,7 +6,16 @@ EXPORTS
|
||||
avs_thread_exit @11 NONAME
|
||||
avs_thread_join @12 NONAME
|
||||
avs_fs_addfs @73 NONAME
|
||||
avs_fs_close @86 NONAME == XCgsqzn0000055
|
||||
avs_fs_copy @102 NONAME == XCgsqzn0000065
|
||||
avs_fs_lseek @80 NONAME == XCgsqzn000004f
|
||||
avs_fs_lstat @100 NONAME == XCgsqzn0000063
|
||||
avs_fs_mount @76 NONAME
|
||||
avs_fs_open @79 NONAME == XCgsqzn000004e
|
||||
avs_fs_read @82 NONAME == XCgsqzn0000051
|
||||
avs_fs_opendir @93 NONAME == XCgsqzn000005c
|
||||
avs_fs_readdir @94 NONAME == XCgsqzn000005d
|
||||
avs_fs_closedir @95 NONAME == XCgsqzn000005e
|
||||
avs_net_ctrl @119 NONAME
|
||||
property_create @145 NONAME
|
||||
property_destroy @146 NONAME
|
||||
@@ -14,7 +23,15 @@ EXPORTS
|
||||
property_insert_read @149 NONAME
|
||||
property_search @162 NONAME
|
||||
property_node_create @163 NONAME
|
||||
property_node_name @168 NONAME == XCgsqzn00000a7
|
||||
property_node_remove @164 NONAME
|
||||
property_node_type @169 NONAME == XCgsqzn00000a8
|
||||
property_node_clone @165 NONAME
|
||||
property_node_traversal @167 NONAME
|
||||
property_node_refdata @166 NONAME == XCgsqzn00000a5
|
||||
property_node_datasize @171 NONAME == XCgsqzn00000aa
|
||||
property_node_read @172 NONAME == XCgsqzn00000ab
|
||||
property_query_size @160 NONAME == XCgsqzn000009f
|
||||
property_node_refer @176 NONAME
|
||||
property_read_query_memsize @177 NONAME
|
||||
property_psmap_import @179 NONAME
|
||||
|
||||
@@ -511,7 +511,7 @@ static void ac_io_emu_icca_cipher_set_key(
|
||||
resp.cmd.raw[0] = (reader_key >> 24) & 0xFF;
|
||||
resp.cmd.raw[1] = (reader_key >> 16) & 0xFF;
|
||||
resp.cmd.raw[2] = (reader_key >> 8) & 0xFF;
|
||||
resp.cmd.raw[3] = (reader_key) &0xFF;
|
||||
resp.cmd.raw[3] = (reader_key) & 0xFF;
|
||||
|
||||
// so I looked these constants up, this isn't actually a secure key
|
||||
// generator it's actually Marsaglia's "KISS" algorithm with different
|
||||
|
||||
@@ -29,81 +29,79 @@ bool aciotest_bi2a_iidx_handler_update(
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
printf(
|
||||
"|---------------------------------------|\n"
|
||||
"| R Y G B Neons B G Y R |\n"
|
||||
"| %d %d %d %d %d %d %d %d %d |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"| NOW PLAYING: %c%c%c%c%c%c%c%c%c |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"| Effect %d S1 S2 S3 S4 S5 Test %d|\n"
|
||||
"|StartP1 %d %02d %02d %02d %02d %02d StartP2 %d|\n"
|
||||
"| VEFX %d Service %d|\n"
|
||||
"_________________________________________\n"
|
||||
"| __ __ |\n"
|
||||
"| / \\ _ / \\ |\n"
|
||||
"| | %03d| %d %d %d |%d| %d %d %d | %03d| |\n"
|
||||
"| \\___/ %d %d %d %d |_| %d %d %d %d \\___/ |\n"
|
||||
"| |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"|---------------------------------------|\n",
|
||||
"|---------------------------------------|\n"
|
||||
"| R Y G B Neons B G Y R |\n"
|
||||
"| %d %d %d %d %d %d %d %d %d |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"| NOW PLAYING: %c%c%c%c%c%c%c%c%c |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"| Effect %d S1 S2 S3 S4 S5 Test %d|\n"
|
||||
"|StartP1 %d %02d %02d %02d %02d %02d StartP2 %d|\n"
|
||||
"| VEFX %d Service %d|\n"
|
||||
"_________________________________________\n"
|
||||
"| __ __ |\n"
|
||||
"| / \\ _ / \\ |\n"
|
||||
"| | %03d| %d %d %d |%d| %d %d %d | %03d| |\n"
|
||||
"| \\___/ %d %d %d %d |_| %d %d %d %d \\___/ |\n"
|
||||
"| |\n"
|
||||
"|---------------------------------------|\n"
|
||||
"|---------------------------------------|\n",
|
||||
|
||||
pout.SPOTLIGHT2[0].l_state,
|
||||
pout.SPOTLIGHT2[1].l_state,
|
||||
pout.SPOTLIGHT2[2].l_state,
|
||||
pout.SPOTLIGHT2[3].l_state,
|
||||
pout.NEONLAMP.l_state,
|
||||
pout.SPOTLIGHT1[0].l_state,
|
||||
pout.SPOTLIGHT1[1].l_state,
|
||||
pout.SPOTLIGHT1[2].l_state,
|
||||
pout.SPOTLIGHT1[3].l_state,
|
||||
pout.SPOTLIGHT2[0].l_state,
|
||||
pout.SPOTLIGHT2[1].l_state,
|
||||
pout.SPOTLIGHT2[2].l_state,
|
||||
pout.SPOTLIGHT2[3].l_state,
|
||||
pout.NEONLAMP.l_state,
|
||||
pout.SPOTLIGHT1[0].l_state,
|
||||
pout.SPOTLIGHT1[1].l_state,
|
||||
pout.SPOTLIGHT1[2].l_state,
|
||||
pout.SPOTLIGHT1[3].l_state,
|
||||
|
||||
pout.SEG16[0],
|
||||
pout.SEG16[1],
|
||||
pout.SEG16[2],
|
||||
pout.SEG16[3],
|
||||
pout.SEG16[4],
|
||||
pout.SEG16[5],
|
||||
pout.SEG16[6],
|
||||
pout.SEG16[7],
|
||||
pout.SEG16[8],
|
||||
pout.SEG16[0],
|
||||
pout.SEG16[1],
|
||||
pout.SEG16[2],
|
||||
pout.SEG16[3],
|
||||
pout.SEG16[4],
|
||||
pout.SEG16[5],
|
||||
pout.SEG16[6],
|
||||
pout.SEG16[7],
|
||||
pout.SEG16[8],
|
||||
|
||||
pin.PANEL.y_effect,
|
||||
pin.SYSTEM.v_test,
|
||||
pin.PANEL.y_effect,
|
||||
pin.SYSTEM.v_test,
|
||||
|
||||
pin.PANEL.y_start1,
|
||||
pin.SLIDER1.s_val,
|
||||
pin.SLIDER2.s_val,
|
||||
pin.SLIDER3.s_val,
|
||||
pin.SLIDER4.s_val,
|
||||
pin.SLIDER5.s_val,
|
||||
pin.PANEL.y_start2,
|
||||
pin.PANEL.y_start1,
|
||||
pin.SLIDER1.s_val,
|
||||
pin.SLIDER2.s_val,
|
||||
pin.SLIDER3.s_val,
|
||||
pin.SLIDER4.s_val,
|
||||
pin.SLIDER5.s_val,
|
||||
pin.PANEL.y_start2,
|
||||
|
||||
pin.PANEL.y_vefx,
|
||||
pin.SYSTEM.v_service,
|
||||
pin.PANEL.y_vefx,
|
||||
pin.SYSTEM.v_service,
|
||||
|
||||
pin.TURNTABLE1,
|
||||
pin.P1SW2.b_val,
|
||||
pin.P1SW4.b_val,
|
||||
pin.P1SW6.b_val,
|
||||
pin.SYSTEM.v_coin,
|
||||
pin.P2SW2.b_val,
|
||||
pin.P2SW4.b_val,
|
||||
pin.P2SW6.b_val,
|
||||
pin.TURNTABLE2,
|
||||
pin.TURNTABLE1,
|
||||
pin.P1SW2.b_val,
|
||||
pin.P1SW4.b_val,
|
||||
pin.P1SW6.b_val,
|
||||
pin.SYSTEM.v_coin,
|
||||
pin.P2SW2.b_val,
|
||||
pin.P2SW4.b_val,
|
||||
pin.P2SW6.b_val,
|
||||
pin.TURNTABLE2,
|
||||
|
||||
pin.P1SW1.b_val,
|
||||
pin.P1SW3.b_val,
|
||||
pin.P1SW5.b_val,
|
||||
pin.P1SW7.b_val,
|
||||
pin.P2SW1.b_val,
|
||||
pin.P2SW3.b_val,
|
||||
pin.P2SW5.b_val,
|
||||
pin.P2SW7.b_val
|
||||
pin.P1SW1.b_val,
|
||||
pin.P1SW3.b_val,
|
||||
pin.P1SW5.b_val,
|
||||
pin.P1SW7.b_val,
|
||||
pin.P2SW1.b_val,
|
||||
pin.P2SW3.b_val,
|
||||
pin.P2SW5.b_val,
|
||||
pin.P2SW7.b_val
|
||||
|
||||
);
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
+16
-18
@@ -1,14 +1,14 @@
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "aciodrv/device.h"
|
||||
|
||||
#include "aciotest/bi2a-sdvx.h"
|
||||
#include "aciotest/bi2a-iidx.h"
|
||||
#include "aciotest/bi2a-sdvx.h"
|
||||
#include "aciotest/handler.h"
|
||||
#include "aciotest/icca.h"
|
||||
#include "aciotest/kfca.h"
|
||||
@@ -58,25 +58,23 @@ static bool aciotest_assign_handler(
|
||||
if (bi2a_mode == 255) {
|
||||
printf(
|
||||
"Unknown BI2A mode specified, please check your command.\n"
|
||||
"Using bi2a-sdvx mode as default, press ENTER to continue\n"
|
||||
);
|
||||
"Using bi2a-sdvx mode as default, press ENTER to continue\n");
|
||||
bi2a_mode = 0;
|
||||
getchar();
|
||||
}
|
||||
|
||||
switch (bi2a_mode)
|
||||
{
|
||||
case 0:
|
||||
handler->init = aciotest_bi2a_sdvx_handler_init;
|
||||
handler->update = aciotest_bi2a_sdvx_handler_update;
|
||||
break;
|
||||
case 1:
|
||||
handler->init = aciotest_bi2a_iidx_handler_init;
|
||||
handler->update = aciotest_bi2a_iidx_handler_update;
|
||||
break;
|
||||
switch (bi2a_mode) {
|
||||
case 0:
|
||||
handler->init = aciotest_bi2a_sdvx_handler_init;
|
||||
handler->update = aciotest_bi2a_sdvx_handler_update;
|
||||
break;
|
||||
case 1:
|
||||
handler->init = aciotest_bi2a_iidx_handler_init;
|
||||
handler->update = aciotest_bi2a_iidx_handler_update;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -107,9 +105,9 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (argc == 4) {
|
||||
if(!strcmp(argv[3],"bi2a-iidx")) {
|
||||
if (!strcmp(argv[3], "bi2a-iidx")) {
|
||||
bi2a_mode = 1;
|
||||
} else if(!strcmp(argv[3],"bi2a-sdvx")) {
|
||||
} else if (!strcmp(argv[3], "bi2a-sdvx")) {
|
||||
bi2a_mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
libs += avs-util
|
||||
|
||||
libs_avs-util := \
|
||||
|
||||
src_avs-util := \
|
||||
error.c \
|
||||
@@ -0,0 +1,99 @@
|
||||
#include "avs-util/error.h"
|
||||
|
||||
#include "util/defs.h"
|
||||
|
||||
struct avs_util_avs_error_str {
|
||||
avs_error error;
|
||||
const char *msg;
|
||||
};
|
||||
|
||||
static const char *avs_util_error_unknown = "unknown error";
|
||||
|
||||
// Source: https://github.com/spicetools/spicetools
|
||||
static const struct avs_util_avs_error_str AVS_UTIL_ERRORS[] = {
|
||||
{0x80092000, "invalid type"},
|
||||
{0x80092001, "type cannot use as array"},
|
||||
{0x80092002, "invalid"},
|
||||
{0x80092003, "too large data size"},
|
||||
{0x80092004, "too small buffer size"},
|
||||
{0x80092005, "passcode 0 is not allowed"},
|
||||
{0x80092040, "invalid node name"},
|
||||
{0x80092041, "invalid attribute name"},
|
||||
{0x80092042, "reserved attribute name"},
|
||||
{0x80092043, "cannot find node/attribute"},
|
||||
{0x80092080, "cannot allocate node"},
|
||||
{0x80092081, "cannot allocate node value"},
|
||||
{0x80092082, "cannot allocate mdigest for finger-print"},
|
||||
{0x80092083, "cannot allocate nodename"},
|
||||
{0x800920C0, "node type differs"},
|
||||
{0x800920C1, "node type is VOID"},
|
||||
{0x800920C2, "node is array"},
|
||||
{0x800920C3, "node is not array"},
|
||||
{0x80092100, "node is create-disabled"},
|
||||
{0x80092101, "node is read-disabled"},
|
||||
{0x80092102, "node is write-disabled"},
|
||||
{0x80092103, "flag is already locked"},
|
||||
{0x80092104, "passcode differs"},
|
||||
{0x80092105, "insert_read() is applied to attribute"},
|
||||
{0x80092106, "part_write() is applied to attribute"},
|
||||
{0x80092107, "MODE_EXTEND flag differs"},
|
||||
{0x80092140, "root node already exists"},
|
||||
{0x80092141, "attribute cannot have children"},
|
||||
{0x80092142, "node/attribute already exists"},
|
||||
{0x80092143, "number of nodes exceeds 65535"},
|
||||
{0x80092144, "cannot interpret as number"},
|
||||
{0x80092145, "property is empty"},
|
||||
{0x80092180, "I/O error"},
|
||||
{0x80092181, "unexpected EOF"},
|
||||
{0x80092182, "unknown format"},
|
||||
{0x800921C0, "broken magic"},
|
||||
{0x800921C1, "broken metadata"},
|
||||
{0x800921C2, "broken databody"},
|
||||
{0x800921C3, "invalid type"},
|
||||
{0x800921C4, "too large data size"},
|
||||
{0x800921C5, "too long node/attribute name"},
|
||||
{0x800921C6, "attribute name is too long"},
|
||||
{0x800921C7, "node/attribute already exists"},
|
||||
{0x80092200, "invalid encoding"},
|
||||
{0x80092201, "invalid XML token"},
|
||||
{0x80092202, "XML syntax error"},
|
||||
{0x80092203, "start tag / end tag mismatch"},
|
||||
{0x80092204, "too large node data (__size mismatch)"},
|
||||
{0x80092205, "too deep node tree"},
|
||||
{0x80092206, "invalid type"},
|
||||
{0x80092207, "invalid size"},
|
||||
{0x80092208, "invalid count"},
|
||||
{0x80092209, "invalid value"},
|
||||
{0x8009220A, "invalid node name"},
|
||||
{0x8009220B, "invalid attribute name"},
|
||||
{0x8009220C, "reserved attribute name"},
|
||||
{0x8009220D, "node/attribute already exists"},
|
||||
{0x8009220E, "too many elements in node data"},
|
||||
{0x80092240, "JSON syntax error"},
|
||||
{0x80092241, "invalid JSON literal"},
|
||||
{0x80092242, "invalid JSON number"},
|
||||
{0x80092243, "invalid JSON string"},
|
||||
{0x80092244, "invalid JSON object name"},
|
||||
{0x80092245, "object name already exists"},
|
||||
{0x80092246, "too long JSON object name"},
|
||||
{0x80092247, "too deep JSON object/array nesting"},
|
||||
{0x80092248, "cannot convert JSON array to property"},
|
||||
{0x80092249, "cannot convert empty JSON object to property"},
|
||||
{0x8009224A, "root node already exists"},
|
||||
{0x8009224B, "cannot convert root node to TYPE_ARRAY"},
|
||||
{0x8009224C, "name represents reserved attribute"},
|
||||
{0x80092280, "finger-print differs"},
|
||||
{0x800922C0, "operation is not supported"}};
|
||||
|
||||
const char *avs_util_error_str(avs_error error)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < lengthof(AVS_UTIL_ERRORS); i++) {
|
||||
if (error == AVS_UTIL_ERRORS[i].error) {
|
||||
return AVS_UTIL_ERRORS[i].msg;
|
||||
}
|
||||
}
|
||||
|
||||
return avs_util_error_unknown;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef AVS_UTIL_ERROR_H
|
||||
#define AVS_UTIL_ERROR_H
|
||||
|
||||
#include "imports/avs.h"
|
||||
|
||||
const char *avs_util_error_str(avs_error error);
|
||||
|
||||
#endif
|
||||
@@ -28,7 +28,8 @@ typedef uint32_t (*ddr_io_read_pad_t)(void);
|
||||
typedef void (*ddr_io_set_lights_extio_t)(uint32_t extio_lights);
|
||||
typedef void (*ddr_io_set_lights_p3io_t)(uint32_t p3io_lights);
|
||||
typedef void (*ddr_io_set_lights_hdxs_panel_t)(uint32_t hdxs_lights);
|
||||
typedef void (*ddr_io_set_lights_hdxs_rgb_t)(uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
|
||||
typedef void (*ddr_io_set_lights_hdxs_rgb_t)(
|
||||
uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
|
||||
typedef void (*ddr_io_fini_t)(void);
|
||||
|
||||
static HMODULE _child_ddr_io_module;
|
||||
@@ -66,10 +67,7 @@ static int _io_thread_proc(void *ctx)
|
||||
|
||||
uint32_t local_tmp;
|
||||
|
||||
atomic_store_explicit(
|
||||
&_io_thread_proc_running,
|
||||
true,
|
||||
memory_order_seq_cst);
|
||||
atomic_store_explicit(&_io_thread_proc_running, true, memory_order_seq_cst);
|
||||
|
||||
log_info("IO thread running");
|
||||
|
||||
@@ -85,18 +83,16 @@ static int _io_thread_proc(void *ctx)
|
||||
local_tmp = _child_ddr_io_read_pad();
|
||||
|
||||
atomic_store_explicit(
|
||||
&_child_ddr_io_data_pad,
|
||||
local_tmp,
|
||||
memory_order_relaxed);
|
||||
&_child_ddr_io_data_pad, local_tmp, memory_order_relaxed);
|
||||
|
||||
// Only update outputs when they change gives this loop a major performance boost
|
||||
// The write calls on a p3io for the outputs are very expensive (~12 ms) as they
|
||||
// are executed over the ACIO protocol compared to only the input read
|
||||
// calls (~4 ms) which have a dedicated IOCTL call/endpoint
|
||||
// Only update outputs when they change gives this loop a major
|
||||
// performance boost The write calls on a p3io for the outputs are very
|
||||
// expensive (~12 ms) as they are executed over the ACIO protocol
|
||||
// compared to only the input read calls (~4 ms) which have a dedicated
|
||||
// IOCTL call/endpoint
|
||||
|
||||
local_tmp = atomic_load_explicit(
|
||||
&_child_ddr_io_data_extio_lights,
|
||||
memory_order_relaxed);
|
||||
&_child_ddr_io_data_extio_lights, memory_order_relaxed);
|
||||
|
||||
if (local_tmp != prev_child_ddr_io_data_extio_lights) {
|
||||
_child_ddr_io_set_lights_extio(local_tmp);
|
||||
@@ -104,9 +100,8 @@ static int _io_thread_proc(void *ctx)
|
||||
}
|
||||
|
||||
local_tmp = atomic_load_explicit(
|
||||
&_child_ddr_io_data_p3io_lights,
|
||||
memory_order_relaxed);
|
||||
|
||||
&_child_ddr_io_data_p3io_lights, memory_order_relaxed);
|
||||
|
||||
if (local_tmp != prev_child_ddr_io_data_p3io_lights) {
|
||||
_child_ddr_io_set_lights_p3io(local_tmp);
|
||||
prev_child_ddr_io_data_p3io_lights = local_tmp;
|
||||
@@ -121,22 +116,23 @@ static int _io_thread_proc(void *ctx)
|
||||
time_end = time_get_counter();
|
||||
total_time = time_get_elapsed_us(time_end - time_start);
|
||||
|
||||
log_info("IO thread performance: total iterations %lld, avg. loop cycle time %f us",
|
||||
loop_counter, ((double) total_time) / loop_counter);
|
||||
log_info(
|
||||
"IO thread performance: total iterations %lld, avg. loop cycle time %f "
|
||||
"us",
|
||||
loop_counter,
|
||||
((double) total_time) / loop_counter);
|
||||
|
||||
atomic_store_explicit(
|
||||
&_io_thread_proc_running,
|
||||
false,
|
||||
memory_order_seq_cst);
|
||||
&_io_thread_proc_running, false, memory_order_seq_cst);
|
||||
|
||||
log_info("IO thread shut down");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* _load_function(HMODULE module, const char* name)
|
||||
static void *_load_function(HMODULE module, const char *name)
|
||||
{
|
||||
void* ptr;
|
||||
void *ptr;
|
||||
|
||||
ptr = GetProcAddress(module, name);
|
||||
|
||||
@@ -175,13 +171,19 @@ bool ddr_io_init(
|
||||
return false;
|
||||
}
|
||||
|
||||
_child_ddr_io_set_loggers = _load_function(_child_ddr_io_module, "ddr_io_set_loggers");
|
||||
_child_ddr_io_set_loggers =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_set_loggers");
|
||||
_child_ddr_io_init = _load_function(_child_ddr_io_module, "ddr_io_init");
|
||||
_child_ddr_io_read_pad = _load_function(_child_ddr_io_module, "ddr_io_read_pad");
|
||||
_child_ddr_io_set_lights_extio = _load_function(_child_ddr_io_module, "ddr_io_set_lights_extio");
|
||||
_child_ddr_io_set_lights_p3io = _load_function(_child_ddr_io_module, "ddr_io_set_lights_p3io");
|
||||
_child_ddr_io_set_lights_hdxs_panel = _load_function(_child_ddr_io_module, "ddr_io_set_lights_hdxs_panel");
|
||||
_child_ddr_io_set_lights_hdxs_rgb = _load_function(_child_ddr_io_module, "ddr_io_set_lights_hdxs_rgb");
|
||||
_child_ddr_io_read_pad =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_read_pad");
|
||||
_child_ddr_io_set_lights_extio =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_set_lights_extio");
|
||||
_child_ddr_io_set_lights_p3io =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_set_lights_p3io");
|
||||
_child_ddr_io_set_lights_hdxs_panel =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_set_lights_hdxs_panel");
|
||||
_child_ddr_io_set_lights_hdxs_rgb =
|
||||
_load_function(_child_ddr_io_module, "ddr_io_set_lights_hdxs_rgb");
|
||||
_child_ddr_io_fini = _load_function(_child_ddr_io_module, "ddr_io_fini");
|
||||
|
||||
_child_ddr_io_set_loggers(
|
||||
@@ -199,10 +201,7 @@ bool ddr_io_init(
|
||||
return false;
|
||||
}
|
||||
|
||||
atomic_store_explicit(
|
||||
&_io_thread_proc_loop,
|
||||
true,
|
||||
memory_order_seq_cst);
|
||||
atomic_store_explicit(&_io_thread_proc_loop, true, memory_order_seq_cst);
|
||||
|
||||
if (!thread_create(_io_thread_proc, NULL, 16384, 0)) {
|
||||
log_warning("Creating IO thread failed");
|
||||
@@ -224,17 +223,13 @@ uint32_t ddr_io_read_pad(void)
|
||||
void ddr_io_set_lights_extio(uint32_t extio_lights)
|
||||
{
|
||||
atomic_store_explicit(
|
||||
&_child_ddr_io_data_extio_lights,
|
||||
extio_lights,
|
||||
memory_order_relaxed);
|
||||
&_child_ddr_io_data_extio_lights, extio_lights, memory_order_relaxed);
|
||||
}
|
||||
|
||||
void ddr_io_set_lights_p3io(uint32_t p3io_lights)
|
||||
{
|
||||
atomic_store_explicit(
|
||||
&_child_ddr_io_data_p3io_lights,
|
||||
p3io_lights,
|
||||
memory_order_relaxed);
|
||||
&_child_ddr_io_data_p3io_lights, p3io_lights, memory_order_relaxed);
|
||||
}
|
||||
|
||||
void ddr_io_set_lights_hdxs_panel(uint32_t lights)
|
||||
@@ -249,14 +244,12 @@ void ddr_io_set_lights_hdxs_rgb(uint8_t idx, uint8_t r, uint8_t g, uint8_t b)
|
||||
|
||||
void ddr_io_fini(void)
|
||||
{
|
||||
atomic_store_explicit(
|
||||
&_io_thread_proc_loop,
|
||||
false,
|
||||
memory_order_seq_cst);
|
||||
atomic_store_explicit(&_io_thread_proc_loop, false, memory_order_seq_cst);
|
||||
|
||||
log_info("Shutting down IO thread and waiting for it to finish...");
|
||||
|
||||
while (atomic_load_explicit(&_io_thread_proc_running, memory_order_seq_cst)) {
|
||||
while (
|
||||
atomic_load_explicit(&_io_thread_proc_running, memory_order_seq_cst)) {
|
||||
Sleep(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,8 +50,9 @@ arrays_fail:
|
||||
caps_fail:
|
||||
/**
|
||||
* Still allow the device to be used as input.
|
||||
* Useful for devices like the Sony DUALSHOCK 4, where it indicates it can receive outputs
|
||||
* but it errors out when trying to initialize an output report.
|
||||
* Useful for devices like the Sony DUALSHOCK 4, where it indicates it can
|
||||
* receive outputs but it errors out when trying to initialize an output
|
||||
* report.
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
@@ -213,7 +214,7 @@ r_init_fail:
|
||||
meta->nreports = 0;
|
||||
free(meta->reports);
|
||||
meta->reports = NULL;
|
||||
|
||||
|
||||
meta->nlights = 0;
|
||||
meta->nbuttons = 0;
|
||||
// Failed out before allocating memory
|
||||
|
||||
+13
-9
@@ -48,8 +48,8 @@ static void p3io_cmd_get_cab_type_or_dipsw(
|
||||
static void p3io_cmd_get_video_freq(
|
||||
const struct p3io_req_get_video_freq *req,
|
||||
struct p3io_resp_get_video_freq *resp);
|
||||
static void
|
||||
p3io_cmd_unknown_2b(const struct p3io_req_unknown_2b *req, struct p3io_resp_unknown_2b *resp);
|
||||
static void p3io_cmd_unknown_2b(
|
||||
const struct p3io_req_unknown_2b *req, struct p3io_resp_unknown_2b *resp);
|
||||
static void
|
||||
p3io_cmd_init(const struct p3io_req_init *req, struct p3io_resp_init *resp);
|
||||
static void p3io_cmd_get_coinstock(
|
||||
@@ -57,8 +57,9 @@ static void p3io_cmd_get_coinstock(
|
||||
static void p3io_cmd_set_coin_counter(
|
||||
const struct p3io_req_set_coin_counter *req,
|
||||
struct p3io_resp_set_coin_counter *resp);
|
||||
static void
|
||||
p3io_cmd_unknown(const struct p3io_req_unknown_generic *req, struct p3io_resp_unknown_generic *resp);
|
||||
static void p3io_cmd_unknown(
|
||||
const struct p3io_req_unknown_generic *req,
|
||||
struct p3io_resp_unknown_generic *resp);
|
||||
|
||||
void p3io_emu_init(const struct p3io_ops *ops, void *ctx)
|
||||
{
|
||||
@@ -518,8 +519,8 @@ static void p3io_cmd_get_video_freq(
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
p3io_cmd_unknown_2b(const struct p3io_req_unknown_2b *req, struct p3io_resp_unknown_2b *resp)
|
||||
static void p3io_cmd_unknown_2b(
|
||||
const struct p3io_req_unknown_2b *req, struct p3io_resp_unknown_2b *resp)
|
||||
{
|
||||
log_misc("Unknown 2b");
|
||||
|
||||
@@ -573,10 +574,13 @@ static void p3io_cmd_set_coin_counter(
|
||||
resp->status = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
p3io_cmd_unknown(const struct p3io_req_unknown_generic *req, struct p3io_resp_unknown_generic *resp)
|
||||
static void p3io_cmd_unknown(
|
||||
const struct p3io_req_unknown_generic *req,
|
||||
struct p3io_resp_unknown_generic *resp)
|
||||
{
|
||||
log_warning("Unsupported P3IO command, sending default response (might not work/crash though): %02x",
|
||||
log_warning(
|
||||
"Unsupported P3IO command, sending default response (might not "
|
||||
"work/crash though): %02x",
|
||||
req->hdr.cmd);
|
||||
|
||||
p3io_resp_hdr_init(&resp->hdr, sizeof(*resp), &req->hdr);
|
||||
|
||||
+49
-1
@@ -1,7 +1,55 @@
|
||||
#include <windows.h>
|
||||
#define LOG_MODULE "util-proc"
|
||||
|
||||
#include <windows.h>
|
||||
#include <winnt.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "util/log.h"
|
||||
|
||||
bool proc_is_running_as_admin_user()
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY authority = SECURITY_NT_AUTHORITY;
|
||||
PSID sid;
|
||||
BOOL res;
|
||||
BOOL is_admin;
|
||||
|
||||
res = AllocateAndInitializeSid(
|
||||
&authority,
|
||||
2,
|
||||
SECURITY_BUILTIN_DOMAIN_RID,
|
||||
DOMAIN_ALIAS_RID_ADMINS,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&sid);
|
||||
|
||||
if (!res) {
|
||||
log_warning(
|
||||
"Failed to allocate memory for is admin check: %lX",
|
||||
GetLastError());
|
||||
return false;
|
||||
}
|
||||
|
||||
is_admin = false;
|
||||
|
||||
res = CheckTokenMembership(NULL, sid, &is_admin);
|
||||
|
||||
if (!res) {
|
||||
log_warning(
|
||||
"Failed to check admin group membership: %lX", GetLastError());
|
||||
return false;
|
||||
}
|
||||
|
||||
FreeSid(sid);
|
||||
|
||||
return is_admin;
|
||||
}
|
||||
|
||||
void proc_terminate_current_process(uint32_t exit_code)
|
||||
{
|
||||
HANDLE hnd;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
bool proc_is_running_as_admin_user();
|
||||
|
||||
void proc_terminate_current_process(uint32_t exit_code);
|
||||
Reference in New Issue
Block a user