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))
memcpy(members, ptr, members.size)
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