JNA API 3.3.0

## com.sun.jna.platform.win32
Class WinBase

    java.lang.Object
      com.sun.jna.platform.win32.WinBase

    public abstract class WinBase

extends Object

Ported from Winbase.h. Microsoft Windows SDK 6.0A.

Author:
  dblock[at]dblock.org

Nested Class Summary
`static class` | `WinBase.FILETIME` The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).
`static class` | `WinBase.MEMORYSTATUSEX` Contains information about the current state of both physical and virtual memory, including extended memory.
`static class` | `WinBase.OVERLAPPED` The OVERLAPPED structure contains information used in asynchronous (or overlapped) input and output (I/O).
`static class` | `WinBase.PROCESS_INFORMATION` Contains information about a newly created process and its primary thread.
`static class` | `WinBase.SECURITY_ATTRIBUTES` The SECURITY_ATTRIBUTES structure contains the security descriptor for an object and specifies whether the handle retrieved by specifying this structure is inheritable.
`static class` | `WinBase.STARTUPINFO` Specifies the window station, desktop, standard handles, and appearance of the main window for a process at creation time.
`static class` | `WinBase.SYSTEM_INFO` Contains information about the current computer system.
`static class` | `WinBase.SYSTEMTIME` Specifies a date and time, using individual members for the month, day, year, weekday, hour, minute, second, and millisecond.

