NtQueryVolumeInformationFile
Jürgen Schmied
juergenschmied at lycos.de
Thu May 9 04:45:51 CDT 2002
dlls/ntdll/file.c
include/winioctl.h
types and partial implementation for NtQueryVolumeInformationFile
---
juergen.schmied at debitel.net
-------------- next part --------------
Index: wine/dlls/ntdll/file.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/file.c,v
retrieving revision 1.11
diff -d -u -r1.11 file.c
--- wine/dlls/ntdll/file.c 9 Mar 2002 23:39:09 -0000 1.11
+++ wine/dlls/ntdll/file.c 7 May 2002 18:58:07 -0000
@@ -22,6 +22,7 @@
#include "ntdll_misc.h"
#include "ntddk.h"
+#include "winioctl.h"
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
@@ -252,7 +253,88 @@
IN ULONG Length,
IN FS_INFORMATION_CLASS FSInformationClass)
{
+ ULONG len = 0;
+
FIXME("(0x%08x %p %p 0x%08lx 0x%08x) stub!\n",
FileHandle, IoStatusBlock, FSInformation, Length, FSInformationClass);
+
+ switch ( FSInformationClass )
+ {
+ case FileFsVolumeInformation:
+ len = sizeof( FILE_FS_VOLUME_INFORMATION );
+ break;
+ case FileFsLabelInformation:
+ len = 0;
+ break;
+
+ case FileFsSizeInformation:
+ len = sizeof( FILE_FS_SIZE_INFORMATION );
+ break;
+
+ case FileFsDeviceInformation:
+ len = sizeof( FILE_FS_DEVICE_INFORMATION );
+ break;
+ case FileFsAttributeInformation:
+ len = sizeof( FILE_FS_ATTRIBUTE_INFORMATION );
+ break;
+
+ case FileFsControlInformation:
+ len = 0;
+ break;
+
+ case FileFsFullSizeInformation:
+ len = 0;
+ break;
+
+ case FileFsObjectIdInformation:
+ len = 0;
+ break;
+
+ case FileFsMaximumInformation:
+ len = 0;
+ break;
+ }
+
+ if (Length < len)
+ return STATUS_BUFFER_TOO_SMALL;
+
+ switch ( FSInformationClass )
+ {
+ case FileFsVolumeInformation:
+ break;
+ case FileFsLabelInformation:
+ break;
+
+ case FileFsSizeInformation:
+ break;
+
+ case FileFsDeviceInformation:
+ if (FSInformation)
+ {
+ FILE_FS_DEVICE_INFORMATION * DeviceInfo = FSInformation;
+ DeviceInfo->DeviceType = FILE_DEVICE_DISK;
+ DeviceInfo->Characteristics = 0;
+ break;
+ };
+ case FileFsAttributeInformation:
+ break;
+
+ case FileFsControlInformation:
+ break;
+
+ case FileFsFullSizeInformation:
+ break;
+
+ case FileFsObjectIdInformation:
+ break;
+
+ case FileFsMaximumInformation:
+ break;
+ }
+ IoStatusBlock->DUMMYUNIONNAME.Status = STATUS_SUCCESS;
+ IoStatusBlock->Information = len;
return STATUS_SUCCESS;
}
+
+
+
Index: wine/include/winioctl.h
===================================================================
RCS file: /home/wine/wine/include/winioctl.h,v
retrieving revision 1.9
diff -d -u -r1.9 winioctl.h
--- wine/include/winioctl.h 10 Mar 2002 00:02:34 -0000 1.9
+++ wine/include/winioctl.h 7 May 2002 18:58:45 -0000
@@ -81,6 +81,9 @@
#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
#define FILE_DEVICE_DFS_VOLUME 0x00000036
+#define FILE_DEVICE_SERENUM 0x00000037
+#define FILE_DEVICE_TERMSRV 0x00000038
+#define FILE_DEVICE_KSEC 0x00000039
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
@@ -345,4 +348,52 @@
/* End VWIN32 information */
+/*
+ * NT I/O-Manager
+ */
+
+/*
+ * structures for NtQueryVolumeInformationFile
+ * (wdm.h)
+ */
+
+/* FileFsVolumeInformation = 1 */
+typedef struct _FILE_FS_VOLUME_INFORMATION {
+ LARGE_INTEGER VolumeCreationTime;
+ ULONG VolumeSerialNumber;
+ ULONG VolumeLabelLength;
+ BOOLEAN SupportsObjects;
+ WCHAR VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+/* FileFsLabelInformation = 2 */
+/*
+ unknown
+*/
+
+/* FileFsSizeInformation = 3 */
+typedef struct _FILE_FS_SIZE_INFORMATION {
+ LARGE_INTEGER TotalAllocationUnits;
+ LARGE_INTEGER AvailableAllocationUnits;
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+/* FileFsDeviceInformation = 4 */
+typedef struct _FILE_FS_DEVICE_INFORMATION {
+ DEVICE_TYPE DeviceType;
+ ULONG Characteristics;
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
+
+/* FileFsAttributeInformation = 5 */
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
+ ULONG FileSystemAttribute;
+ LONG MaximumComponentNameLength;
+ ULONG FileSystemNameLength;
+ WCHAR FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+
+
#endif
+
More information about the wine-patches
mailing list