meilleures pratiques pour la création de gestionnaires de filtres dans Windows Search

Microsoft Windows Search utilise des filtres pour extraire le contenu des éléments à inclure dans un index de recherche en texte intégral. vous pouvez étendre Windows recherche pour indexer les types de fichiers nouveaux ou propriétaires en écrivant des gestionnaires de filtres pour extraire le contenu et les gestionnaires de propriétés pour extraire les propriétés des fichiers. Les filtres sont associés à des types de fichiers, tels qu’ils sont dénotés par des extensions de nom de fichier, des types MIME ou des identificateurs de classe (CLSID). Alors qu’un filtre peut gérer plusieurs types de fichiers, chaque type fonctionne avec un seul filtre.

Cette rubrique contient les sections suivantes :

Code natif

dans Windows 7 et versions ultérieures, les filtres écrits en code managé sont bloqués explicitement. Les filtres doivent être écrits en code natif en raison des éventuels problèmes de versioning du CLR avec le processus dans lequel plusieurs compléments s’exécutent.

voici quelques pratiques pour écrire des applications sécurisées pour une utilisation avec Windows Search.

Pour les applications de requête :

  • Lorsque vous écrivez des clients de recherche, vous devez choisir l’API qui s’exécute dans un contexte de sécurité qui permet à l’utilisateur de disposer des privilèges minimum. Par exemple, les pages ASP peuvent utiliser l’objet de requête IXSSO, qui s’exécute en tant que processus utilisateur.

Pour les IFilters et les ressources de langue :

  • Si un nouveau gestionnaire de filtres pour un type de fichier est en cours d’installation en remplacement d’une inscription de filtre existante, le programme d’installation doit enregistrer l’inscription actuelle et la restaurer si le nouveau gestionnaire de filtres est désinstallé. Il n’existe aucun mécanisme pour la chaîne de filtres. Par conséquent, le nouveau gestionnaire de filtres est chargé de répliquer toutes les fonctionnalités nécessaires de l’ancien filtre.
  • les IFilters, les analyseurs lexicaux et les générateurs de formes dérivées pour Windows recherche s’exécutent dans le contexte de sécurité Local. Elles doivent être écrites pour gérer les mémoires tampons et les empiler correctement. Toutes les copies de chaînes doivent avoir des vérifications explicites pour se protéger contre les dépassements de mémoire tampon. Vous devez toujours vérifier la taille allouée de la mémoire tampon et tester la taille des données en fonction de la taille de la mémoire tampon. Les dépassements de mémoire tampon sont une technique courante pour exploiter du code qui n’applique pas les restrictions de taille de mémoire tampon.
  • Les composants IFilter, analyseur lexical et générateur de formes dérivées ne doivent jamais appeler la fonction de fonction EXITPROCESS ou une API similaire qui termine un processus et tous ses threads.
  • N’allouez pas ou ne libérez pas de ressources dans le point d’entrée DllMain. Cela peut entraîner des échecs lors des tests de contrainte de faible ressource.
  • Coder tous les objets pour qu’ils soient thread-safe. Windows La recherche appelle une instance d’analyseur lexical ou de générateur de formes dérivées dans un thread à la fois, mais elle peut appeler plusieurs instances en même temps sur plusieurs threads.
  • Évitez de créer des fichiers temporaires ou d’écrire dans le registre.
  • si vous utilisez le compilateur Microsoft Visual C++, veillez à compiler votre application à l’aide de l’option /gs . L’option /GS est utilisée pour détecter les dépassements de mémoire tampon. L’option/GS place les contrôles de sécurité dans le code compilé. Pour plus d’informations, consultez fonction DllGetClassObject / GS (vérification de la sécurité de la mémoire tampon) dans la section Options du compilateur Visual C++ du kit de développement Platform SDK.

Ressources supplémentaires

Développement de gestionnaires de filtres

à propos des gestionnaires de filtres dans Windows Search

Retour des propriétés d’un gestionnaire de filtres

Gestionnaires de filtres fournis avec Windows

implémentation de gestionnaires de filtres dans Windows Search

Inscription des gestionnaires de filtres

Test des gestionnaires de filtres