Guest User

Untitled

a guest
May 27th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #unsed in Chef::Util::Windows::NetUse; may come in handy later.
  2. require 'chef/util/windows'
  3.  
  4. class Chef::Util::Windows::NetUse < Chef::Util::Windows
  5. def get_all
  6. list = []
  7. handle = 0.chr * PTR_SIZE
  8. rc = ERROR_MORE_DATA
  9.  
  10. while rc == ERROR_MORE_DATA
  11. ptr = 0.chr * PTR_SIZE
  12. nread = 0.chr * PTR_SIZE
  13. total = 0.chr * PTR_SIZE
  14.  
  15. rc = NetUseEnum.call(nil, 2, ptr, -1, nread, total, handle)
  16. if (rc == NERR_Success) || (rc == ERROR_MORE_DATA)
  17. ptr = ptr.unpack('L')[0]
  18. nread = nread.unpack('i')[0]
  19. members = 0.chr * (nread * SIZEOF_USE_INFO_2)
  20. memcpy(members, ptr, members.size)
  21.  
  22. nread.times do |i|
  23. offset = i * SIZEOF_USE_INFO_2
  24. use = use_info_2_unpack(members[offset,SIZEOF_USE_INFO_2])
  25. list << use
  26. end
  27. NetApiBufferFree(ptr)
  28. else
  29. raise ArgumentError, get_last_error(rc)
  30. end
  31. end
  32. list
  33. end
  34. end
Add Comment
Please, Sign In to add comment