Field Summary
`static int` | `CREATE_BREAKAWAY_FROM_JOB`
`static int` | `CREATE_DEFAULT_ERROR_MODE`
`static int` | `CREATE_FORCEDOS`
`static int` | `CREATE_NEW_CONSOLE`
`static int` | `CREATE_NEW_PROCESS_GROUP`
`static int` | `CREATE_NO_WINDOW`
`static int` | `CREATE_PRESERVE_CODE_AUTHZ_LEVEL`
`static int` | `CREATE_PROTECTED_PROCESS`
`static int` | `CREATE_SEPARATE_WOW_VDM`
`static int` | `CREATE_SHARED_WOW_VDM`
`static int` | `CREATE_SUSPENDED`
`static int` | `CREATE_UNICODE_ENVIRONMENT`
`static int` | `DEBUG_ONLY_THIS_PROCESS`
`static int` | `DEBUG_PROCESS`
`static int` | `DETACHED_PROCESS`
`static int` | `DRIVE_CDROM` The drive is a CD-ROM drive.
`static int` | `DRIVE_FIXED` The drive is a type that cannot be removed, for example, a fixed hard drive.
`static int` | `DRIVE_NO_ROOT_DIR` The root path is invalid, for example, no volume is mounted at the path.
`static int` | `DRIVE_RAMDISK` The drive is a RAM disk.
`static int` | `DRIVE_REMOTE` The drive is a remote (network) drive.
`static int` | `DRIVE_REMOVABLE` The drive is a type that has removable media, for example, a floppy drive or removable hard disk.
`static int` | `DRIVE_UNKNOWN` The drive type cannot be determined.
`static int` | `EXTENDED_STARTUPINFO_PRESENT`
`static int` | `FORMAT_MESSAGE_ALLOCATE_BUFFER` The lpBuffer parameter is a pointer to a PVOID pointer, and that the nSize parameter specifies the minimum number of TCHARs to allocate for an output message buffer.
`static int` | `FORMAT_MESSAGE_ARGUMENT_ARRAY` The Arguments parameter is not a va_list structure, but is a pointer to an array of values that represent the arguments.
`static int` | `FORMAT_MESSAGE_FROM_HMODULE` The lpSource parameter is a module handle containing the message-table resource(s) to search.
`static int` | `FORMAT_MESSAGE_FROM_STRING` The lpSource parameter is a pointer to a null-terminated message definition.
`static int` | `FORMAT_MESSAGE_FROM_SYSTEM` The function should search the system message-table resource(s) for the requested message.
`static int` | `FORMAT_MESSAGE_IGNORE_INSERTS` Insert sequences in the message definition are to be ignored and passed through to the output buffer unchanged.
`static int` | `HANDLE_FLAG_INHERIT` If this flag is set, a child process created with the bInheritHandles parameter of CreateProcess set to TRUE will inherit the object handle.
`static int` | `HANDLE_FLAG_PROTECT_FROM_CLOSE` If this flag is set, calling the `Kernel32.CloseHandle(com.sun.jna.platform.win32.WinNT.HANDLE)` function will not close the object handle.
`static int` | `INFINITE`
`static int` | `INHERIT_PARENT_AFFINITY`
`static int` | `INVALID_FILE_ATTRIBUTES`
`static int` | `INVALID_FILE_SIZE`
`static WinNT.HANDLE` | `INVALID_HANDLE_VALUE` Constant value representing an invalid HANDLE.
`static int` | `INVALID_SET_FILE_POINTER`
`static int` | `LHND`
`static int` | `LMEM_DISCARDABLE`
`static int` | `LMEM_DISCARDED`
`static int` | `LMEM_FIXED`
`static int` | `LMEM_INVALID_HANDLE`
`static int` | `LMEM_LOCKCOUNT`
`static int` | `LMEM_MODIFY`
`static int` | `LMEM_MOVEABLE`
`static int` | `LMEM_NOCOMPACT`
`static int` | `LMEM_NODISCARD`
`static int` | `LMEM_VALID_FLAGS`
`static int` | `LMEM_ZEROINIT`
`static int` | `LOGON32_LOGON_BATCH` This logon type is intended for batch servers, where processes may be executing on behalf of a user without their direct intervention.
`static int` | `LOGON32_LOGON_INTERACTIVE` This logon type is intended for users who will be interactively using the computer, such as a user being logged on by a terminal server, remote shell, or similar process.
`static int` | `LOGON32_LOGON_NETWORK` This logon type is intended for high performance servers to authenticate plaintext passwords.
`static int` | `LOGON32_LOGON_NETWORK_CLEARTEXT` This logon type preserves the name and password in the authentication package, which allows the server to make connections to other network servers while impersonating the client.
`static int` | `LOGON32_LOGON_NEW_CREDENTIALS` This logon type allows the caller to clone its current token and specify new credentials for outbound connections.
`static int` | `LOGON32_LOGON_SERVICE` Indicates a service-type logon.
`static int` | `LOGON32_LOGON_UNLOCK` This logon type is for GINA DLLs that log on users who will be interactively using the computer.
`static int` | `LOGON32_PROVIDER_DEFAULT` Use the standard logon provider for the system.
`static int` | `LOGON32_PROVIDER_WINNT35` Use the Windows NT 3.5 logon provider.
`static int` | `LOGON32_PROVIDER_WINNT40` Use the NTLM logon provider.
`static int` | `LOGON32_PROVIDER_WINNT50` Use the negotiate logon provider.
`static int` | `LPTR`
`static int` | `MOVEFILE_COPY_ALLOWED` If the file is to be moved to a different volume, the function simulates the move by using the CopyFile and DeleteFile functions.
`static int` | `MOVEFILE_CREATE_HARDLINK` Reserved for future use.
`static int` | `MOVEFILE_DELAY_UNTIL_REBOOT` The system does not move the file until the operating system is restarted.
`static int` | `MOVEFILE_FAIL_IF_NOT_TRACKABLE` The function fails if the source file is a link source, but the file cannot be tracked after the move.
`static int` | `MOVEFILE_REPLACE_EXISTING` If a file named lpNewFileName exists, the function replaces its contents with the contents of the lpExistingFileName file, provided that security requirements regarding access control lists (ACLs) are met.
`static int` | `MOVEFILE_WRITE_THROUGH` The function does not return until the file is actually moved on the disk.
`static int` | `STARTF_FORCEOFFFEEDBACK`
`static int` | `STARTF_FORCEONFEEDBACK`
`static int` | `STARTF_RUNFULLSCREEN`
`static int` | `STARTF_USECOUNTCHARS`
`static int` | `STARTF_USEFILLATTRIBUTE`
`static int` | `STARTF_USEPOSITION`
`static int` | `STARTF_USESHOWWINDOW`
`static int` | `STARTF_USESIZE`
`static int` | `STARTF_USESTDHANDLES`
`static int` | `STILL_ACTIVE` Return code for a process still active.
`static int` | `WAIT_ABANDONED`
`static int` | `WAIT_ABANDONED_0`
`static int` | `WAIT_FAILED`
`static int` | `WAIT_OBJECT_0`

