ソースを参照

hle_ipc: Add a getter for PID

Morph 5 年 前
コミット
81a5ecdb18
2 ファイル変更7 行追加2 行削除
  1. 1 1
      src/core/hle/kernel/hle_ipc.cpp
  2. 6 1
      src/core/hle/kernel/hle_ipc.h

+ 1 - 1
src/core/hle/kernel/hle_ipc.cpp

@@ -64,7 +64,7 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32
     if (command_header->enable_handle_descriptor) {
     if (command_header->enable_handle_descriptor) {
         handle_descriptor_header = rp.PopRaw<IPC::HandleDescriptorHeader>();
         handle_descriptor_header = rp.PopRaw<IPC::HandleDescriptorHeader>();
         if (handle_descriptor_header->send_current_pid) {
         if (handle_descriptor_header->send_current_pid) {
-            rp.Skip(2, false);
+            pid = rp.Pop<u64>();
         }
         }
         if (incoming) {
         if (incoming) {
             // Populate the object lists with the data in the IPC request.
             // Populate the object lists with the data in the IPC request.

+ 6 - 1
src/core/hle/kernel/hle_ipc.h

@@ -150,6 +150,10 @@ public:
         return command_header->type;
         return command_header->type;
     }
     }
 
 
+    u64 GetPID() const {
+        return pid;
+    }
+
     u32 GetDataPayloadOffset() const {
     u32 GetDataPayloadOffset() const {
         return data_payload_offset;
         return data_payload_offset;
     }
     }
@@ -305,11 +309,12 @@ private:
     std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors;
     std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors;
     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors;
     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors;
 
 
+    u32_le command{};
+    u64 pid{};
     u32 data_payload_offset{};
     u32 data_payload_offset{};
     u32 handles_offset{};
     u32 handles_offset{};
     u32 domain_offset{};
     u32 domain_offset{};
     u32 data_size{};
     u32 data_size{};
-    u32_le command{};
 
 
     std::vector<std::shared_ptr<SessionRequestHandler>> domain_request_handlers;
     std::vector<std::shared_ptr<SessionRequestHandler>> domain_request_handlers;
     bool is_thread_waiting{};
     bool is_thread_waiting{};