81.3.3.1. КОРНЕВАЯ И НЕКОРНЕВАЯ ПОДСИСТЕМЫ




	Файловая подсистема
	/              \
     Корневая        Некорневая
      UNIX            Win,Mac





Корневая: Есть корень файловой системы к нему в поддиректории можно монтировать тома.




Некорневая: Единого корня файловой системы нет, на верхнем уровне находятся тома которые определяются идентификаторами. Как правило идентификатор является либо буквой либо строкой. DOS, Win: C: Mac Machintosh HD: Netware SYS:




Смешанная: Единого корня нет, но можно монтировать другие тома в директории.


API для корневых подсистем
int	chroot(const char* path)    // Non standard
int	mount(const char * sourcedevice,	// Non standard
	      const char * targetdir,
	      const char * fstype,
	      unsigned long flags,
	      const void * data);

int	umount(const char* target);		// Non standard


API для некорневых подсистем

DWORD GetLogicalDrives(void);
	bit 0 - means 'A:'
	bit 1 - means 'B:'
	etc
	if bit = 1 then volume is present

UINT GetDriveType(LPCTSTR lpRootPathName);
	DRIVE_UNKNOWN
	DRIVE_NO_ROOT_DIR
	DRIVE_REMOVABLE
	DRIVE_FIXED
	DRIVE_REMOTE
	DRIVE_CDROM
	DRIVE_RAMDISK

DWORD GetLogicalDriveStrings(DWORD nBufferLength,LPTSTR lpBuffer);
HANDLE FindFirstVolume(
  LPTSTR lpszVolumeName,
  DWORD cchBufferLength
);

BOOL FindNextVolume(
  HANDLE hFindVolume,
  LPTSTR lpszVolumeName,
  DWORD cchBufferLength
);


BOOL FindVolumeClose(
  HANDLE hFindVolume
);

HANDLE FindFirstVolumeMountPoint(
  LPTSTR lpszRootPathName,
  LPTSTR lpszVolumeMountPoint,
  DWORD cchBufferLength
);


BOOL FindNextVolumeMountPoint(
  HANDLE hFindVolumeMountPoint,
  LPTSTR lpszVolumeMountPoint,
  DWORD cchBufferLength
);


BOOL FindVolumeMountPointClose(
  HANDLE hFindVolumeMountPoint
);

BOOL SetVolumeMountPoint(
  LPCTSTR lpszVolumeMountPoint,
  LPCTSTR lpszVolumeName
);

BOOL DeleteVolumeMountPoint(
  LPCTSTR lpszVolumeMountPoint
);


BOOL GetVolumeNameForVolumeMountPoint(
  LPCTSTR lpszVolumeMountPoint,
  LPTSTR lpszVolumeName,
  DWORD cchBufferLength
);


Cоответсвенно для некорневых систем присутсвует большее количество API, потому что надо еще управлять томами.


В реальности есть еще и смешанные варианты: когда тома могут как иметь буквы, так и монтироваться в поддиректории (причем одно не мешает другому). Например Windows 2000 NTFS: C: \XX --> Volume mount point -> \Device\Harddisk2\Partition7


Index Prev Next