Constructor Summary
`WinBase()`

Method Summary
`static int` | `MAX_COMPUTERNAME_LENGTH()` Maximum computer name length.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### INVALID_HANDLE_VALUE

    public static WinNT.HANDLE INVALID_HANDLE_VALUE

  Constant value representing an invalid HANDLE.

### WAIT_FAILED

    public static final int WAIT_FAILED

See Also:
  Constant Field Values

### WAIT_OBJECT_0

    public static final int WAIT_OBJECT_0

See Also:
  Constant Field Values

### WAIT_ABANDONED

    public static final int WAIT_ABANDONED

See Also:
  Constant Field Values

### WAIT_ABANDONED_0

    public static final int WAIT_ABANDONED_0

See Also:
  Constant Field Values

### LOGON32_LOGON_INTERACTIVE

    public static final int LOGON32_LOGON_INTERACTIVE

  This logon type is intended for users who will be interactively using the computer, such as a user being logged on by a terminal server, remote shell, or similar process. This logon type has the additional expense of caching logon information for disconnected operations; therefore, it is inappropriate for some client/server applications, such as a mail server.

  See Also:
    Constant Field Values

### LOGON32_LOGON_NETWORK

    public static final int LOGON32_LOGON_NETWORK

  This logon type is intended for high performance servers to authenticate plaintext passwords. The LogonUser function does not cache credentials for this logon type.

  See Also:
    Constant Field Values

### LOGON32_LOGON_BATCH

    public static final int LOGON32_LOGON_BATCH

  This logon type is intended for batch servers, where processes may be executing on behalf of a user without their direct intervention. This type is also for higher performance servers that process many plaintext authentication attempts at a time, such as mail or Web servers. The LogonUser function does not cache credentials for this logon type.

  See Also:
    Constant Field Values

### LOGON32_LOGON_SERVICE

    public static final int LOGON32_LOGON_SERVICE

  Indicates a service-type logon. The account provided must have the service privilege enabled.

  See Also:
    Constant Field Values

### LOGON32_LOGON_UNLOCK

    public static final int LOGON32_LOGON_UNLOCK

  This logon type is for GINA DLLs that log on users who will be interactively using the computer. This logon type can generate a unique audit record that shows when the workstation was unlocked.

  See Also:
    Constant Field Values

### LOGON32_LOGON_NETWORK_CLEARTEXT

    public static final int LOGON32_LOGON_NETWORK_CLEARTEXT

  This logon type preserves the name and password in the authentication package, which allows the server to make connections to other network servers while impersonating the client. A server can accept plaintext credentials from a client, call LogonUser, verify that the user can access the system across the network, and still communicate with other servers.

  See Also:
    Constant Field Values

### LOGON32_LOGON_NEW_CREDENTIALS

    public static final int LOGON32_LOGON_NEW_CREDENTIALS

  This logon type allows the caller to clone its current token and specify new credentials for outbound connections. The new logon session has the same local identifier but uses different credentials for other network connections. This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider.

  See Also:
    Constant Field Values

### LOGON32_PROVIDER_DEFAULT

    public static final int LOGON32_PROVIDER_DEFAULT

  Use the standard logon provider for the system. The default security provider is negotiate, unless you pass NULL for the domain name and the user name is not in UPN format. In this case, the default provider is NTLM.

  See Also:
    Constant Field Values

### LOGON32_PROVIDER_WINNT35

    public static final int LOGON32_PROVIDER_WINNT35

  Use the Windows NT 3.5 logon provider.

  See Also:
    Constant Field Values

### LOGON32_PROVIDER_WINNT40

    public static final int LOGON32_PROVIDER_WINNT40

  Use the NTLM logon provider.

  See Also:
    Constant Field Values

### LOGON32_PROVIDER_WINNT50

    public static final int LOGON32_PROVIDER_WINNT50

  Use the negotiate logon provider.

  See Also:
    Constant Field Values

### HANDLE_FLAG_INHERIT

    public static final int HANDLE_FLAG_INHERIT

  If this flag is set, a child process created with the bInheritHandles parameter of CreateProcess set to TRUE will inherit the object handle.

  See Also:
    Constant Field Values

