Você pode obter essas informações de dois lugares: wmic diskdrive e wmic logicdrive - (e, é claro, suas ligações wmi para equivalentes).
A saída do wmic diskdrive - observe as descrições de capacidade e o tipo de mídia
Capacidades disponibilidade BytesPerSector CapabilityDescriptions Caption CompressionMethod ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName DefaultBlockSize Descrição DeviceID ErrorCleared ErrorDescription ErrorMethodology FirmwareRevision Índice InstallDate InterfaceType LastErrorCode Fabricante MaxBlockSize MaxMediaSize MediaLoaded MediaType MinBlockSize Modelo Nome NeedsCleaning NumberOfMediaSupported partições PNPDeviceID PowerManagementCapabilities PowerManagementSupported SCSIBUS SCSILogicalUnit SCSIPort SCSITargetId SectorsPerTrack SerialNumber Assinatura Tamanho Estado StatusInfo SystemCreationClassNameSystemName TotalCylinders TotalHeads TotalSectors TotalTracks TracksPerCylinder
512 {3, 4} {"Acesso aleatório", "Suporta gravação"} Hitachi HDS723030ALA640 0 FALSO Unidade de disco Win32_DiskDrive \\. \ PHYSICALDRIVE0 MKAO 0 IDE (unidades de disco padrão) VERDADEIRO Mídia de disco rígido fixa 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 Android Phone Dispositivo USB 0 FALSO Unidade de disco Win32_DiskDrive \\. \ PHYSICALDRIVE4 0000 4 USB (unidades de disco padrão) TRUE HTC Android Phone Dispositivo 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} {"Acesso aleatório", "Suporta gravação"} Samsung SSD 840 Series 0 FALSE Win32_DiskDrive Unidade de disco \\. \ PHYSICALDRIVE1 DXT0 1 IDE (unidades de disco padrão) TRUE Mídia fixa de disco rígido 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} {"Acesso aleatório", "Suporta gravação"} ST92503010AS 0 FALSO Unidade de disco Win32_DiskDrive \\. \ PHYSICALDRIVE3 0005 3 IDE (unidades de disco padrão) TRUE Mídia fixa de disco rígido 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} {"Acesso aleatório", "Suporta gravação"} FUJITSU MHW2040BH 0 FALSO Win32_DiskDrive Unidade de disco \\. \ PHYSICALDRIVE2 0000 2 IDE (unidades de disco padrão) VERDADEIRO Mídia fixa de disco rígido 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 Android Phone Dispositivo USB 0 FALSO Unidade de disco Win32_DiskDrive \\. \ PHYSICALDRIVE5 0000 5 USB (unidades de disco padrão) TRUE HTC Android Phone Dispositivo USB \\. \ PHYSICALDRIVE5 0 USBSTOR \ DISK & VEN_HTC & PROD_ANDROID_PHONE & REV_0000 \ HT24YTV03821 &1 0 1 0 0 HT24YTV03821 0 OK Win32_ComputerSystem NYX
E aqui, a saída da unidade lógica wmic - descrição aqui é o que interessa principalmente.
Acesso Disponibilidade BlockSize Caption Compressed ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName Descrição DeviceID DriveType ErrorCleared ErrorDescription ErrorMethodology FileSystem FreeSpace InstallDate LastErrorCode MaximumComponentLength MediaType Nome NumberOfBlocks PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProviderName Purpose QuotasDisabled QuotasIncomplete QuotasRebuilding Tamanho Estado StatusInfo SupportsDiskQuotas SupportsFileBasedCompression SystemCreationClassName SystemName VolumeDirty VolumeName VolumeSerialNumber
0 C: FALSO Win32_LogicalDisk Disco Fixo Local C: 3 NTFS 139243769856 255 12 C: 249690058752 FALSO VERDADEIRO Win32_ComputerSystem NYX 24FCB3E2
0 D: FALSO Win32_LogicalDisk Disco Fixo Local D: 3 NTFS 2459783610368 255 12 D: 3000457228288 FALSO VERDADEIRO Win32_ComputerSystem NYX Novo volume C6DFE01A
G: Disco removível Win32_LogicalDisk G: 2 G: Win32_ComputerSystem NYX
H: Disco removível Win32_LogicalDisk H: 2 H: Win32_ComputerSystem NYX
0 P: Disco fixo local do Win32_LogicalDisk P: 3 12 P: Win32_ComputerSystem NYX
0 Y: FALSO Win32_LogicalDisk Disco Fixo Local Y: 3 NTFS 77826355200 255 12 Y: 250057060352 FALSO VERDADEIRO Unidade NYX Win32_ComputerSystem NYX da desgraça iminente CCC0980F
Quanto à origem dessas informações - os próprios discos devem ter essas informações em smart (pelo que posso dizer dos smartmontools, alguns dos valores relatados são diferentes, o ssd não teria tempo de rotação, por exemplo). No linux, o hdparm fornece informações detalhadas, da mesma maneira que o wmic (mas muito mais conveniente)
A unidade removível ou não removível é definida em um sinalizador na unidade - na verdade, é possível alternar com as ferramentas certas.
Em suma, ele pede ao disco