Comment Windows peut-il savoir si un lecteur connecté à un PC est un lecteur de disque dur, un lecteur SSD ou un lecteur de disque flash?

2

Quelqu'un peut-il expliquer techniquement comment Windows identifie le type de lecteur connecté à un ordinateur?

Je pose cette question parce que je suis sur le point de créer un programme qui écrit uniquement des données dans un type spécifique de lecteur de stockage ... et je suis curieux de savoir comment cela se passe en coulisse.

ducktapes
la source
Voulez-vous savoir comment Windows obtient le type de lecteur ou voulez-vous savoir comment vous (programme) pouvez détecter le type de lecteur?
Werner Henze
Je voulais juste savoir comment Windows procédait techniquement à l’identification complète du disque.
ducktapes

Réponses:

2

Vous pouvez obtenir ces informations à deux endroits: wmic diskdrive et wmic logicaldrive - (et bien sûr, leurs liaisons wmi pour des équivalents).

La sortie de wmic diskdrive - notez les descriptions des capacités et le type de média

Disponibilité BytesPerSector Capacités CapabilityDescriptions Légende CompressionMethod ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName DefaultBlockSize Description de DeviceID ErrorCleared ErrorDescription ErrorMethodology FirmwareRevision Index InstallDate InterfaceType LastErrorCode Fabricant MaxBlockSize MaxMediaSize MediaLoaded MediaType MinBlockSize Modèle Nom NeedsCleaning NumberOfMediaSupported Partitions PNPDeviceID PowerManagementCapabilities PowerManagementSupported Busscsi SCSILogicalUnit SCSIPort SCSITargetId SectorsPerTrack SerialNumber Signature Taille Statut StatusInfo SystemCreationClassNameSystemName TotalCylinders TotalHeads TotalSectors TotalTracks TracksPerCylinder  
              512 {3, 4} {"Accès aléatoire", "Prise en charge de l'écriture"} Hitachi HDS723030ALA640 0 FALSE Win32_DiskDrive Lecteur de disque \\. \ PHYSICALDRIVE0 MKAO 0 IDE (lecteurs de disque standard) TRUE Support de disque dur fixe Hitachi HDS723030ALA640 \ PHYSICALDRIVE0 1 IDE \ DISKHITACHI_HDS723030ALA640 _________________ MKAOAA10 \ 4 & 15828421 & 0 & 0.0.0 0 0 0 0 63 KM3010HYNKXXGW 3000590369280 OK Win32_ComputerSystem NYX 364801 255 5860528065 93024255 255                
                                                                                   HTC Téléphone Android Périphérique USB 0 FALSE Win32_DiskDrive Lecteur de disque \\. \ PHYSICALDRIVE4 0000 4 USB (Disques standard) TRUE HTC Téléphone Android Périphérique USB \\. \ PHYSICALDRIVE4 0 USBSTOR \ DISK & VEN_HTC & PROD_ANDROID_PHONE & REV_0000 \ HT24YTV03821 &0 0 0 0 0 HT24YTV03820 0 OK Win32_ComputerSystem NYX                                                                                   
              512 {3, 4} {"Accès aléatoire", "Prise en charge de l'écriture"} Samsung SSD 840 Series 0 FALSE Win32_DiskDrive Lecteur \\. \ PHYSICALDRIVE1 DXT0 1 IDE (lecteurs de disque standard) TRUE Support de disque dur fixe Samsung SSD 840 Series \\ . \ PHYSICALDRIVE1 2 IDE \ DISKSAMSUNG_SSD_840_SERIES __________________ DXT08B0Q \ 4 & 15828421 & 0 & 0.1.0 0 0 0 1 63 1SG4ENCA4A8251 J 3142097946 250056737280 OK Win32_ComputerSystem NYX 30401 255 488392065 7752255 255                
              512 {3, 4} {"Accès aléatoire", "Prise en charge de l'écriture"} ST92503010AS 0 FALSE Win32_DiskDrive Lecteur de disque \\. \ PHYSICALDRIVE3 0005 3 IDE (lecteurs de disque standard) TRUE Support de disque dur fixe ST92503010AS \\. PHYSICALDRIVE3 1 IDE \. DISKST92503010AS ____________________________ 0005LVM1 \ 4 & 15828421 & 0 & 0.3.0 0 0 0 3 63 Y50HBBJ8 1668369528 250056737280 OK Win32_ComputerSystem NYX 30401 255 488392065 7752255 255                
              512 {3, 4} {"Accès aléatoire", "Prise en charge de l'écriture"} FUJITSU MHW2040BH 0 FALSE Lecteur de disque Win32_DiskDrive \\. \ PHYSICALDRIVE2 0000 2 IDE (lecteurs de disque standard) TRUE Support de disque dur fixe FUJITSU MHW2040BH \\. \ PHYSICALDRIVE2 2 IDE \ DISKFUJITSU_MHW2040BH _______________________ 0000001C \ 4 & 15828421 & 0 & 0.2.0 0 0 0 2 63 1KX07T2B57FL 976588 40007761920 OK Win32_ComputerSystem NYX 4864 255 78140160 1240320 255                
                                                                                   HTC Téléphone Android Périphérique USB 0 FALSE Win32_DiskDrive Lecteur de disque \\. \ PHYSICALDRIVE5 0000 5 USB (unités de disque standard) TRUE HTC Téléphone Android Périphérique USB \\. \ PHYSICALDRIVE5 0 USBSTOR \ DISK & VEN_HTC & PROD_ANDROID_PHONE & REV_0000 \ HT24YTV03821 &1 0 1 0 0 HT24YTV03821 0 OK Win32_ComputerSystem NYX                                                                                   