### HANDLE_FLAG_PROTECT_FROM_CLOSE

    public static final int HANDLE_FLAG_PROTECT_FROM_CLOSE

  If this flag is set, calling the `Kernel32.CloseHandle(com.sun.jna.platform.win32.WinNT.HANDLE)` function will not close the object handle.

  See Also:
    Constant Field Values

### STARTF_USESHOWWINDOW

    public static final int STARTF_USESHOWWINDOW

See Also:
  Constant Field Values

### STARTF_USESIZE

    public static final int STARTF_USESIZE

See Also:
  Constant Field Values

### STARTF_USEPOSITION

    public static final int STARTF_USEPOSITION

See Also:
  Constant Field Values

### STARTF_USECOUNTCHARS

    public static final int STARTF_USECOUNTCHARS

See Also:
  Constant Field Values

### STARTF_USEFILLATTRIBUTE

    public static final int STARTF_USEFILLATTRIBUTE

See Also:
  Constant Field Values

### STARTF_RUNFULLSCREEN

    public static final int STARTF_RUNFULLSCREEN

See Also:
  Constant Field Values

### STARTF_FORCEONFEEDBACK

    public static final int STARTF_FORCEONFEEDBACK

See Also:
  Constant Field Values

### STARTF_FORCEOFFFEEDBACK

    public static final int STARTF_FORCEOFFFEEDBACK

See Also:
  Constant Field Values

### STARTF_USESTDHANDLES

    public static final int STARTF_USESTDHANDLES

See Also:
  Constant Field Values

### DEBUG_PROCESS

    public static final int DEBUG_PROCESS

See Also:
  Constant Field Values

### DEBUG_ONLY_THIS_PROCESS

    public static final int DEBUG_ONLY_THIS_PROCESS

See Also:
  Constant Field Values

### CREATE_SUSPENDED

    public static final int CREATE_SUSPENDED

See Also:
  Constant Field Values

### DETACHED_PROCESS

    public static final int DETACHED_PROCESS

See Also:
  Constant Field Values

### CREATE_NEW_CONSOLE

    public static final int CREATE_NEW_CONSOLE

See Also:
  Constant Field Values

### CREATE_NEW_PROCESS_GROUP

    public static final int CREATE_NEW_PROCESS_GROUP

See Also:
  Constant Field Values

### CREATE_UNICODE_ENVIRONMENT

    public static final int CREATE_UNICODE_ENVIRONMENT

See Also:
  Constant Field Values

### CREATE_SEPARATE_WOW_VDM

    public static final int CREATE_SEPARATE_WOW_VDM

See Also:
  Constant Field Values

### CREATE_SHARED_WOW_VDM

    public static final int CREATE_SHARED_WOW_VDM

See Also:
  Constant Field Values

### CREATE_FORCEDOS

    public static final int CREATE_FORCEDOS

See Also:
  Constant Field Values

### INHERIT_PARENT_AFFINITY

    public static final int INHERIT_PARENT_AFFINITY

See Also:
  Constant Field Values

### CREATE_PROTECTED_PROCESS

    public static final int CREATE_PROTECTED_PROCESS

See Also:
  Constant Field Values

### EXTENDED_STARTUPINFO_PRESENT

    public static final int EXTENDED_STARTUPINFO_PRESENT

See Also:
  Constant Field Values

### CREATE_BREAKAWAY_FROM_JOB

    public static final int CREATE_BREAKAWAY_FROM_JOB

See Also:
  Constant Field Values

### CREATE_PRESERVE_CODE_AUTHZ_LEVEL

    public static final int CREATE_PRESERVE_CODE_AUTHZ_LEVEL

See Also:
  Constant Field Values

### CREATE_DEFAULT_ERROR_MODE

    public static final int CREATE_DEFAULT_ERROR_MODE

See Also:
  Constant Field Values

### CREATE_NO_WINDOW

    public static final int CREATE_NO_WINDOW

See Also:
  Constant Field Values

### INVALID_FILE_SIZE

    public static final int INVALID_FILE_SIZE

See Also:
  Constant Field Values

### INVALID_SET_FILE_POINTER

    public static final int INVALID_SET_FILE_POINTER

See Also:
  Constant Field Values

