Meilleures pratiques pour la création de gestionnaires de filtres dans Recherche Windows
Recherche Microsoft Windows utilise des filtres pour extraire le contenu des éléments à inclure dans un index de texte intégral. Vous pouvez étendre La recherche Windows pour indexer les types de fichiers nouveaux ou propriétaires en écrivant des gestionnaires de filtre pour extraire le contenu et des gestionnaires de propriétés pour extraire les propriétés des fichiers. Les filtres sont associés aux types de fichiers, comme indiqué par des extensions de nom de fichier, des types MIME ou des identificateurs de classe (CLSID). Bien qu’un filtre puisse gérer plusieurs types de fichiers, chaque type fonctionne avec un seul filtre.
Cette rubrique contient les sections suivantes :
- Code natif
- Pratiques de code sécurisées pour Recherche Windows
- Ressources supplémentaires
- Rubriques connexes
Code natif
Dans Windows 7 et versions ultérieures, les filtres écrits en code managé sont explicitement bloqués. Les filtres DOIVENT être écrits dans du code natif en raison de problèmes potentiels de contrôle de version CLR avec le processus dans lequel plusieurs compléments s’exécutent.
Pratiques de code sécurisées pour Recherche Windows
Voici des pratiques d’écriture d’applications sécurisées à utiliser avec Recherche Windows.
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 accorde à l’utilisateur le moindre privilège. 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 linguistiques :
- Si un nouveau gestionnaire de filtres pour un type de fichier est installé 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 filtre est désinstallé. Il n’existe aucun mécanisme pour chaîner les filtres. Par conséquent, le nouveau gestionnaire de filtre est chargé de répliquer toutes les fonctionnalités nécessaires de l’ancien filtre.
- Les IFilters, les analyseurs de mots et les générateurs de données pour Windows Search s’exécutent dans le contexte sécurité locale. Ils doivent être écrits pour gérer les mémoires tampons et s’empiler correctement. Toutes les copies de chaîne doivent avoir des vérifications explicites pour se prémunir 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 par rapport à la taille de la mémoire tampon. Les dépassements de mémoire tampon sont une technique courante d’exploitation du code qui n’applique pas de restrictions de taille de mémoire tampon.
- Les composants IFilter, disjoncteur et stemmer ne doivent jamais appeler la fonction ExitProcess Function ou une API similaire qui met fin à 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 à faible niveau de ressources.
- Codez tous les objets pour qu’ils soient thread-safe. La Recherche Windows appelle n’importe quel instance d’un analyseur de mots ou d’un séparateur de mots 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++, assurez-vous de 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 vérifications de sécurité dans le code compilé. Pour plus d’informations, consultez DllGetClassObject Function /GS (Buffer Security Check) dans la section Options du compilateur Visual C++ du Kit de développement logiciel (SDK) de plateforme.
Ressources supplémentaires
- L’exemple IFilterSample montre comment créer une classe de base IFilter pour implémenter l’interface IFilter .
- Pour obtenir une vue d’ensemble du processus d’indexation, consultez Le processus d’indexation.
- Pour obtenir une vue d’ensemble des types de fichiers, consultez Types de fichiers.
- Pour interroger les attributs d’association de fichiers pour un type de fichier, consultez PerceivedTypes, SystemFileAssociations et Inscription d’application.
Rubriques connexes
-
À propos des gestionnaires de filtres dans Recherche Windows
-
Implémentation de gestionnaires de filtres dans Recherche Windows