Et ici, la sortie du lecteur logique wmic - description est ce qui est principalement intéressant.

Accès Disponibilité BlockSize Légende compressé ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName Description de DeviceID DriveType ErrorCleared ErrorDescription ErrorMethodology FileSystem FreeSpace InstallDate LastErrorCode MaximumComponentLength MediaType Nom NumberOfBlocks PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProviderName Objet QuotasDisabled QuotasIncomplete QuotasRebuilding Taille Statut StatusInfo SupportsDiskQuotas SupportsFileBasedCompression SystemCreationClassName SystemName VolumeDirty VolumeName VolumeSerialNumber  
0 C: Disque fixe local FALSE Win32_LogicalDisk C: 3 NTFS 139243769856 255 12 C: 249690058752 FALSE TRUE Système Win32_ComputerSystem NYX 24FCB3E2            
0 D: FALSE Win32_LogicalDisk Disque fixe local D: 3 NTFS 2459783610368 255 12 D: 3000457228288 FALSE TRUE Win32_ComputerSystem NYX Nouveau volume C6DFE01A            
                                 G: Disque amovible Win32_LogicalDisk G: 2 G: Win32_ComputerSystem NYX                                                                   
                                 H: Disque amovible Win32_LogicalDisk H: 2 H: Win32_ComputerSystem NYX                                                                   
0 Q: Disque fixe local Win32_LogicalDisk Q: 3 12 Q: Win32_ComputerSystem NYX                                                                   
0 Y: FALSE Disque fixe local Win32_LogicalDisk Y: 3 NTFS 77826355200 255 12 Y: 250057060352 FALSE TRUE Lecteur Win32_ComputerSystem NYX du destin imminent CCC0980F            

En ce qui concerne l'origine de ces informations, les disques eux-mêmes doivent les intégrer à smart (d'après ce que je peux dire de smartmontools, certaines des valeurs rapportées sont différentes, par exemple, les disques SSD n'auraient pas de temps de rotation.) Sur linux, hdparm vous donne des informations détaillées, de la même manière que wmic le ferait (mais beaucoup plus facilement)

Le lecteur amovible ou non amovible est défini sur un drapeau sur le lecteur - il est en fait commutable avec les bons outils.

En bref, il demande au disque

Compagnon Geek
la source
VID / PID ne jouerait-il pas un rôle? Je pense que c’est ainsi que le système d’exploitation trouve les bons pilotes pour un périphérique et ce que c’est, non? Convenez que les clés USB ont un bit identifié qui indique au système d’exploitation qu’il s’agit d’un stockage amovible.
Carl B
En fait, je travaille actuellement sur ma réponse à travers des outils dont je sais qu’ils fonctionnent. En outre, vous devez comparer le VID / PID à une liste connue. Il est donc plus judicieux d’utiliser les données du lecteur lui-même pour des périphériques semi-génériques inconnus.
Journeyman Geek
Merci d'avoir répondu. La seule chose qui me semble délicate ici est de savoir comment Windows pourrait déterminer si mon disque local est un disque dur ou un disque SSD.
ducktapes
Je ne pense pas que Windows le fasse - il n'en aurait pas besoin. Ce qui est plus important, ce sont les commandes qu’il prend en charge (comme trim), qui peuvent être interrogées à l’aide du jeu de commandes ATA je crois
Journeyman Geek
1

Eh bien, voici les détails techniques:

Windows 7 détecte les disques SSD à l'aide du mot d'identification ATA8-ACS 217: Taux de rotation nominal des supports, avec la valeur 0001h comme support non rotatif, comme les périphériques SSD. Cependant, tous les disques SSD ne sont pas conformes à la section 7.16.7.77 de la spécification ATA8-ACS1. Certains peuvent nécessiter des mises à jour du microprogramme.

La source

La documentation canonique est disponible ici (PDF) page 175. En tant que tel, il s'agit d'un champ obligatoire non lié à SMART.

Daniel B
la source