Application ou périphérique qui utilise l’interface NVMe ne fonctionne pas correctement dans Windows 8.1 ou R2 de Windows Server 2012

Symptômes

Examinons les scénarios suivants.

Scénario 1

  • Vous installez une application qui utilise le code de contrôle de périphérique IOCTL_SCSI_PASS_THROUGH sur un ordinateur qui exécute Windows 8.1 ou Windows Server 2012 R2.

  • L’application envoie des commandes de lecture ou d’écriture à l’aide du mécanisme de SCSI directe à l’interface Non Volatile mémoire Express (NVMe). Le composant pour l’interface NVMe dans Windows est Stornvme.sys.

  • La taille de la mémoire tampon n’est pas un multiple de la taille de secteur.

Dans ce scénario, une altération des données se produit.

Scénario 2

Supposons que vous installez un périphérique NVMe sur un ordinateur basé sur Windows Server 2012 R2 ou Windows 8.1. Lorsque le périphérique NVMe signale un problème d’état de santé ou d’un état de problème de Self-Monitoring, Analysis et Reporting technologie SMART () à l’aide de l’événement asynchrone, de nombreux événements Async servent inattendue.

Cause

Scénario 1

Ce problème se produit parce que le dispositif de NVMe et de la prise en charge de StorNVMe interface Page physique à la région (PRP) répertorie uniquement pour les données des opérations de transfert.

Lorsque Windows exécute une opération de transfert de données, le périphérique reçoit une mémoire à partir d’adresses et le nombre de secteurs qui est transféré. Par conséquent, lorsque la taille de mémoire tampon de données n’est pas un multiple de la taille de secteur, lecture et écriture commandes ne fonctionnent pas correctement. Plus spécifiquement, lire commandes entraînent le périphérique transférer davantage de données que la taille de mémoire tampon de données, et commandes d’écriture du périphérique d’écrire sur le disque avec des données de mémoire de noyau aléatoires dans la mémoire tampon de données.

Remarque  Contrairement aux autres protocoles de périphérique qui prend en charge les listes de Scatter/Gather ont des longueurs de mémoire tampon en octets, la liste PRP pour le transfert de données ne sait que le nombre de secteurs à transférer. Par conséquent, StorNVMe convertit la taille de transfert de données à une taille de secteur.

Scénario 2

Ce problème se produit car le pilote Stornvme.sys efface le rapport lorsque le périphérique NVMe génère l’événement SMART Async. Par conséquent, le périphérique est dans une boucle de l’envoi d’un événement asynchrone si l’état de santé du contrôleur ne change pas.

Résolution

Informations de mise à jour

Pour résoudre ce problème, installez le correctif cumulatif de mise à jour 2887595. Pour plus d’informations sur l’obtention de ce package de correctifs de mise à jour, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

Windows RT 8.1, 8.1 de Windows et Windows Server 2012 R2 cumulatif : novembre 2013

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations

Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

Description terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×