# File lib/win32/eventlog.rb, line 92
      def initialize(source = 'Application', server = nil, file = nil)
         @source = source || 'Application' # In case of explicit nil
         @server = server
         @file   = file
         
         # Avoid Win32API segfaults
         raise TypeError unless @source.is_a?(String)
         raise TypeError unless @server.is_a?(String) if @server
         
         function = 'OpenEventLog()'
         
         if @file.nil?
            @handle = OpenEventLog(@server, @source)
         else
            @handle = OpenBackupEventLog(@server, @file)
            function = 'OpenBackupEventLog()'
         end
         
         if @handle == 0
            error = "#{function} failed: " + get_last_error
            raise Error, error
         end
         
         # Ensure the handle is closed at the end of a block
         if block_given?
            begin
               yield self
            ensure
               close
            end
         end
      end