API du moteur d'analyse des virus

Windows SharePoint Services 3

Cette rubrique décrit l'API requise pour la construction d'un moteur d'analyse des virus (VSE) pour l'analyse et le nettoyage des documents dans Windows SharePoint Services 3.0. Pour obtenir une présentation générale du VSE et de sa configuration minimale requise, voir Présentation : implémentation de l'API du moteur d'analyse antivirus.

IMso_VirusScanner, interface

Le tableau suivant décrit les méthodes fournies par l'interface IMso_VirusScanner.

Méthode Description

Initialize

Effectue l'initialisation par instance de l'analyseur et renvoie des informations sur l'instance IMso_VirusScanner active.

Scan

Analyse le contenu du flux et renvoie l'état d'infection et les informations sur le virus, le cas échéant.

Clean

Tente de supprimer toute infection virale du contenu.

Notes

L'application hôte instancie un objet IMso_VirusScanner et effectue les tâches suivantes :

  • Instancie l'antivirus en tant que INPROC_SERVER dans un cloisonnement sans thread.

  • Appelle la méthode Initialize avant d'appeler toute autre méthode.

  • Vérifie qu'il n'y a aucune requête Scan en suspens avant d'appeler Release.

  • Effectue des appels simultanés à Scan ou Clean à partir de plusieurs threads une fois la méthode Initialize terminée et avant d'appeler Release.

Le scanneur compatible est une instance de l'interface IMso_VirusScanner et effectue les tâches suivantes :

  • Toutes les initialisations et allocations de ressources par le biais de la méthode Initialize.

  • Aucun appel vers des API de système d'exploitation avec des heures d'achèvement incertaines au moment de l'analyse ou du nettoyage. Parmi les différents exemples, citons les E/S de fichier et la manipulation du Registre.

Initialize, méthode

Effectue l'initialisation par instance de l'analyseur et renvoie des informations sur l'instance IMso_VirusScanner active.

Syntaxe

STDMETHOD Initialize (
      BSTR *pbstrProduct,
      DWORD *pdwProductVersion
);

Paramètres

Paramètre Description

pbstrProduct [OUT]

Spécifie l'adresse de la variable qui reçoit une chaîne identifiant l'application du fournisseur, comme dans « Microsoft Office Word 2007 (12.2627.2625) ».

pdwProductVersion [OUT]

Spécifie l'adresse de la variable qui reçoit la version du fichier de signature que le logiciel d'analyse utilise actuellement.

Valeur de retour

Réussite : renvoie S_OK si l'initialisation a réussi.

Échec : renvoie un code d'erreur.

Notes

Cette méthode doit être appelée une seule fois par instance IMso_VirusScanner, immédiatement après la création de l'instance et avant d'appeler la méthode Scan ou Clean.

Scan, méthode

Analyse le contenu et renvoie l'état d'infection et les informations sur le virus, le cas échéant.

Syntaxe

STDMETHOD Scan (
      ILockBytes *pilb,
      DWORD *pdwStatus,
      BSTR *pbstrVirusInfo
);

Paramètres

Paramètre Description

pilb [IN]

Un objet contenant le contenu qui doit être analysé. Cet objet contient des informations concernant le nom de fichier et le type de fichier.

pdwStatus [OUT]

Spécifie l'adresse de la variable qui reçoit l'état d'infection du contenu.

pbstrVirusInfo [OUT]

Spécifie l'adresse de la variable qui reçoit une chaîne contenant les informations relatives au virus, si le contenu est infecté. Si l'analyseur détecte plusieurs virus, il doit concaténer les chaînes et les délimiter avec le caractère de tabulation (ASCII 9).

L'hôte libère la valeur renvoyée à l'aide de la fonction SysFreeString.

Valeur de retour

Réussite : renvoie S_OK si l'opération a réussi et les paramètes pdwStatus et pbstrVirusInfo contiennent des informations valides.

Échec : renvoie un code d'erreur.

Notes

L'hôte appelle cette méthode à partir de plusieurs threads simultanément. Le scanneur est supposé effectuer les demandes simultanément sans sérialisation interne des demandes.

Clean, méthode

Tente de supprimer l'infection du contenu.

