Partager via


IDiaSymbol

Décrit les propriétés d’une instance de symbole.

Syntaxe

IDiaSymbol : IUnknown

Méthodes par ordre alphabétique

Le tableau suivant présente les méthodes de IDiaSymbol.

Notes

Les symboles retournent des données significatives uniquement pour certaines de ces méthodes, en fonction du type de symbole. Si une méthode retourne S_OK, cette méthode a renvoyé des données significatives.

Méthode Description
IDiaSymbol::findChildren Récupère tous les enfants du symbole.
IDiaSymbol::findChildrenEx Récupère les enfants du symbole. Cette méthode est la version étendue de IDiaSymbol::findChildren.
IDiaSymbol::findChildrenExByAddr Récupère les enfants du symbole qui sont valides à une adresse spécifiée.
IDiaSymbol::findChildrenExByRVA Récupère les enfants du symbole qui sont valides à une adresse virtuelle relative (RVA) spécifiée.
IDiaSymbol::findChildrenExByVA Récupère les enfants du symbole qui sont valides à une adresse virtuelle spécifiée.
IDiaSymbol::findInlineFramesByAddr Récupère une énumération qui permet à un client d’itérer au sein de tous les frames inline sur une adresse donnée.
IDiaSymbol::findInlineFramesByRVA Récupère une énumération qui permet à un client d’itérer au sein de tous les frames inline sur une adresse virtuelle relative (RVA) spécifiée.
IDiaSymbol::findInlineFramesByVA Récupère une énumération qui permet à un client d’itérer au sein de tous les frames inline sur une adresse virtuelle spécifiée.
IDiaSymbol::findInlineeLines Récupère une énumération qui permet à un client d’itérer dans les informations de numéro de ligne de toutes les fonctions insérées, directement ou indirectement, par ce symbole.
IDiaSymbol::findInlineeLinesByAddr Récupère une énumération qui permet à un client d’itérer dans les informations de numéro de ligne de toutes les fonctions insérées, directement ou indirectement, dans ce symbole dans la plage d’adresses spécifiée.
IDiaSymbol::findInlineeLinesByRVA Récupère une énumération qui permet à un client d’itérer dans les informations de numéro de ligne de toutes les fonctions insérées, directement ou indirectement, dans ce symbole dans l’adresse virtuelle relative spécifiée.
IDiaSymbol::findInlineeLinesByVA Récupère une énumération qui permet à un client d’itérer dans les informations de numéro de ligne de toutes les fonctions insérées, directement ou indirectement, dans ce symbole dans l’adresse virtuelle spécifiée.
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag Avec une valeur de balise correspondante, cette méthode retourne une énumération de symboles contenus dans cette fonction stub à une adresse virtuelle relative spécifiée.
IDiaSymbol::findSymbolsForAcceleratorPointerTag Retourne le nombre d’étiquettes de pointeur d’accélérateur dans une fonction stub C++ AMP.
IDiaSymbol::get_acceleratorPointerTags Retourne toutes les valeurs de balise de pointeur d’accélérateur qui correspondent à une fonction stub d’accélérateur C++ AMP.
IDiaSymbol::get_access Récupère le modificateur d’accès d’un membre de classe.
IDiaSymbol::get_addressOffset Récupère la partie décalage d’un emplacement d’adresse.
IDiaSymbol::get_addressSection Récupère la partie section d’un emplacement d’adresse.
IDiaSymbol::get_addressTaken Récupère un indicateur signalant si un autre symbole fait référence à cette adresse.
IDiaSymbol::get_age Récupère la valeur d’âge d’une base de données de programme.
IDiaSymbol::get_arrayIndexType Récupère l’identificateur de symbole du type d’index de tableau.
IDiaSymbol::get_arrayIndexTypeId Récupère l’identificateur de type d’index de tableau du symbole.
IDiaSymbol::get_backEndMajor Récupère le numéro de version principale du back-end.
IDiaSymbol::get_backEndMinor Récupère le numéro de version mineure du back-end.
IDiaSymbol::get_backEndBuild Récupère le numéro de build du back-end.
IDiaSymbol::get_baseDataOffset Récupère le décalage des données de base.
IDiaSymbol::get_baseDataSlot Récupère l’emplacement des données de base.
IDiaSymbol::get_baseSymbol Récupère le symbole à partir duquel le pointeur est basé.
IDiaSymbol::get_baseSymbolId Récupère l’ID de symbole à partir duquel le pointeur est basé.
IDiaSymbol::get_baseType Récupère la balise de type d’un type simple.
IDiaSymbol::get_bitPosition Récupère la position du bit d’un emplacement.
IDiaSymbol::get_builtInKind Récupère un type intégré de type HLSL.
IDiaSymbol::get_callingConvention Retourne un indicateur de la convention d’appel d’une méthode.
IDiaSymbol::get_classParent Récupère une référence au parent de classe du symbole.
IDiaSymbol::get_classParentId Récupère l’identificateur parent de classe du symbole.
IDiaSymbol::get_code Récupère un indicateur qui signale si le symbole fait référence à une adresse de code.
IDiaSymbol::get_compilerGenerated Récupère un indicateur signalant si le symbole a été généré par le compilateur.
IDiaSymbol::get_compilerName Récupère le nom du compilateur utilisé pour créer le Compiland.
IDiaSymbol::get_constructor Récupère un indicateur signalant si le type de données défini par l’utilisateur a un constructeur.
IDiaSymbol::get_container Récupère le symbole contenant de ce symbole.
IDiaSymbol::get_constType Récupère un indicateur signalant si le type de données défini par l’utilisateur est constant.
IDiaSymbol::get_count Récupère le nombre d’éléments d’une liste ou d’un tableau.
IDiaSymbol::get_countLiveRanges Récupère le nombre de plages d’adresses valides associées au symbole local.
IDiaSymbol::get_customCallingConvention Récupère un indicateur signalant si la fonction utilise une convention d’appel personnalisée.
IDiaSymbol::get_dataBytes Récupère les octets de données d’un symbole OEM.
IDiaSymbol::get_dataKind Récupère la classification de variable d’un symbole de données.
IDiaSymbol::get_editAndContinueEnabled Récupère l’indicateur décrivant les fonctionnalités Modifier et Continuer du programme ou de l’unité que vous compilez.
IDiaSymbol::get_farReturn Récupère un indicateur signalant si la fonction utilise un retour lointain.
IDiaSymbol::get_frontEndMajor Récupère le numéro de version principale du front-end.
IDiaSymbol::get_frontEndMinor Récupère le numéro de version mineure du front-end.
IDiaSymbol::get_frontEndBuild Récupère le numéro de build du front-end.
IDiaSymbol::get_function Récupère un indicateur signalant si le symbole public fait référence à une fonction.
IDiaSymbol::get_guid Récupère le GUID du symbole.
IDiaSymbol::get_hasAlloca Récupère un indicateur indiquant si la fonction contient un appel à alloca.
IDiaSymbol::get_hasAssignmentOperator Récupère un indicateur signalant si le type de données défini par l’utilisateur a des opérateurs d’affectation définis.
IDiaSymbol::get_hasCastOperator Récupère un indicateur signalant si le type de données défini par l’utilisateur a des opérateurs de cast définis.
IDiaSymbol::get_hasDebugInfo Récupère un indicateur signalant si la compilation et contient des informations de débogage.
IDiaSymbol::get_hasEH Récupère un indicateur signalant si la fonction a un gestionnaire d’exceptions de style C++.
IDiaSymbol::get_hasEHa Récupère un indicateur signalant si la fonction a un gestionnaire d’exceptions asynchrone.
IDiaSymbol::get_hasInlAsm Récupère un indicateur signalant si la fonction a un assembly inline.
IDiaSymbol::get_hasLongJump Récupère un indicateur signalant si la fonction contient une commande longjmp (qui fait partie de la gestion des exceptions de style C).
IDiaSymbol::get_hasManagedCode Récupère un indicateur signalant si le module contient du code managé.
IDiaSymbol::get_hasNestedTypes Récupère un indicateur signalant si le type de données défini par l’utilisateur a des définitions de type imbriquées.
IDiaSymbol::get_hasSecurityChecks Récupère un indicateur indiquant si la fonction ou la compilation a des contrôles de sécurité compilés (via le commutateur du compilateur /GS (Vérification de la sécurité des mémoires tampons)).
IDiaSymbol::get_hasSEH Récupère un indicateur signalant si la fonction a une gestion structurée des exceptions de style Win32.
IDiaSymbol::get_hasSetJump Récupère un indicateur signalant si la fonction contient une commande setjmp.
IDiaSymbol::get_indirectVirtualBaseClass Récupère un indicateur signalant si le type de données défini par l’utilisateur est une classe de base virtuelle indirecte.
IDiaSymbol::get_InlSpec Récupère un indicateur signalant si la fonction a été marquée avec l’attribut inline.
IDiaSymbol::get_interruptReturn Récupère un indicateur signalant si la fonction a un retour à partir d’une instruction d’interruption.
IDiaSymbol::get_intro Récupère un indicateur signalant si la fonction est la fonction virtuelle de classe de base.
IDiaSymbol::get_isAcceleratorGroupSharedLocal Récupère un indicateur signalant si le symbole correspond à une variable locale partagée de groupe dans le code compilé pour un accélérateur C++ AMP.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange Récupère un indicateur qui spécifie si le symbole correspond au symbole de plage de définition pour le composant d’étiquette d’une variable de pointeur dans le code compilé pour un accélérateur C++ AMP. Le symbole de plage de définition est l’emplacement d’une variable pour une étendue d’adresses.
IDiaSymbol::get_isAcceleratorStubFunction Indique si le symbole correspond à un symbole de fonction de niveau supérieur pour un nuanceur compilé pour un accélérateur qui correspond à un appel parallel_for_each.
IDiaSymbol::get_isAggregated Récupère un indicateur signalant si les données font partie d’un agrégat de nombreux symboles.
IDiaSymbol::get_isCTypes Récupère un indicateur signalant si le fichier de symboles contient des types C.
IDiaSymbol::get_isCVTCIL Récupère un indicateur signalant si le module a été converti du langage CIL (Common Intermediate Language) en code natif.
IDiaSymbol::get_isDataAligned Récupère un indicateur signalant si les éléments d’un type de données défini par l’utilisateur sont alignés sur une limite spécifique.
IDiaSymbol::get_isHLSLData Spécifie si ce symbole représente des données HLSL (High Level Shader Language).
IDiaSymbol::get_isHotpatchable Récupère un indicateur indiquant si le module a été compilé avec le commutateur du compilateur /hotpatch (Créer une image corrigeable en mémoire).
IDiaSymbol::get_isLTCG Récupère un indicateur signalant si le compiland managé a été lié à la LTCG de l’éditeur de liens.
IDiaSymbol::get_isMatrixRowMajor Spécifie si la matrice est de type row-major.
IDiaSymbol::get_isMSILNetmodule Récupère un indicateur signalant si le compiland managé est un .netmodule (contenant uniquement des métadonnées).
IDiaSymbol::get_isMultipleInheritance Spécifie si le pointeur this pointe vers un membre de données avec héritage multiple.
IDiaSymbol::get_isNaked Récupère un indicateur indiquant si la fonction a l’attribut naked.
IDiaSymbol::get_isOptimizedAway Spécifie si la variable est optimisée.
IDiaSymbol::get_isPointerBasedOnSymbolValue Spécifie si le pointeur this est basé sur une valeur de symbole.
IDiaSymbol::get_isPointerToDataMember Spécifie si ce symbole est un pointeur vers un membre de données.
IDiaSymbol::get_isPointerToMemberFunction Spécifie si ce symbole est un pointeur vers une fonction membre.
IDiaSymbol::get_isReturnValue Spécifie si la variable contient une valeur de retour.
IDiaSymbol::get_isSdl Spécifie si le module est compilé avec l’option /SDL.
IDiaSymbol::get_isSingleInheritance Spécifie si le pointeur this pointe vers un membre de données avec héritage unique.
IDiaSymbol::get_isSplitted Récupère un indicateur signalant si les données ont été divisées en un agrégat de symboles distincts.
IDiaSymbol::get_isStatic Récupère un indicateur signalant si une fonction ou une couche thunk est statique.
IDiaSymbol::get_isStripped Récupère un indicateur signalant si les symboles privés ont été supprimés du fichier de symboles.
IDiaSymbol::get_isVirtualInheritance Spécifie si le pointeur this pointe vers un membre de données avec héritage virtuel.
IDiaSymbol::get_language Récupère la langue de la source.
IDiaSymbol::get_length Récupère le nombre d’octets de mémoire utilisés par l’objet représenté par ce symbole.
IDiaSymbol::get_lexicalParent Récupère une référence au parent lexical du symbole.
IDiaSymbol::get_lexicalParentId Récupère l’identificateur parent lexical du symbole.
IDiaSymbol::get_libraryName Récupère le nom de fichier de la bibliothèque ou du fichier objet à partir duquel l’objet a été chargé.
IDiaSymbol::get_liveRangeLength Retourne la longueur de la plage d’adresses dans laquelle le symbole local est valide.
IDiaSymbol::get_liveRangeStartAddressSection Retourne la partie section de la plage d’adresses de départ dans laquelle le symbole local est valide.
IDiaSymbol::get_liveRangeStartAddressOffset Retourne la partie décalage de la plage d’adresses de départ dans laquelle le symbole local est valide.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress Retourne le début de la plage d’adresses dans laquelle le symbole local est valide.
IDiaSymbol::get_locationType Récupère le type d’emplacement d’un symbole de données.
IDiaSymbol::get_lowerBound Récupère la limite inférieure d’une dimension de tableau FORTRAN.
IDiaSymbol::get_lowerBoundId Récupère l’identificateur de symbole de la limite inférieure d’une dimension de tableau FORTRAN.
IDiaSymbol::get_machineType Récupère le type du processeur cible.
IDiaSymbol::get_managed Récupère un indicateur signalant si le symbole fait référence au code managé.
IDiaSymbol::get_memorySpaceKind Récupère le type d’espace mémoire.
IDiaSymbol::get_msil Récupère un indicateur signalant si le symbole fait référence au code MSIL (Microsoft Intermediate Language).
IDiaSymbol::get_name Récupère le nom du symbole.
IDiaSymbol::get_nested Récupère un indicateur signalant si le type de données défini par l’utilisateur est imbriqué.
IDiaSymbol::get_noInline Récupère un indicateur indiquant si la fonction est marquée avec l’attribut noinline.
IDiaSymbol::get_noReturn Récupère un indicateur indiquant si la fonction a été déclarée avec l’attribut noreturn.
IDiaSymbol::get_noStackOrdering Récupère un indicateur signalant si aucun classement de pile n’a pu être effectué dans le cadre de la vérification de la mémoire tampon de la pile.
IDiaSymbol::get_notReached Récupère un indicateur signalant si la fonction ou l’étiquette n’est jamais atteinte.
IDiaSymbol::get_numberOfAcceleratorPointerTags Retourne le nombre d’étiquettes de pointeur d’accélérateur dans une fonction stub C++ AMP.
IDiaSymbol::get_numberOfModifiers Récupère le nombre de modificateurs appliqués au type d’origine.
IDiaSymbol::get_numberOfRegisterIndices Récupère le nombre d’index de registre.
IDiaSymbol::get_numberOfRows Récupère le nombre de lignes dans la matrice.
IDiaSymbol::get_numberOfColumns Récupère le nombre de colonnes dans la matrice.
IDiaSymbol::get_objectFileName Récupère le nom du fichier objet.
IDiaSymbol::get_objectPointerType Récupère le type du pointeur d’objet pour une méthode de classe.
IDiaSymbol::get_oemId Récupère la valeur du symbole oemId.
IDiaSymbol::get_oemSymbolId Récupère la valeur du symbole oemSymbolId.
IDiaSymbol::get_offset Récupère le décalage de l’emplacement du symbole.
IDiaSymbol::get_optimizedCodeDebugInfo Récupère un indicateur signalant si la fonction ou l’étiquette contient du code optimisé ainsi que des informations de débogage.
IDiaSymbol::get_overloadedOperator Récupère un indicateur signalant si le type de données défini par l’utilisateur a des opérateurs surchargés.
IDiaSymbol::get_packed Récupère un indicateur signalant si le type de données défini par l’utilisateur est empaqueté.
IDiaSymbol::get_platform Récupère le type de plateforme pour lequel le programme ou compiland a été compilé.
IDiaSymbol::get_pure Récupère un indicateur qui indique si la fonction est purement virtuelle.
IDiaSymbol::get_rank Récupère le rang d’un tableau multidimensionnel FORTRAN.
IDiaSymbol::get_reference Récupère un indicateur signalant si un type de pointeur est une référence.
IDiaSymbol::get_registerId Récupère l’identificateur de registre de l’emplacement.
IDiaSymbol::get_registerType Récupère le type de registre.
IDiaSymbol::get_relativeVirtualAddress Récupère l’adresse virtuelle relative (RVA) de l’emplacement.
IDiaSymbol::get_restrictedType Spécifie si le pointeur this est marqué comme restreint.
IDiaSymbol::get_samplerSlot Récupère l’emplacement de l’échantillonneur.
IDiaSymbol::get_scoped Récupère un indicateur signalant si le type de données défini par l’utilisateur apparaît dans une étendue lexicale non globale.
IDiaSymbol::get_signature Récupère la valeur de signature du symbole.
IDiaSymbol::get_sizeInUdt Récupère la taille d’un membre d’un type défini par l’utilisateur.
IDiaSymbol::get_slot Récupère le numéro d’emplacement de l’emplacement.
IDiaSymbol::get_sourceFileName Récupère le nom de fichier du fichier source.
IDiaSymbol::getSrcLineOnTypeDefn Récupère le fichier source et le numéro de ligne qui indiquent où un type défini par l’utilisateur spécifié est défini.
IDiaSymbol::get_stride Récupère le pas de la matrice ou du tableau à pas.
IDiaSymbol::get_subType Récupère le sous-type.
IDiaSymbol::get_subTypeId Récupère l’ID de sous-type.
IDiaSymbol::get_symbolsFileName Récupère le nom du fichier à partir duquel les symboles ont été chargés.
IDiaSymbol::get_symIndexId Récupère l’identificateur de symbole unique.
IDiaSymbol::get_symTag Récupère le classifieur de type de symbole.
IDiaSymbol::get_targetOffset Récupère la section décalage d’une cible thunk.
IDiaSymbol::get_targetRelativeVirtualAddress Récupère l’adresse virtuelle relative (RVA) d’une cible thunk.
IDiaSymbol::get_targetSection Récupère la section adresse d’une cible thunk.
IDiaSymbol::get_targetVirtualAddress Récupère l’adresse virtuelle (VA) d’une cible thunk.
IDiaSymbol::get_textureSlot Récupère l’emplacement de texture.
IDiaSymbol::get_thisAdjust Récupère l’ajusteur logique this pour la méthode.
IDiaSymbol::get_thunkOrdinal Récupère le type thunk d’une fonction.
IDiaSymbol::get_timeStamp Récupère le timestamp du fichier exécutable sous-jacent.
IDiaSymbol::get_token Récupère le jeton de métadonnées d’une fonction ou d’une variable managée.
IDiaSymbol::get_type Récupère une référence à la signature de fonction.
IDiaSymbol::get_typeId Récupère l’identificateur de type du symbole.
IDiaSymbol::get_types Récupère un tableau de valeurs de type spécifiques au compilateur pour ce symbole.
IDiaSymbol::get_typeIds Récupère un tableau de valeurs d’identificateur de type spécifiques au compilateur pour ce symbole.
IDiaSymbol::get_uavSlot Récupère l’emplacement uav.
IDiaSymbol::get_udtKind Récupère la variété d’un type défini par l’utilisateur (UDT).
IDiaSymbol::get_unalignedType Récupère un indicateur signalant si le type de données défini par l’utilisateur n’est pas aligné.
IDiaSymbol::get_undecoratedName Récupère le nom non décoré d’un nom C++ décoré ou de liaison.
IDiaSymbol::get_undecoratedNameEx Extension de la méthode get_undecoratedName qui récupère le nom non décodé en fonction de la valeur d’un champ d’extension.
IDiaSymbol::get_unmodifiedTypeId Récupère l’ID du type d’origine (non modifié).
IDiaSymbol::get_upperBound Récupère la limite supérieure d’une dimension de tableau FORTRAN.
IDiaSymbol::get_upperBoundId Récupère l’identificateur de symbole de la limite supérieure d’une dimension de tableau FORTRAN.
IDiaSymbol::get_value Récupère la valeur d’une constante.
IDiaSymbol::get_virtual Récupère un indicateur signalant si la fonction est virtuelle.
IDiaSymbol::get_virtualAddress Récupère l’adresse virtuelle (VA) de l’emplacement.
IDiaSymbol::get_virtualBaseClass Récupère un indicateur signalant si le type de données défini par l’utilisateur est une classe de base virtuelle.
IDiaSymbol::get_virtualBaseDispIndex Récupère l’index dans la table de déplacement de base virtuelle.
IDiaSymbol::get_virtualBaseOffset Récupère le décalage dans la table de fonctions virtuelles d’une fonction virtuelle.
IDiaSymbol::get_virtualBasePointerOffset Récupère le décalage du pointeur de base virtuel.
IDiaSymbol::get_virtualBaseTableType Récupère le type d’un pointeur de table de base virtuelle.
IDiaSymbol::get_virtualTableShape Récupère l’interface de symboles du type de la table virtuelle pour un type défini par l’utilisateur.
IDiaSymbol::get_virtualTableShapeId Récupère l’identificateur de forme de table virtuelle du symbole.
IDiaSymbol::get_volatileType Récupère un indicateur signalant si le type de données défini par l’utilisateur est volatile.

