|
|
// Copyright (c) 2000-2001 Microsoft Corporation, All Rights Reserved
//
// CMDH.cpp - Helper class for working with
// logical disks mapped by logon
// session.
//
// Created: 4/23/2000 Kevin Hughes (khughes)
//
#pragma once
#define STR_FROM_bool(x) ( x ? L"TRUE" : L"FALSE" )
_COM_SMARTPTR_TYPEDEF(IDiskQuotaControl, IID_IDiskQuotaControl);
#define GET_NOTHING 0x00000000
#define GET_ALL_PROPERTIES 0xFFFFFFFF
#define GET_DEVICEID 0x00000001
#define GET_PROVIDER_NAME 0x00000002
#define GET_VOLUME_NAME 0x00000004
#define GET_FILE_SYSTEM 0x00000008
#define GET_VOLUME_SERIAL_NUMBER 0x00000010
#define GET_COMPRESSED 0x00000020
#define GET_SUPPORTS_FILE_BASED_COMPRESSION 0x00000040
#define GET_MAXIMUM_COMPONENT_LENGTH 0x00000080
#define GET_SUPPORTS_DISK_QUOTAS 0x00000100
#define GET_QUOTAS_INCOMPLETE 0x00000200
#define GET_QUOTAS_REBUILDING 0x00000400
#define GET_QUOTAS_DISABLED 0x00000800
#define GET_PERFORM_AUTOCHECK 0x00001000
#define GET_FREE_SPACE 0x00002000
#define GET_SIZE 0x00004000
#define GET_VOL_INFO (GET_VOLUME_NAME | \
GET_FILE_SYSTEM | \ GET_VOLUME_SERIAL_NUMBER | \ GET_COMPRESSED | \ GET_SUPPORTS_FILE_BASED_COMPRESSION | \ GET_MAXIMUM_COMPONENT_LENGTH | \ GET_SUPPORTS_DISK_QUOTAS | \ GET_QUOTAS_INCOMPLETE | \ GET_QUOTAS_REBUILDING | \ GET_QUOTAS_DISABLED | \ GET_PERFORM_AUTOCHECK)
#define SPIN_DISK (GET_VOL_INFO | \
GET_FREE_SPACE | \ GET_SIZE)
enum { PROP_DEVICEID = 0, PROP_PROVIDER_NAME = 1, PROP_VOLUME_NAME = 2, PROP_FILE_SYSTEM = 3, PROP_VOLUME_SERIAL_NUMBER = 4, PROP_COMPRESSED = 5, PROP_SUPPORTS_FILE_BASED_COMPRESSION = 6, PROP_MAXIMUM_COMPONENT_LENGTH = 7, PROP_SUPPORTS_DISK_QUOTAS = 8, PROP_QUOTAS_INCOMPLETE = 9, PROP_QUOTAS_REBUILDING = 10, PROP_QUOTAS_DISABLED = 11, PROP_PERFORM_AUTOCHECK = 12, PROP_FREE_SPACE = 13, PROP_SIZE = 14,
PROP_COUNT = 15
};
class CMDH { public:
CMDH() : m_dwImpPID(-1L) {} CMDH( DWORD dwPID) : m_dwImpPID(dwPID) {}
virtual ~CMDH() {}
HRESULT GetMDData( DWORD dwReqProps, VARIANT* pvarData);
HRESULT GetOneMDData( BSTR bstrDrive, DWORD dwReqProps, VARIANT* pvarData);
DWORD GetImpPID() { return m_dwImpPID; }
void SetImpPID( DWORD dwPID) { m_dwImpPID = dwPID; }
private:
HRESULT GetMappedDisksAndData( DWORD dwReqProps, VARIANT* pvarData);
HRESULT GetSingleMappedDiskAndData( BSTR bstrDrive, DWORD dwReqProps, VARIANT* pvarData);
#ifdef NTONLY
void GetMappedDriveList( std::vector<_bstr_t>& vecMappedDrives); #endif
HRESULT GetMappedDriveInfo( LPCWSTR wstrDriveName, long lDrivePropArrayDriveIndex, SAFEARRAY* saDriveProps, DWORD dwReqProps);
HRESULT GetProviderName( LPCWSTR wstrDriveName, long lDrivePropArrayDriveIndex, SAFEARRAY* saDriveProps);
HRESULT GetDriveVolumeInformation( LPCWSTR wstrDriveName, long lDrivePropArrayDriveIndex, SAFEARRAY* saDriveProps);
BOOLEAN IsVolumeDirty( _bstr_t &bstrtNtDriveName, BOOLEAN *Result);
HRESULT GetDriveFreeSpace( LPCWSTR wstrDriveName, long lDrivePropArrayDriveIndex, SAFEARRAY* saDriveProps);
HRESULT SetProperty( long lDrivePropArrayDriveIndex, long lDrivePropArrayPropIndex, LPCWSTR wstrPropValue, SAFEARRAY* saDriveProps);
HANDLE Impersonate();
DWORD m_dwImpPID;
};
|