
#define DISK_LOCATION_NOT_MATCH		0
#define DISK_LOCATION_MATCH			1
#define	DISK_NO_MATCHED_DEVICE		2



/*****************************************************************************
 *  Self-defined function declaration section					 			*
 ****************************************************************************/

/*	
 *	Description:
 *		disk_get_device_number : Get disk's physical device number
 *
 *	Input:		
 *		<rawDiskName> : drive letter of a volume. Ex. "D:\"
 *		
 *
 *	Output:
 *		<deviceInfo> :device info with device number
 *
 *	Return:
 *		TRUE indicates success, FALSE indicates fail.
 */
BOOL disk_get_device_number(TCHAR* rawDiskName,PSTORAGE_DEVICE_NUMBER deviceInfo); 


/*	
 *	Description:
 *		disk_get_existing_mount_point : Get existing mount point
 *
 *	Input:		
 *		<existingMountPoint> :  existing mount point
 *		
 *
 *	Output:
 *		none
 *
 *	Return:
 *		TRUE indicates success, FALSE indicates fail.
 */
BOOL disk_get_existing_mount_point(int *existingMountPoint); 

/*	
 *	Description:
 *		disk_check_dst_mount_point : Check if dst mount point has existed
 *
 *	Input:		
 *		<existingMountPoint> :  existing mount point
 *		<szDriveLetter> : destination drive letter
 *
 *	Output:
 *		none
 *
 *	Return:
 *		TRUE indicates dst mount point exists, FALSE indicates dst mount point deos not exist.
 */
BOOL disk_check_mount_point(int *existingMountPoint,TCHAR *szDriveLetter);

/*	
 *	Description:
 *		disk_remove_mount_point : Remove specified mount point
 *
 *	Input:		
 *		<szMountPoint> :  mount point to remove
 *		
 *
 *	Output:
 *		<szVolumeName> : the GUID of the volume
 *
 *	Return:
 *		TRUE indicates dst mount point exists, FALSE indicates dst mount point deos not exist.
 */
BOOL disk_remove_mount_point(TCHAR *szMountPoint,TCHAR *szVolumeMountPoint);

/*	
 *	Description:
 *		disk_remove_mount_point : Remove specified mount point
 *
 *	Input:		
 *		<driveLetter> : source and destination drive letter
 *		
 *
 *	Output:
 *		<szVolumeName> : the GUID of the volume 
 *
 *	Return:
 *		TRUE indicates dst mount point exists, FALSE indicates dst mount point deos not exist.
 */
BOOL disk_change_mount_point(TCHAR **driveLetter);

/*	
 *	Description:
 *		Compare if drive letter and physical location is matched
 *
 *	Input:		
 *		
 *		<rawDriveLetter> : drive letter of a volume. Ex. "D:\"
 *		<rawDiskLocation> : disk location of a volume. Ex. "0 or 2..."
 *
 *	Output:
 *		None
 *
 *	Return:
 *		0 indicates disk location does not match, 1 indicates disk location match, 2 indicates no matched disk found.
 */
int  CompareDriveLetterWithLocation(TCHAR *rawDriveLetter,int rawDiskLocation);
