# File lib/chef/util/windows/net_group.rb, line 48
  def local_get_members
    group_members = []
    handle = 0.chr * PTR_SIZE
    rc = ERROR_MORE_DATA

    while rc == ERROR_MORE_DATA
      ptr   = 0.chr * PTR_SIZE
      nread = 0.chr * PTR_SIZE
      total = 0.chr * PTR_SIZE

      rc = NetLocalGroupGetMembers.call(nil, @name, 1, ptr, -1,
                                        nread, total, handle)
      if (rc == NERR_Success) || (rc == ERROR_MORE_DATA)
        ptr = ptr.unpack('L')[0]
        nread = nread.unpack('i')[0]
        members = 0.chr * (nread * (PTR_SIZE * 3)) #nread * sizeof(LOCALGROUP_MEMBERS_INFO_1)
        memcpy(members, ptr, members.size)

        #3 pointer fields in LOCALGROUP_MEMBERS_INFO_1, offset 2*PTR_SIZE is lgrmi1_name
        nread.times do |i|
          offset = (i * 3) + 2
          member = lpwstr_to_s(members, offset)
          group_members << member
        end
        NetApiBufferFree(ptr)
      else
        raise ArgumentError, get_last_error(rc)
      end
    end
    group_members
  end