### INVALID_FILE_ATTRIBUTES

    public static final int INVALID_FILE_ATTRIBUTES

See Also:
  Constant Field Values

### STILL_ACTIVE

    public static final int STILL_ACTIVE

  Return code for a process still active.

  See Also:
    Constant Field Values

### LMEM_FIXED

    public static final int LMEM_FIXED

See Also:
  Constant Field Values

### LMEM_MOVEABLE

    public static final int LMEM_MOVEABLE

See Also:
  Constant Field Values

### LMEM_NOCOMPACT

    public static final int LMEM_NOCOMPACT

See Also:
  Constant Field Values

### LMEM_NODISCARD

    public static final int LMEM_NODISCARD

See Also:
  Constant Field Values

### LMEM_ZEROINIT

    public static final int LMEM_ZEROINIT

See Also:
  Constant Field Values

### LMEM_MODIFY

    public static final int LMEM_MODIFY

See Also:
  Constant Field Values

### LMEM_DISCARDABLE

    public static final int LMEM_DISCARDABLE

See Also:
  Constant Field Values

### LMEM_VALID_FLAGS

    public static final int LMEM_VALID_FLAGS

See Also:
  Constant Field Values

### LMEM_INVALID_HANDLE

    public static final int LMEM_INVALID_HANDLE

See Also:
  Constant Field Values

### LHND

    public static final int LHND

See Also:
  Constant Field Values

### LPTR

    public static final int LPTR

See Also:
  Constant Field Values

### LMEM_DISCARDED

    public static final int LMEM_DISCARDED

See Also:
  Constant Field Values

### LMEM_LOCKCOUNT

    public static final int LMEM_LOCKCOUNT

See Also:
  Constant Field Values

### FORMAT_MESSAGE_ALLOCATE_BUFFER

    public static final int FORMAT_MESSAGE_ALLOCATE_BUFFER

  The lpBuffer parameter is a pointer to a PVOID pointer, and that the nSize parameter specifies the minimum number of TCHARs to allocate for an output message buffer. The function allocates a buffer large enough to hold the formatted message, and places a pointer to the allocated buffer at the address specified by lpBuffer. The caller should use the LocalFree function to free the buffer when it is no longer needed.

  See Also:
    Constant Field Values

### FORMAT_MESSAGE_IGNORE_INSERTS

    public static final int FORMAT_MESSAGE_IGNORE_INSERTS

  Insert sequences in the message definition are to be ignored and passed through to the output buffer unchanged. This flag is useful for fetching a message for later formatting. If this flag is set, the Arguments parameter is ignored.

  See Also:
    Constant Field Values

### FORMAT_MESSAGE_FROM_STRING

    public static final int FORMAT_MESSAGE_FROM_STRING

  The lpSource parameter is a pointer to a null-terminated message definition. The message definition may contain insert sequences, just as the message text in a message table resource may. Cannot be used with FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM.

  See Also:
    Constant Field Values

### FORMAT_MESSAGE_FROM_HMODULE

    public static final int FORMAT_MESSAGE_FROM_HMODULE

  The lpSource parameter is a module handle containing the message-table resource(s) to search. If this lpSource handle is NULL, the current process's application image file will be searched. Cannot be used with FORMAT_MESSAGE_FROM_STRING.

  See Also:
    Constant Field Values

### FORMAT_MESSAGE_FROM_SYSTEM

    public static final int FORMAT_MESSAGE_FROM_SYSTEM

  The function should search the system message-table resource(s) for the requested message. If this flag is specified with FORMAT_MESSAGE_FROM_HMODULE, the function searches the system message table if the message is not found in the module specified by lpSource. Cannot be used with FORMAT_MESSAGE_FROM_STRING. If this flag is specified, an application can pass the result of the GetLastError function to retrieve the message text for a system-defined error.

  See Also:
    Constant Field Values

### FORMAT_MESSAGE_ARGUMENT_ARRAY

    public static final int FORMAT_MESSAGE_ARGUMENT_ARRAY

  The Arguments parameter is not a va_list structure, but is a pointer to an array of values that represent the arguments. This flag cannot be used with 64-bit argument values. If you are using 64-bit values, you must use the va_list structure.

  See Also:
    Constant Field Values

