diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog index 80c2da7a7..d18bd7fba 100644 --- a/winsup/w32api/ChangeLog +++ b/winsup/w32api/ChangeLog @@ -1,3 +1,53 @@ +2003-04-26 Danny Smith + + * include/winioctl.h: Clean up formatting. + (RETRIEVAL_POINTERS_BUFFER): Add fields to Extents[1] struct. + (CREATE_DISK): Add _ANONYMOUS_UNION macro. + (DISK_CACHE_INFORMATION): Likewise. + (DISK_DETECTION_INFO): Likewise. + (DISK_PARTITION_INFO): Likewise. + (PARTITION_INFORMATION_EX): Likewise. + (DRIVE_LAYOUT_INFORMATION_EX): Likewise. + +2003-04-26 Casper S. Hornstrup + + * include/winbase.h (DeleteVolumeMountPoint[AW], + FindFirstVolumeMountPoint[AW], FindNextVolumeMountPoint[AW], + FindVolumeMountPointClose, GetVolumeNameForVolumeMountPoint[AW], + GetVolumePathName[AW], GetVolumePathNamesForVolumeName[AW], + SetVolumeMountPoint[AW]): Add prototypes. + * include/winioctl.h (IOCTL_DISK_GET_PARTITION_INFO_EX, + IOCTL_DISK_SET_PARTITION_INFO_EX, + IOCTL_DISK_GET_DRIVE_LAYOUT_EX, + IOCTL_DISK_SET_DRIVE_LAYOUT_EX, IOCTL_DISK_CREATE_DISK, + IOCTL_DISK_GET_LENGTH_INFO, IOCTL_DISK_PERFORMANCE_OFF, + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, IOCTL_DISK_GROW_PARTITION, + IOCTL_DISK_GET_CACHE_INFORMATION, + IOCTL_DISK_SET_CACHE_INFORMATION, + IOCTL_DISK_DELETE_DRIVE_LAYOUT, IOCTL_DISK_UPDATE_PROPERTIES, + FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS, + FSCTL_MOVE_FILE): Define. + (CREATE_DISK_GPT, CREATE_DISK_MBR, CREATE_DISK, + DISK_CACHE_INFORMATION, + DETECTION_TYPE, DISK_INT13_INFO, DISK_EX_INT13_INFO, + DISK_DETECTION_INFO, DISK_GEOMETRY_EX, DISK_GROW_PARTITION, + DISK_PARTITION_INFO, DISKQUOTA_USER_INFORMATION, + GET_LENGTH_INFORMATION, DISK_EXTENT, VOLUME_DISK_EXTENTS, + DRIVE_LAYOUT_INFORMATION_GPT, DRIVE_LAYOUT_INFORMATION_MBR, + PARTITION_INFORMATION_MBR, PARTITION_INFORMATION_GPT, + PARTITION_INFORMATION_EX, DRIVE_LAYOUT_INFORMATION_EX, + MOVE_FILE_DATA, + RETRIEVAL_POINTERS_BUFFER, STARTING_LCN_INPUT_BUFFER, + STARTING_VCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER): Add structs + (PARTITION_STYLE, DISK_CACHE_RETENTION_PRIORITY): Add enums. + (MEDIA_TYPE): Add F3_120M_512, F3_640_512, F5_640_512, + F5_720_512, + F3_1Pt2_512, F3_1Pt23_1024, F5_1Pt23_1024, F3_128Mb_512, + F3_230Mb_512, + F8_256_128, F3_200Mb_512, F3_240M_512, and F3_32M_512. + * lib/kernel32.def (GetVolumePathNamesForVolumeName[AW]): Add + stubs. + 2003-04-16 Earnie Boyd * include/wingdi.h (DM_SPECVERSION): Define. @@ -20,7 +70,7 @@ documented typedefs for struct _NM_UPDOWN. Add defines for backward comapatibility. * include/commdlg.h (OFN_ENABLESIZING): Add define. - * include/wininet.h (IRF_*): Add issing defines. + * include/wininet.h (IRF_*): Add missing defines. 2003-04-14 Bang Jun-Young diff --git a/winsup/w32api/include/winbase.h b/winsup/w32api/include/winbase.h index 483800f35..141c8f1b8 100644 --- a/winsup/w32api/include/winbase.h +++ b/winsup/w32api/include/winbase.h @@ -1070,6 +1070,10 @@ void WINAPI DeleteCriticalSection(PCRITICAL_SECTION); void WINAPI DeleteFiber(PVOID); BOOL WINAPI DeleteFileA(LPCSTR); BOOL WINAPI DeleteFileW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI DeleteVolumeMountPointA(LPCSTR); +BOOL WINAPI DeleteVolumeMountPointW(LPCWSTR); +#endif BOOL WINAPI DeregisterEventSource(HANDLE); BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED); @@ -1120,6 +1124,8 @@ BOOL WINAPI FindFirstFreeAce(PACL,PVOID*); #if (_WIN32_WINNT >= 0x0500) HANDLE WINAPI FindFirstVolumeA(LPCSTR,DWORD); HANDLE WINAPI FindFirstVolumeW(LPCWSTR,DWORD); +HANDLE WINAPI FindFirstVolumeMountPointA(LPSTR,LPSTR,DWORD); +HANDLE WINAPI FindFirstVolumeMountPointW(LPWSTR,LPWSTR,DWORD); #endif BOOL WINAPI FindNextChangeNotification(HANDLE); BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA); @@ -1127,7 +1133,10 @@ BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW); #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI FindNextVolumeA(HANDLE,LPCSTR,DWORD); BOOL WINAPI FindNextVolumeW(HANDLE,LPWSTR,DWORD); +BOOL WINAPI FindNextVolumeMountPointA(HANDLE,LPSTR,DWORD); +BOOL WINAPI FindNextVolumeMountPointW(HANDLE,LPWSTR,DWORD); BOOL WINAPI FindVolumeClose(HANDLE); +BOOL WINAPI FindVolumeMountPointClose(HANDLE); #endif HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR); HRSRC WINAPI FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR); @@ -1300,6 +1309,14 @@ BOOL WINAPI GetVersionExA(LPOSVERSIONINFOA); BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW); BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD); BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetVolumeNameForVolumeMountPointA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI GetVolumeNameForVolumeMountPointW(LPCWSTR,LPWSTR,DWORD); +BOOL WINAPI GetVolumePathNameA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD); +BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD); +BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD); +#endif UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT); UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT); DWORD WINAPI GetWindowThreadProcessId(HWND,PDWORD); @@ -1568,6 +1585,10 @@ LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCE BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD); BOOL WINAPI SetVolumeLabelA(LPCSTR,LPCSTR); BOOL WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI SetVolumeMountPointA(LPCSTR,LPCSTR); +BOOL WINAPI SetVolumeMountPointW(LPCWSTR,LPCWSTR); +#endif BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL); BOOL WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL); DWORD WINAPI SizeofResource(HINSTANCE,HRSRC); @@ -1684,6 +1705,9 @@ typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define CreateWaitableTimer CreateWaitableTimerW #define DefineDosDevice DefineDosDeviceW #define DeleteFile DeleteFileW +#if (_WIN32_WINNT >= 0x0500) +#define DeleteVolumeMountPoint DeleteVolumeMountPointW +#endif #define EncryptFile EncryptFileW #define EndUpdateResource EndUpdateResourceW #define EnumResourceLanguages EnumResourceLanguagesW @@ -1698,10 +1722,12 @@ typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define FindFirstFileEx FindFirstFileExW #if (_WIN32_WINNT >= 0x0500) #define FindFirstVolume FindFirstVolumeW +#define FindFirstVolumeMountPoint FindFirstVolumeMountPointW #endif #define FindNextFile FindNextFileW #if (_WIN32_WINNT >= 0x0500) #define FindNextVolume FindNextVolumeW +#define FindNextVolumeMountPoint FindNextVolumeMountPointW #endif #define FindResource FindResourceW #define FindResourceEx FindResourceExW @@ -1744,6 +1770,9 @@ typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define GetUserName GetUserNameW #define GetVersionEx GetVersionExW #define GetVolumeInformation GetVolumeInformationW +#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointW +#define GetVolumePathName GetVolumePathNameW +#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW #define GetWindowsDirectory GetWindowsDirectoryW #define GlobalAddAtom GlobalAddAtomW #define GlobalFindAtom GlobalFindAtomW @@ -1790,6 +1819,7 @@ typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define SetFileAttributes SetFileAttributesW #define SetFileSecurity SetFileSecurityW #define SetVolumeLabel SetVolumeLabelW +#define SetVolumeMountPoint SetVolumeMountPointW #define UpdateResource UpdateResourceW #define VerifyVersionInfo VerifyVersionInfoW #define WaitNamedPipe WaitNamedPipeW @@ -1831,6 +1861,9 @@ typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define CreateWaitableTimer CreateWaitableTimerA #define DefineDosDevice DefineDosDeviceA #define DeleteFile DeleteFileA +#if (_WIN32_WINNT >= 0x0500) +#define DeleteVolumeMountPoint DeleteVolumeMountPointA +#endif #define EncryptFile EncryptFileA #define EndUpdateResource EndUpdateResourceA #define EnumResourceLanguages EnumResourceLanguagesA @@ -1845,10 +1878,12 @@ typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define FindFirstFileEx FindFirstFileExA #if (_WIN32_WINNT >= 0x0500) #define FindFirstVolume FindFirstVolumeA +#define FindFirstVolumeMountPoint FindFirstVolumeMountPointA #endif #define FindNextFile FindNextFileA #if (_WIN32_WINNT >= 0x0500) #define FindNextVolume FindNextVolumeA +#define FindNextVolumeMountPoint FindNextVolumeMountPointA #endif #define FindResource FindResourceA #define FindResourceEx FindResourceExA @@ -1890,6 +1925,9 @@ typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define GetUserName GetUserNameA #define GetVersionEx GetVersionExA #define GetVolumeInformation GetVolumeInformationA +#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA +#define GetVolumePathName GetVolumePathNameA +#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA #define GetWindowsDirectory GetWindowsDirectoryA #define GlobalAddAtom GlobalAddAtomA #define GlobalFindAtom GlobalFindAtomA @@ -1936,6 +1974,7 @@ typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #define SetFileAttributes SetFileAttributesA #define SetFileSecurity SetFileSecurityA #define SetVolumeLabel SetVolumeLabelA +#define SetVolumeMountPoint SetVolumeMountPointA #define UpdateResource UpdateResourceA #define VerifyVersionInfo VerifyVersionInfoA #define WaitNamedPipe WaitNamedPipeA diff --git a/winsup/w32api/include/winioctl.h b/winsup/w32api/include/winioctl.h index 7d988490b..ed1a47155 100644 --- a/winsup/w32api/include/winioctl.h +++ b/winsup/w32api/include/winioctl.h @@ -47,6 +47,19 @@ extern "C" { #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x13,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x14,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x15,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x16,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x17,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x18,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x28,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x34,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x35,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x36,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x40,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS) #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS) #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS) @@ -66,6 +79,9 @@ extern "C" { #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA) #define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA) #define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS) #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) @@ -175,28 +191,138 @@ typedef struct _BIN_RESULTS { DWORD NumberOfBins; BIN_COUNT BinCounts[1]; } BIN_RESULTS,*PBIN_RESULTS; +typedef enum _PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} PARTITION_STYLE; +typedef struct { + GUID DiskId; + DWORD MaxPartitionCount; +} CREATE_DISK_GPT,*PCREATE_DISK_GPT; +typedef struct { + DWORD Signature; +} CREATE_DISK_MBR,*PCREATE_DISK_MBR; +typedef struct { + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + }; +} CREATE_DISK,*PCREATE_DISK; +typedef enum { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} DISK_CACHE_RETENTION_PRIORITY; +typedef struct _DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + _ANONYMOUS_UNION union { + struct { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } ScalarPrefetch; + struct { + WORD Minimum; + WORD Maximum; + } BlockPrefetch; + }; +} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; +typedef enum _DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} DETECTION_TYPE; +typedef struct _DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; +} DISK_INT13_INFO,*PDISK_INT13_INFO; +typedef struct _DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; +typedef struct _DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; + }; + }; +} DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; typedef enum _MEDIA_TYPE { - 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 -} MEDIA_TYPE, *PMEDIA_TYPE ; + 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, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 +} MEDIA_TYPE,*PMEDIA_TYPE; typedef struct _DISK_GEOMETRY { - LARGE_INTEGER Cylinders; - MEDIA_TYPE MediaType; - DWORD TracksPerCylinder; - DWORD SectorsPerTrack; - DWORD BytesPerSector; -} DISK_GEOMETRY, *PDISK_GEOMETRY; + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} DISK_GEOMETRY,*PDISK_GEOMETRY; +typedef struct _DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE Data[1]; +} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; +typedef struct _DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; +typedef struct _DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + struct { + DWORD Signature; + } Mbr; + struct { + GUID DiskId; + } Gpt; + }; +} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; typedef struct _DISK_PERFORMANCE { LARGE_INTEGER BytesRead; LARGE_INTEGER BytesWritten; @@ -207,88 +333,171 @@ typedef struct _DISK_PERFORMANCE { DWORD QueueDepth; } DISK_PERFORMANCE, *PDISK_PERFORMANCE; typedef struct _DISK_RECORD { - LARGE_INTEGER ByteOffset; - LARGE_INTEGER StartTime; - LARGE_INTEGER EndTime; - PVOID VirtualAddress; - DWORD NumberOfBytes; - BYTE DeviceNumber; - BOOLEAN ReadRequest; + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; } DISK_RECORD,*PDISK_RECORD; typedef struct _DISK_LOGGING { - BYTE Function; - PVOID BufferAddress; - DWORD BufferSize; + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; } DISK_LOGGING,*PDISK_LOGGING; +typedef struct DiskQuotaUserInformation { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} DISKQUOTA_USER_INFORMATION,*PDISKQUOTA_USER_INFORMATION; typedef struct _FORMAT_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; } FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; typedef struct _FORMAT_EX_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; - WORD FormatGapLength; - WORD SectorsPerTrack; - WORD SectorNumber[1]; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD SectorNumber[1]; } FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; +typedef struct { + LARGE_INTEGER Length; +} GET_LENGTH_INFORMATION; typedef struct _HISTOGRAM_BUCKET { - DWORD Reads; - DWORD Writes; + DWORD Reads; + DWORD Writes; } HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; typedef struct _DISK_HISTOGRAM { - LARGE_INTEGER DiskSize; - LARGE_INTEGER Start; - LARGE_INTEGER End; - LARGE_INTEGER Average; - LARGE_INTEGER AverageRead; - LARGE_INTEGER AverageWrite; - DWORD Granularity; - DWORD Size; - DWORD ReadCount; - DWORD WriteCount; - PHISTOGRAM_BUCKET Histogram; + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; } DISK_HISTOGRAM,*PDISK_HISTOGRAM; +typedef struct _DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} DISK_EXTENT,*PDISK_EXTENT; +typedef struct _VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT Extents[1]; +} VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; typedef struct _PARTITION_INFORMATION { - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD HiddenSectors; - DWORD PartitionNumber; - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - BOOLEAN RewritePartition; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; } PARTITION_INFORMATION,*PPARTITION_INFORMATION; typedef struct _DRIVE_LAYOUT_INFORMATION { - DWORD PartitionCount; - DWORD Signature; - PARTITION_INFORMATION PartitionEntry[1]; + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION PartitionEntry[1]; } DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; +typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} PARTITION_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR Name[36]; +} PARTITION_INFORMATION_GPT; +typedef struct _PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + _ANONYMOUS_UNION union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + }; +} PARTITION_INFORMATION_EX; +typedef struct _DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + _ANONYMOUS_UNION union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + }; + PARTITION_INFORMATION_EX PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; +typedef struct { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} MOVE_FILE_DATA,*PMOVE_FILE_DATA; typedef struct _PERF_BIN { - DWORD NumberOfBins; - DWORD TypeOfBin; - BIN_RANGE BinsRanges[1]; + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE BinsRanges[1]; } PERF_BIN,*PPERF_BIN; typedef struct _PREVENT_MEDIA_REMOVAL { - BOOLEAN PreventMediaRemoval; + BOOLEAN PreventMediaRemoval; } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; +typedef struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; typedef struct _REASSIGN_BLOCKS { - WORD Reserved; - WORD Count; - DWORD BlockNumber[1]; + WORD Reserved; + WORD Count; + DWORD BlockNumber[1]; } REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; typedef struct _SET_PARTITION_INFORMATION { - BYTE PartitionType; + BYTE PartitionType; } SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; +} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; +typedef struct { + LARGE_INTEGER StartingVcn; +} STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; typedef struct _VERIFY_INFORMATION { - LARGE_INTEGER StartingOffset; - DWORD Length; + LARGE_INTEGER StartingOffset; + DWORD Length; } VERIFY_INFORMATION,*PVERIFY_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE Buffer[1]; +} VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; #define IsRecognizedPartition(t)\ (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ diff --git a/winsup/w32api/lib/kernel32.def b/winsup/w32api/lib/kernel32.def index ad375bd28..d014c9046 100644 --- a/winsup/w32api/lib/kernel32.def +++ b/winsup/w32api/lib/kernel32.def @@ -390,6 +390,8 @@ GetVolumeNameForVolumeMountPointA@12 GetVolumeNameForVolumeMountPointW@12 GetVolumePathNameA@12 GetVolumePathNameW@12 +GetVolumePathNamesForVolumeNameA@16 +GetVolumePathNamesForVolumeNameW@16 GetWindowsDirectoryA@8 GetWindowsDirectoryW@8 GlobalAddAtomA@4