metasploit-framework/lib/gemcache/ruby/1.9.1/arch/win32/windows-api-0.4.1
..
lib/windows
test
CHANGES
MANIFEST
README
Rakefile
windows-api.gemspec

README

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

== Description
   This is a wrapper for Win32::API that simplifies various idioms typically
   used by people who use Win32::API.

== Synopsis
   require 'windows/api'
   include Windows
   
   # Defaults to 'V' prototype, 'L' return type and 'kernel32' library
   GetVersion = API.new('GetVersion')
   
   # Defaults to 'L' return type and 'kernel32' library
   CloseHandle = API.new('CloseHandle', 'L')
   
   # Defaults to 'kernel32' library
   GetWindowsDirectory = API.new('GetWindowsDirectory', 'LI', 'I')
   
   # Explicitly state every argument
   GetComputerNameEx = API.new('GetComputerNameEx', 'PPP', 'I', 'kernel32')
   
   # Use long data type names
   GetUserName = API.new('GetUserName',['LPTSTR','LPDWORD'],'BOOL','advapi32')
   
   # Attributes for possible inspection
   puts GetVersion.dll_name      # 'kernel32'
   puts GetVersion.function_name # 'GetVersion'
   puts GetVersion.prototype     # ['V']
   puts GetVersion.return_type   # 'L'

   # Automatic method generation

   # This code....
   module Windows
      module Foo
         API.auto_namespace = 'Windows::Foo'
         API.auto_constant  = true
         API.auto_method    = true
         API.auto_unicode   = true
         
         API.new('GetComputerName', 'PP', 'B')
      end
   end

   # Is the same as this code...
   module Windows
      module Foo
         GetComputerName  = Win32API.new('kernel32', 'GetComputerName', 'PP', 'I')
         GetComputerNameA = Win32API.new('kernel32', 'GetComputerNameA', 'PP', 'I')
         GetComputerNameW = Win32API.new('kernel32', 'GetComputerNameW', 'PP', 'I')

         def GetComputerName(p1, p2)
            GetComputerName.call(p1, p2) != 0
         end

         def GetComputerNameA(p1, p2)
            GetComputerName.call(p1, p2) != 0
         end

         def GetComputerNameW(p1, p2)
            GetComputerName.call(p1, p2) != 0
         end
      end
   end

== Advantages over plain Win32::API
   * Automatic constant generation.
   * Automatic definition of ANSI and Unicode method wrappers, including
     special handling for boolean methods.
   * Ability to use more familiar Windows data types, e.g. DWORD.
   * Automatic handling of msvcrt vs msvcrXX via MSVCRT_DLL constant.

== More documentation
   See the RDoc documentation, which should have been automatically generated
   if you installed this as a gem.

== Future Plans
   Add an auto_private method that is true by default.
   Replace or drop this library in favor of FFI.

== Bugs
   None that I'm aware of. Please submit any bugs to the project page at
   http://www.rubyforge.org/projects/win32utils.

== Copyright
   (C) 2007-2012, Daniel J. Berger

== License
   Artistic 2.0

== Author
   Daniel Berger