Remarques

Remarques pour les appelants

Obtenez cette interface en appelant l’une des méthodes suivantes :

Exemple

Cet exemple montre comment afficher les variables locales d’une fonction à une adresse virtuelle relative donnée. Il montre également comment les symboles de différents types sont liés les uns aux autres.

Notes

CDiaBSTR est une classe qui encapsule un BSTR et qui gère automatiquement la libération de la chaîne quand l’instanciation sort de l’étendue.

void DumpLocalVars( DWORD rva, IDiaSession *pSession )
{
    CComPtr< IDiaSymbol > pBlock;
    if ( FAILED( psession->findSymbolByRVA( rva, SymTagBlock, &pBlock ) ) )
    {
        Fatal( "Failed to find symbols by RVA" );
    }
    CComPtr< IDiaSymbol > pscope;
    for ( ; pBlock != NULL; )
    {
        CComPtr< IDiaEnumSymbols > pEnum;
        // local data search
        if ( FAILED( pBlock->findChildren( SymTagNull, NULL, nsNone, &pEnum ) ) )
        {
            Fatal( "Local scope findChildren failed" );
        }
        CComPtr< IDiaSymbol > pSymbol;
        DWORD tag;
        DWORD celt;
        while ( pEnum != NULL &&
                SUCCEEDED( pEnum->Next( 1, &pSymbol, &celt ) ) &&
                celt == 1)
        {
            pSymbol->get_symTag( &tag );
            if ( tag == SymTagData )
            {
                CDiaBSTR name;
                DWORD    kind;
                pSymbol->get_name( &name );
                pSymbol->get_dataKind( &kind );
                if ( name != NULL )
                    wprintf_s( L"\t%s (%s)\n", name, szDataKinds[ kind ] );
            }
            else if ( tag == SymTagAnnotation )
            {
                CComPtr< IDiaEnumSymbols > pValues;
                // local data search
                wprintf_s( L"\tAnnotation:\n" );
                if ( FAILED( pSymbol->findChildren( SymTagNull, NULL, nsNone, &pValues ) ) )
                    Fatal( "Annotation findChildren failed" );
                pSymbol = NULL;
                while ( pValues != NULL &&
                        SUCCEEDED( pValues->Next( 1, &pSymbol, &celt ) ) &&
                        celt == 1 )
                {
                    CComVariant value;
                    if ( pSymbol->get_value( &value ) != S_OK )
                        Fatal( "No value for annotation data." );
                    wprintf_s( L"\t\t%ws\n", value.bstrVal );
                    pSymbol = NULL;
                }
            }
            pSymbol = NULL;
        }
        pBlock->get_symTag( &tag );
        if ( tag == SymTagFunction )    // stop when at function scope
            break;
        // move to lexical parent
        CComPtr< IDiaSymbol > pParent;
        if ( SUCCEEDED( pBlock->get_lexicalParent( &pParent ) )
            && pParent != NULL ) {
            pBlock = pParent;
        }
        else
        {
            Fatal( "Finding lexical parent failed." );
        }
    };
}

Configuration requise

Header: Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia80.dll

Voir aussi