summaryrefslogblamecommitdiffstats
path: root/private/nw/ndsutils/volinfo.c
blob: 1e2d838a33312a1b841528aeed0d1e8a94c3a798 (plain) (tree)






















































































































                                                                                   
/***

Copyright (c) 1995  Microsoft Corporation

Module Name:

    VolInfo.c

Abstract:

    A command line NDS utility for resolving volume objects.

Author:

    Cory West       [corywest]  25-Oct-95

***/

#include "ndsapi32.h"

int
_cdecl main(
    int argc,
    char **argv
) {

    NTSTATUS Status;
    HANDLE hNdsTree;
    OEM_STRING OemArg;

    UNICODE_STRING NdsTree;
    WCHAR TreeBuffer[48];     // Max nds tree name length.

    UNICODE_STRING Volume;
    WCHAR VolumeBuffer[256];  // Max nds name length.

    UNICODE_STRING HostServer, HostVolume;
    WCHAR HostServerBuffer[48];
    WCHAR HostVolumeBuffer[256];

    //
    // Who do we want to monkey with?
    //

    if ( argc != 3 ) {
        printf( "Usage: volinfo [tree name] [volume object]\n" );
        return -1;
    }

    //
    // Get the tree.
    //

    OemArg.Length = strlen( argv[1] );
    OemArg.MaximumLength = OemArg.Length;
    OemArg.Buffer = argv[1];

    NdsTree.Length = 0;
    NdsTree.MaximumLength = sizeof( TreeBuffer );
    NdsTree.Buffer = TreeBuffer;

    RtlOemStringToUnicodeString( &NdsTree, &OemArg, FALSE );

    //
    // Open up a handle to the tree.
    //

    Status = NwNdsOpenTreeHandle( &NdsTree,
                                  &hNdsTree );

    if ( !NT_SUCCESS( Status ) ) {
       printf( "The supplied tree name is invalid or the tree is unavailable.\n" );
       return -1;
    }

    //
    // Get the volume information.
    //

    OemArg.Length = strlen( argv[2] );
    OemArg.MaximumLength = OemArg.Length;
    OemArg.Buffer = argv[2];

    Volume.Length = 0;
    Volume.MaximumLength = sizeof( VolumeBuffer );
    Volume.Buffer = VolumeBuffer;

    RtlOemStringToUnicodeString( &Volume, &OemArg, FALSE );

    //
    // Set up the reply strings.
    //

    HostServer.Length = 0;
    HostServer.MaximumLength = sizeof( HostServerBuffer );
    HostServer.Buffer = HostServerBuffer;

    HostVolume.Length = 0;
    HostVolume.MaximumLength = sizeof( HostVolumeBuffer );
    HostVolume.Buffer = HostVolumeBuffer;

    Status = NwNdsGetVolumeInformation( hNdsTree,
                                        &Volume,
					&HostServer,
					&HostVolume );


    CloseHandle( hNdsTree );

    if ( NT_SUCCESS( Status )) {
        printf( "Host Server: %wZ\n", &HostServer );
        printf( "Host Volume: %wZ\n", &HostVolume );
	return 0;
    }

    printf( "Unable to complete the requested operation: 0x%08lx\n", Status );
    return -1;

}