#pragma once


#define SXS_VALIDATE_ASM_FLAG_CHECK_CATALOG         ( 0x00000001 )
#define SXS_VALIDATE_ASM_FLAG_CHECK_FILES           ( 0x00000002 )
#define SXS_VALIDATE_ASM_FLAG_CHECK_STRONGNAME      ( 0x00000004 )
#define SXS_VALIDATE_ASM_FLAG_CHECK_CAT_STRONGNAME  ( 0x00000008 )
#define SXS_VALIDATE_ASM_FLAG_CHECK_EVERYTHING      ( 0x0000000F )

#define SXS_VALIDATE_ASM_FLAG_MODE_STOP_ON_FAIL     ( 0x00000100 )

#define SXS_VALIDATE_ASM_FLAG_VALID_CATALOG         SXS_VALIDATE_ASM_FLAG_CHECK_CATALOG
#define SXS_VALIDATE_ASM_FLAG_VALID_FILES           SXS_VALIDATE_ASM_FLAG_CHECK_FILES
#define SXS_VALIDATE_ASM_FLAG_VALID_STRONGNAME      SXS_VALIDATE_ASM_FLAG_CHECK_STRONGNAME
#define SXS_VALIDATE_ASM_FLAG_VALID_CAT_STRONGNAME  SXS_VALIDATE_ASM_FLAG_CHECK_CAT_STRONGNAME
#define SXS_VALIDATE_ASM_FLAG_VALID_PERFECT         SXS_VALIDATE_ASM_FLAG_CHECK_EVERYTHING

BOOL
SxspValidateEntireAssembly(
    DWORD dwFlags,
    const CAssemblyRecoveryInfo &RecoverInfo,
    DWORD &dwResult
    );

//
// Single-shot scanning
//
BOOL
SxsProtectionPerformScanNow(
    HWND hwProgressWindow,
    BOOL bValidate,
    BOOL bUIAllowed
    );