### DRIVE_UNKNOWN

    public static final int DRIVE_UNKNOWN

  The drive type cannot be determined.

  See Also:
    Constant Field Values

### DRIVE_NO_ROOT_DIR

    public static final int DRIVE_NO_ROOT_DIR

  The root path is invalid, for example, no volume is mounted at the path.

  See Also:
    Constant Field Values

### DRIVE_REMOVABLE

    public static final int DRIVE_REMOVABLE

  The drive is a type that has removable media, for example, a floppy drive or removable hard disk.

  See Also:
    Constant Field Values

### DRIVE_FIXED

    public static final int DRIVE_FIXED

  The drive is a type that cannot be removed, for example, a fixed hard drive.

  See Also:
    Constant Field Values

### DRIVE_REMOTE

    public static final int DRIVE_REMOTE

  The drive is a remote (network) drive.

  See Also:
    Constant Field Values

### DRIVE_CDROM

    public static final int DRIVE_CDROM

  The drive is a CD-ROM drive.

  See Also:
    Constant Field Values

### DRIVE_RAMDISK

    public static final int DRIVE_RAMDISK

  The drive is a RAM disk.

  See Also:
    Constant Field Values

### INFINITE

    public static final int INFINITE

See Also:
  Constant Field Values

### MOVEFILE_COPY_ALLOWED

    public static final int MOVEFILE_COPY_ALLOWED

  If the file is to be moved to a different volume, the function simulates the move by using the CopyFile and DeleteFile functions. This value cannot be used with MOVEFILE_DELAY_UNTIL_REBOOT.

  See Also:
    Constant Field Values

### MOVEFILE_CREATE_HARDLINK

    public static final int MOVEFILE_CREATE_HARDLINK

  Reserved for future use.

  See Also:
    Constant Field Values

### MOVEFILE_DELAY_UNTIL_REBOOT

    public static final int MOVEFILE_DELAY_UNTIL_REBOOT

  The system does not move the file until the operating system is restarted. The system moves the file immediately after AUTOCHK is executed, but before creating any paging files. Consequently, this parameter enables the function to delete paging files from previous startups. This value can be used only if the process is in the context of a user who belongs to the administrators group or the LocalSystem account. This value cannot be used with MOVEFILE_COPY_ALLOWED. Windows Server 2003 and Windows XP: For information about special situations where this functionality can fail, and a suggested workaround solution, see Files are not exchanged when Windows Server 2003 restarts if you use the MoveFileEx function to schedule a replacement for some files in the Help and Support Knowledge Base. Windows 2000: If you specify the MOVEFILE_DELAY_UNTIL_REBOOT flag for dwFlags, you cannot also prepend the file name that is specified by lpExistingFileName with "\\?".

  See Also:
    Constant Field Values

### MOVEFILE_FAIL_IF_NOT_TRACKABLE

    public static final int MOVEFILE_FAIL_IF_NOT_TRACKABLE

  The function fails if the source file is a link source, but the file cannot be tracked after the move. This situation can occur if the destination is a volume formatted with the FAT file system.

  See Also:
    Constant Field Values

### MOVEFILE_REPLACE_EXISTING

    public static final int MOVEFILE_REPLACE_EXISTING

  If a file named lpNewFileName exists, the function replaces its contents with the contents of the lpExistingFileName file, provided that security requirements regarding access control lists (ACLs) are met. For more information, see the Remarks section of this topic. This value cannot be used if lpNewFileName or lpExistingFileName names a directory.

  See Also:
    Constant Field Values

### MOVEFILE_WRITE_THROUGH

    public static final int MOVEFILE_WRITE_THROUGH

  The function does not return until the file is actually moved on the disk. Setting this value guarantees that a move performed as a copy and delete operation is flushed to disk before the function returns. The flush occurs at the end of the copy operation. This value has no effect if MOVEFILE_DELAY_UNTIL_REBOOT is set.

  See Also:
    Constant Field Values

Constructor Detail

### WinBase

    public WinBase()

Method Detail

### MAX_COMPUTERNAME_LENGTH

    public static int MAX_COMPUTERNAME_LENGTH()

  Maximum computer name length.

  Returns:
    15 on MAC, 31 on everything else.

JNA API 3.3.0

Copyright © 2007-2010 Timothy Wall. All Rights Reserved.