Win32API::File v0.08 -- Low-level access to Win32 API calls for files.

New since v0.07:

        GetHandleInformation    SetHandleInformation
        HANDLE_FLAG_INHERIT     HANDLE_FLAG_PROTECT_FROM_CLOSE
        fileConstant            fileLastError

Low-level and full-power access to the following routines are provided:

        CloseHandle             CopyFile                CreateFile
        DefineDosDevice         DeleteFile              DeviceIoControl
        GetDriveType            GetFileType             GetHandleInformation
        GetLogicalDrives        GetLogicalDriveStrings  GetVolumeInformation
        IsRecognizedPartition   IsContainerPartition    MoveFile
        MoveFileEx              QueryDosDevice          ReadFile
        SetFilePointer          SetErrorMode            SetHandleInformation
        WriteFile

Plus the Unicode versions:

        CopyFileW               CreateFileW             DefineDosDeviceW
        DeleteFileW             GetDriveTypeW           GetLogicalDriveStringsW
        GetVolumeInformationW   MoveFileW               MoveFileExW
        QueryDosDeviceW

Full conversion between Win32-native file handles and Perl file handles is also supported. Access to the following C run-time library routines [or at least the Perl run-time library wrappers for them] is provided:

        getosfhandle or win32_get_osfhandle   as FdGetOsFHandle               
        openosfhandle or win32_open_osfhandle as OsFHandleOpenFd              

The following Perl-friendly wrappers and helper functions are also provided:

        OsFHandleOpen           GetOsFHandle            attrLetsToBits
        createFile              fileConstant            fileLastError
        getLogicalDrives

