Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

176 lines
3.3 KiB

#ifndef _INC_ASR_FMT__DR_STATE_H_
#define _INC_ASR_FMT__DR_STATE_H_
#define ASRFMT_WSZ_DOS_DEVICES_PREFIX L"\\DosDevices\\"
#define ASRFMT_CB_DOS_DEVICES_PREFIX 24
#define ASRFMT_LOOKS_LIKE_DOS_DEVICE(name, length) \
((length > ASRFMT_CB_DOS_DEVICES_PREFIX) && \
(!memcmp(name, ASRFMT_WSZ_DOS_DEVICES_PREFIX, ASRFMT_CB_DOS_DEVICES_PREFIX)))
#define ASRFMT_WSZ_VOLUME_GUID_PREFIX L"\\??\\Volume{"
#define ASRFMT_CB_VOLUME_GUID_PREFIX 22
#define ASRFMT_LOOKS_LIKE_VOLUME_GUID(name, length) \
((length > ASRFMT_CB_VOLUME_GUID_PREFIX) && \
(!memcmp(name, ASRFMT_WSZ_VOLUME_GUID_PREFIX, ASRFMT_CB_VOLUME_GUID_PREFIX)))
#define ASRFMT_CCH_VOLUME_GUID 64
#define ASRFMT_CCH_DOS_PATH 1024
#define ASRFMT_CCH_FS_NAME 16
#define ASRFMT_CCH_VOLUME_LABEL 256
#define ASRFMT_CCH_DEVICE_PATH 1024
typedef struct _ASRFMT_VOLUME_INFO {
struct _ASRFMT_VOLUME_INFO *pNext;
DWORD dwIndex;
WCHAR szGuid[ASRFMT_CCH_VOLUME_GUID];
WCHAR szDosPath[ASRFMT_CCH_DOS_PATH];
WCHAR szFsName[ASRFMT_CCH_FS_NAME];
WCHAR szLabel[ASRFMT_CCH_VOLUME_LABEL];
DWORD dwClusterSize;
BOOL IsDosPathAssigned;
} ASRFMT_VOLUME_INFO, *PASRFMT_VOLUME_INFO;
typedef struct _ASRFMT_REMOVABLE_MEDIA_INFO {
struct _ASRFMT_REMOVABLE_MEDIA_INFO *pNext;
DWORD dwIndex;
WCHAR szDevicePath[ASRFMT_CCH_DEVICE_PATH];
WCHAR szVolumeGuid[ASRFMT_CCH_VOLUME_GUID];
WCHAR szDosPath[ASRFMT_CCH_DOS_PATH];
} ASRFMT_REMOVABLE_MEDIA_INFO, *PASRFMT_REMOVABLE_MEDIA_INFO;
typedef struct _ASRFMT_STATE_INFO {
PASRFMT_VOLUME_INFO pVolume;
DWORD countVolume;
PASRFMT_REMOVABLE_MEDIA_INFO pRemovableMedia;
DWORD countMedia;
} ASRFMT_STATE_INFO, *PASRFMT_STATE_INFO;
typedef enum __AsrfmtpMessageSeverity {
_SeverityInfo = 0,
_SeverityWarning,
_SeverityError
} _AsrfmtpMessageSeverity;
// Public functions
//
// From format.cpp
//
extern BOOL g_bFormatInProgress;
extern BOOL g_bFormatSuccessful;
extern INT g_iFormatPercentComplete;
BOOL
FormatInitialise();
BOOL
IsFsTypeOkay(
IN PASRFMT_VOLUME_INFO pVolume,
OUT PBOOL pIsLabelIntact
);
BOOL
IsVolumeIntact(
IN PASRFMT_VOLUME_INFO pVolume
);
BOOL
FormatVolume(
PASRFMT_VOLUME_INFO pVolume
);
BOOL
FormatCleanup();
VOID
MountFileSystem(
IN PASRFMT_VOLUME_INFO pVolume
);
//
// dr_state.cpp
//
BOOL
BuildStateInfo(
IN PASRFMT_STATE_INFO pState
);
VOID
FreeStateInfo(
IN OUT PASRFMT_STATE_INFO *ppState
);
BOOL
ReadStateInfo(
IN PCWSTR lpwszFilePath,
OUT PASRFMT_STATE_INFO *ppState
);
BOOL
SetDosName(
IN PWSTR lpVolumeGuid,
IN PWSTR lpDosPath
);
BOOL
SetRemovableMediaGuid(
IN PWSTR lpDeviceName,
IN PWSTR lpGuid
);
BOOL
WriteStateInfo(
IN DWORD_PTR AsrContext, // AsrContext to pass in to AsrAddSifEntry
IN PASRFMT_STATE_INFO pState // data to write.
);
//
// Functions for logging error messages
//
VOID
AsrfmtpInitialiseErrorFile();
VOID
AsrfmtpCloseErrorFile();
VOID
AsrfmtpLogErrorMessage(
IN _AsrfmtpMessageSeverity Severity,
IN const LPCTSTR Message
);
#endif // ifndef _INC_ASR_FMT__DR_STATE_H_