Syntaxe

STDMETHOD Clean (
      ILockBytes *pilbInput,
      ILockBytes *pilbOutput,
      DWORD *pdwStatus,
      BSTR *pbstrVirusInfo
);

Paramètres

Paramètre Description

pilbInput [IN]

Un objet contenant le contenu qui doit être réparé. Cet objet contient des informations concernant le nom de fichier et le type de fichier.

pilbOutput [IN]

Un objet qui reçoit les données réparées. Au moment de l'appel de la méthode, les contenus de pilbInput et de pilbOutput sont identiques, l'analyseur doit donc optimiser les opérations d'E/S si possible.

pdwStatus [OUT]

Spécifie l'adresse de la variable qui reçoit l'état d'infection du contenu.

pbstrVirusInfo [OUT]

Spécifie l'adresse de la variable qui reçoit une chaîne contenant les informations relatives au virus, si le contenu est infecté. Si l'analyseur détecte plusieurs virus, il doit concaténer les chaînes jusqu'à atteindre la longueur de la mémoire tampon en les délimitant avec le caractère de tabulation (ASCII 9).

L'hôte libère la valeur renvoyée à l'aide de la fonction SysFreeString.

Valeur de retour

Réussite : renvoie S_OK si l'opération a réussi et les paramètres pdwStatus, wzVirusInfo et pilbOutput contiennent des informations valides.

Notes

L'hôte appelle cette méthode à partir de plusieurs threads simultanément. Le scanneur est supposé effectuer les demandes simultanément sans sérialisation interne des demandes.

ILockBytes, interface

L'interface ILockBytes est exposée pour permettre au fournisseur d'extraire des informations supplémentaires sur le fichier, lesquelles peuvent inclure le nom du fichier, son type, sa taille, etc. Pour obtenir une description complète de cette interface sur MSDN, voir ILockBytes.

Syntaxe

typedef struct tagSTATSTG {
      LPWSTR pwcsName;
      DWORD type;
      ULARGE_INTEGER cbSize;
      FILETIME mtime;
      FILETIME ctime;
      FILETIME atime;
      DWORD grfMode;
      DWORD grfLocksSupported;
      CLSID clsid;
      DWORD grfStateBits;
      DWORD reserved;
} STATSTG;

Membres

Membre Description

pwcsName

Un pointeur vers une chaîne Unicode terminée par NULL contenant le nom. L'espace réservé à cette chaîne est alloué par la méthode appelée et libéré par l'appelant, comme avec la fonction COM CoTaskMemFree. Vous pouvez spécifier de ne pas renvoyer ce membre en indiquant la valeur STATFLAG_NONAME lorsque vous appelez une méthode qui renvoie une structure STATSTG, sauf pour les appels de la méthode IEnumSTATSTG::Next, qui ne permet pas de définir cette valeur.

type

Indique le type d'objet de stockage, qui peut être l'une des valeurs de l'énumération STGTY.

cbSize

Spécifie la taille en octets du flux ou tableau d'octets.

mtime

Indique l'heure de la dernière modification de ce stockage, flux ou tableau d'octets.

ctime

Indique l'heure de création de ce stockage, flux ou tableau d'octets.

atime

Indique l'heure du dernier accès à ce stockage, flux ou tableau d'octets.

grfMode

Indique le mode d'accès spécifié lorsque l'objet a été ouvert. Ce membre est valide uniquement dans les appels aux méthodes Stat.

grfLocksSupported

Indique les types de verrouillage de région pris en charge par le flux ou le tableau d'octets, qui peuvent être une valeur de l'énumération LOCKTYPE. Ce membre n'est pas utilisé pour les objets de stockage.

clsid

Indique l'identificateur de classe pour l'objet de stockage ; la valeur est CLSID_NULL pour les nouveaux objets de stockage. Ce membre n'est pas utilisé pour les flux ou les tableaux d'octets.

grfStateBits

Indique les bits d'état actuels de l'objet de stockage ; autrement dit, la valeur définie le plus récemment par la méthode IStorage::SetStateBits. Ce membre n'est pas valide pour les flux ou les tableaux d'octets.

reserved

Réservé à une utilisation future.

Afficher: