    # File lib/chef/win32/security.rb, line 258
          def self.lookup_account_name(name, system_name = nil)
            # Figure out how big the buffers need to be
            sid_size = FFI::Buffer.new(:long).write_long(0)
            referenced_domain_name_size = FFI::Buffer.new(:long).write_long(0)
            system_name = system_name.to_wstring if system_name
            if LookupAccountNameW(system_name, name.to_wstring, nil, sid_size, nil, referenced_domain_name_size, nil)
              raise "Expected ERROR_INSUFFICIENT_BUFFER from LookupAccountName, and got no error!"
            elsif Chef::ReservedNames::Win32::Error.get_last_error != ERROR_INSUFFICIENT_BUFFER
              Chef::ReservedNames::Win32::Error.raise!
            end

            sid = FFI::MemoryPointer.new :char, sid_size.read_long
            referenced_domain_name = FFI::MemoryPointer.new :char, (referenced_domain_name_size.read_long*2)
            use = FFI::Buffer.new(:long).write_long(0)
            unless LookupAccountNameW(system_name, name.to_wstring, sid, sid_size, referenced_domain_name, referenced_domain_name_size, use)
              Chef::ReservedNames::Win32::Error.raise!
            end

            [ referenced_domain_name.read_wstring(referenced_domain_name_size.read_long), SID.new(sid), use.read_long ]
          end