/*++

Copyright (c) 2000-2001  Microsoft Corporation

Module Name:

    driver.c

Abstract:

    This module implements routines that apply to the driver object including
    initialization and IRP dispatch routines.

--*/

#include "gdfx.h"

//
// Driver object for the GDF file system.
//
DECLSPEC_RDATA DRIVER_OBJECT GdfxDriverObject = {
    NULL,                               // DriverStartIo
    NULL,                               // DriverDeleteDevice
    GdfxDismountVolume,                 // DriverDismountVolume
    {
        GdfxFsdCreate,                  // IRP_MJ_CREATE
        GdfxFsdClose,                   // IRP_MJ_CLOSE
        GdfxFsdRead,                    // IRP_MJ_READ
        IoInvalidDeviceRequest,         // IRP_MJ_WRITE
        GdfxFsdQueryInformation,        // IRP_MJ_QUERY_INFORMATION
        GdfxFsdSetInformation,          // IRP_MJ_SET_INFORMATION
        IoInvalidDeviceRequest,         // IRP_MJ_FLUSH_BUFFERS
        GdfxFsdQueryVolumeInformation,  // IRP_MJ_QUERY_VOLUME_INFORMATION
        GdfxFsdDirectoryControl,        // IRP_MJ_DIRECTORY_CONTROL
        GdfxFsdFileSystemControl,       // IRP_MJ_FILE_SYSTEM_CONTROL
        GdfxFsdDeviceControl,           // IRP_MJ_DEVICE_CONTROL
        IoInvalidDeviceRequest,         // IRP_MJ_INTERNAL_DEVICE_CONTROL
        IoInvalidDeviceRequest,         // IRP_MJ_SHUTDOWN
        IoInvalidDeviceRequest,         // IRP_MJ_CLEANUP
    }
};

//
// All file system access is guarded by this single global lock.
//
INITIALIZED_CRITICAL_SECTION(GdfxGlobalMutex);
