Platform SDK: Files and I/O

Mounting a Volume at a Mount Point

The following sample demonstrates how to mount a file system.

This sample uses the following functions: GetVolumeNameForVolumeMountPoint and SetVolumeMountPoint.

#define _WIN32_WINNT 0x0500

#include <windows.h>
#include <stdio.h>

#define BUFSIZE 1024    // ample space for our string buffer

void
Syntax (char *argv)
{
   printf( "%s, mount a volume at a mount point.\n", argv );
   printf( "For example, \"mount c:\\mnt\\fdrive\\ f:\\\"\n" );
}

int
main( int argc, char *argv[] )
{
   BOOL bFlag;
   char Buf[BUFSIZE];            // temporary buffer for volume name

   if( argc != 3 ) 
   {
      Syntax( argv[0] );
      return( -1 );
   }

  // We should do some error checking on the inputs. Make sure
  // there are colons and backslashes in the right places, etc. 

   bFlag = GetVolumeNameForVolumeMountPoint(
              argv[2], // input volume mount point or directory
                  Buf, // output volume name buffer
               BUFSIZE // size of volume name buffer
           );

   if (bFlag != TRUE) 
   {
      printf( "Retrieving volume name for %s failed.\n", argv[2] );
      return (-2);
   }
   printf( "Volume name of %s is %s\n", argv[2], Buf );

   bFlag = SetVolumeMountPoint(
              argv[1], // mount point
                   Buf // volume to be mounted
           );

   if (!bFlag) 
     printf ("Attempt to mount %s at %s failed.\n", argv[2], argv[1]);

   return (bFlag);
}