summaryrefslogtreecommitdiffhomepage
path: root/src/internal
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-01-17 19:40:32 +0000
committermidipix <writeonce@midipix.org>2017-01-18 00:30:45 -0500
commit393c205aed99a73cb8ff984858f288f8cb901688 (patch)
tree0a9da201dff8413e2ea582ec01bc5075b1d9b217 /src/internal
parent034d8a34fb0c1b049bb8cb5ea52868c4c6f47d5f (diff)
downloadpemagine-393c205aed99a73cb8ff984858f288f8cb901688.tar.bz2
pemagine-393c205aed99a73cb8ff984858f288f8cb901688.tar.xz
ldso: added pe_open_physical_parent_directory().
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/pe_os.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/internal/pe_os.h b/src/internal/pe_os.h
new file mode 100644
index 0000000..f68a462
--- /dev/null
+++ b/src/internal/pe_os.h
@@ -0,0 +1,67 @@
+#ifndef PE_OS_H
+#define PE_OS_H
+
+#include <pemagine/pe_structs.h>
+
+#define OS_STATUS_INTERNAL_ERROR 0xC00000E5
+#define OS_STATUS_BAD_FILE_TYPE 0xC0000903
+#define OS_STATUS_OBJECT_NAME_NOT_FOUND 0xC0000034
+#define OS_STATUS_MORE_PROCESSING_REQUIRED 0xC0000016
+
+#define OS_SEC_SYNCHRONIZE 0x00100000
+#define OS_FILE_READ_ACCESS 0x00000001
+#define OS_FILE_READ_ATTRIBUTES 0x00000080
+
+#define OS_FILE_DIRECTORY_FILE 0x00000001
+#define OS_FILE_NON_DIRECTORY_FILE 0x00000040
+
+#define OS_FILE_SHARE_READ 0x00000001
+#define OS_FILE_SHARE_WRITE 0x00000002
+#define OS_FILE_SHARE_DELETE 0x00000004
+
+
+enum os_object_info_class {
+ OS_OBJECT_BASIC_INFORMATION = 0,
+ OS_OBJECT_NAME_INFORMATION = 1,
+ OS_OBJECT_TYPE_INFORMATION = 2,
+ OS_OBJECT_ALL_TYPES_INFORMATION = 3,
+ OS_OBJECT_HANDLE_INFORMATION = 4
+};
+
+
+struct os_oa {
+ uint32_t len;
+ void * root_dir;
+ struct pe_unicode_str * obj_name;
+ uint32_t obj_attr;
+ void * sec_desc;
+ void * sec_qos;
+};
+
+
+struct os_iosb {
+ union {
+ int32_t status;
+ void * pointer;
+ };
+ intptr_t info;
+};
+
+
+typedef int32_t __stdcall os_zw_query_object(
+ __in void * handle,
+ __in int obj_info_class,
+ __out void * obj_info,
+ __in size_t obj_info_length,
+ __out uint32_t * returned_length __optional);
+
+
+typedef int32_t __stdcall os_zw_open_file(
+ __out void ** hfile,
+ __in uint32_t desired_access,
+ __in struct os_oa * obj_attr,
+ __out struct os_iosb * io_status_block,
+ __in uint32_t share_access,
+ __in uint32_t open_options);
+
+#endif