module Process

def retrieve_environment_variables(token)

Parameters:
  • token (Integer) -- User token handle.
def retrieve_environment_variables(token)
  env_list = []
  env_pointer = FFI::MemoryPointer.new(:pointer)
  create_environment_block(env_pointer, token)
  str_ptr = env_pointer.read_pointer
  offset = 0
  loop do
    new_str_pointer = str_ptr + offset
    break if new_str_pointer.read_string(2) == ENVIRONMENT_BLOCK_ENDS
    environment = new_str_pointer.read_wstring
    env_list << environment
    offset = offset + environment.length * 2 + 2
  end
  # To free the buffer when we have finished with the environment block
  destroy_environment_block(str_ptr)
  env_list
end