Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
DoStorageEnum.h
Package: GetHardDiskId.rar [view]
Upload User: posgewe
Upload Date: 2022-07-05
Package Size: 164k
Code Size: 2k
Category:
Windows Kernel
Development Platform:
Visual C++
- #if !defined(DO_STORAGE_ENUM_H__)
- #define DO_STORAGE_ENUM_H__
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include <winioctl.h>
- #include <objbase.h>
- #include <initguid.h>
- #include <setupapi.h>
- // IOCTL控制码
- #define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
- // 存储设备的总线类型
- typedef enum _STORAGE_BUS_TYPE {
- BusTypeUnknown = 0x00,
- BusTypeScsi,
- BusTypeAtapi,
- BusTypeAta,
- BusType1394,
- BusTypeSsa,
- BusTypeFibre,
- BusTypeUsb,
- BusTypeRAID,
- BusTypeMaxReserved = 0x7F
- } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
- // 查询存储设备属性的类型
- typedef enum _STORAGE_QUERY_TYPE {
- PropertyStandardQuery = 0, // 读取描述
- PropertyExistsQuery, // 测试是否支持
- PropertyMaskQuery, // 读取指定的描述
- PropertyQueryMaxDefined // 验证数据
- } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
- // 查询存储设备还是适配器属性
- typedef enum _STORAGE_PROPERTY_ID {
- StorageDeviceProperty = 0, // 查询设备属性
- StorageAdapterProperty // 查询适配器属性
- } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
- // 查询属性输入的数据结构
- typedef struct _STORAGE_PROPERTY_QUERY {
- STORAGE_PROPERTY_ID PropertyId; // 设备/适配器
- STORAGE_QUERY_TYPE QueryType; // 查询类型
- UCHAR AdditionalParameters[1]; // 额外的数据(仅定义了象征性的1个字节)
- } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
- // 查询属性输出的数据结构
- typedef struct _STORAGE_DEVICE_DESCRIPTOR {
- ULONG Version; // 版本
- ULONG Size; // 结构大小
- UCHAR DeviceType; // 设备类型
- UCHAR DeviceTypeModifier; // SCSI-2额外的设备类型
- BOOLEAN RemovableMedia; // 是否可移动
- BOOLEAN CommandQueueing; // 是否支持命令队列
- ULONG VendorIdOffset; // 厂家设定值的偏移
- ULONG ProductIdOffset; // 产品ID的偏移
- ULONG ProductRevisionOffset; // 产品版本的偏移
- ULONG SerialNumberOffset; // 序列号的偏移
- STORAGE_BUS_TYPE BusType; // 总线类型
- ULONG RawPropertiesLength; // 额外的属性数据长度
- UCHAR RawDeviceProperties[1]; // 额外的属性数据(仅定义了象征性的1个字节)
- } STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
- // 函数
- int GetDevicePath(LPGUID lpGuid, LPTSTR* pszDevicePath);
- HANDLE OpenDevice(LPCTSTR pszDevicePath);
- BOOL GetDriveGeometry(HANDLE hDevice, PDISK_GEOMETRY pGeometry);
- BOOL GetDriveProperty(HANDLE hDevice, PSTORAGE_DEVICE_DESCRIPTOR pDevDesc);
- #endif // !defined(DO_STORAGE_ENUM_H__)