Plus the following constants:

        CREATE_ALWAYS           CREATE_NEW              FILE_BEGIN
        FILE_CURRENT            FILE_END                INVALID_HANDLE_VALUE
        OPEN_ALWAYS             OPEN_EXISTING           TRUNCATE_EXISTING

        DDD_EXACT_MATCH_ON_REMOVE                       DDD_RAW_TARGET_PATH
        DDD_REMOVE_DEFINITION

        DRIVE_UNKNOWN           DRIVE_NO_ROOT_DIR       DRIVE_REMOVABLE
        DRIVE_FIXED             DRIVE_REMOTE            DRIVE_CDROM
        DRIVE_RAMDISK

        FILE_READ_DATA                  FILE_LIST_DIRECTORY
        FILE_WRITE_DATA                 FILE_ADD_FILE
        FILE_APPEND_DATA                FILE_ADD_SUBDIRECTORY
        FILE_CREATE_PIPE_INSTANCE       FILE_READ_EA
        FILE_WRITE_EA                   FILE_EXECUTE
        FILE_TRAVERSE                   FILE_DELETE_CHILD
        FILE_READ_ATTRIBUTES            FILE_WRITE_ATTRIBUTES
        FILE_ALL_ACCESS                 FILE_GENERIC_READ
        FILE_GENERIC_WRITE              FILE_GENERIC_EXECUTE

        FILE_ATTRIBUTE_ARCHIVE          FILE_ATTRIBUTE_COMPRESSED
        FILE_ATTRIBUTE_HIDDEN           FILE_ATTRIBUTE_NORMAL
        FILE_ATTRIBUTE_OFFLINE          FILE_ATTRIBUTE_READONLY
        FILE_ATTRIBUTE_SYSTEM           FILE_ATTRIBUTE_TEMPORARY

        FILE_FLAG_BACKUP_SEMANTICS      FILE_FLAG_DELETE_ON_CLOSE
        FILE_FLAG_NO_BUFFERING          FILE_FLAG_OVERLAPPED
        FILE_FLAG_POSIX_SEMANTICS       FILE_FLAG_RANDOM_ACCESS
        FILE_FLAG_SEQUENTIAL_SCAN       FILE_FLAG_WRITE_THROUGH

        FILE_SHARE_DELETE       FILE_SHARE_READ         FILE_SHARE_WRITE

        FILE_TYPE_CHAR          FILE_TYPE_DISK          FILE_TYPE_PIPE
        FILE_TYPE_UNKNOWN

        FS_CASE_IS_PRESERVED            FS_CASE_SENSITIVE
        FS_UNICODE_STORED_ON_DISK       FS_PERSISTENT_ACLS 
        FS_FILE_COMPRESSION             FS_VOL_IS_COMPRESSED

        HANDLE_FLAG_INHERIT             HANDLE_FLAG_PROTECT_FROM_CLOSE

        IOCTL_STORAGE_CHECK_VERIFY      IOCTL_STORAGE_MEDIA_REMOVAL
        IOCTL_STORAGE_EJECT_MEDIA       IOCTL_STORAGE_LOAD_MEDIA
        IOCTL_STORAGE_RESERVE           IOCTL_STORAGE_RELEASE
        IOCTL_STORAGE_FIND_NEW_DEVICES  IOCTL_STORAGE_GET_MEDIA_TYPES

        IOCTL_DISK_GET_DRIVE_GEOMETRY   IOCTL_DISK_GET_PARTITION_INFO
        IOCTL_DISK_SET_PARTITION_INFO   IOCTL_DISK_GET_DRIVE_LAYOUT
        IOCTL_DISK_SET_DRIVE_LAYOUT     IOCTL_DISK_VERIFY
        IOCTL_DISK_FORMAT_TRACKS        IOCTL_DISK_REASSIGN_BLOCKS
        IOCTL_DISK_PERFORMANCE          IOCTL_DISK_IS_WRITABLE
        IOCTL_DISK_LOGGING              IOCTL_DISK_FORMAT_TRACKS_EX
        IOCTL_DISK_HISTOGRAM_STRUCTURE  IOCTL_DISK_HISTOGRAM_DATA
        IOCTL_DISK_HISTOGRAM_RESET      IOCTL_DISK_REQUEST_STRUCTURE
        IOCTL_DISK_REQUEST_DATA

        GENERIC_ALL                     GENERIC_EXECUTE
        GENERIC_READ                    GENERIC_WRITE

        Unknown                 F5_1Pt2_512             F3_1Pt44_512
        F3_2Pt88_512            F3_20Pt8_512            F3_720_512
        F5_360_512              F5_320_512              F5_320_1024
        F5_180_512              F5_160_512              RemovableMedia
        FixedMedia              F3_120M_512

        MOVEFILE_COPY_ALLOWED           MOVEFILE_DELAY_UNTIL_REBOOT
        MOVEFILE_REPLACE_EXISTING       MOVEFILE_WRITE_THROUGH

        SECURITY_ANONYMOUS              SECURITY_CONTEXT_TRACKING
        SECURITY_DELEGATION             SECURITY_EFFECTIVE_ONLY
        SECURITY_IDENTIFICATION         SECURITY_IMPERSONATION
        SECURITY_SQOS_PRESENT

        SEM_FAILCRITICALERRORS          SEM_NOGPFAULTERRORBOX
        SEM_NOALIGNMENTFAULTEXCEPT      SEM_NOOPENFILEERRORBOX

        PARTITION_ENTRY_UNUSED          PARTITION_FAT_12
        PARTITION_XENIX_1               PARTITION_XENIX_2
        PARTITION_FAT_16                PARTITION_EXTENDED
        PARTITION_HUGE                  PARTITION_IFS
        PARTITION_FAT32                 PARTITION_FAT32_XINT13
        PARTITION_XINT13                PARTITION_XINT13_EXTENDED
        PARTITION_PREP                  PARTITION_UNIX
        VALID_NTFT                      PARTITION_NTFT

Comments, additions, and bug reports are welcomed. Please address technical questions that are not full bug reports to

http://perlmonks.org/index.pl?node=Seekers%20of%20Perl%20Wisdom

Tye McQueen, tye@metronet.com, http://www.metronet.com/~tye/.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.