|
- #include <windows.h>
- #include <iphlpapi.h>
- #include <iostream>
- #include <vector>
- #pragma comment(lib, "iphlpapi.lib")
- // 获取所有磁盘的信息
- void GetDrivesInfo() {
- DWORD driveMask = GetLogicalDrives();
- int i = 0;
- while (driveMask != 0) {
- if (driveMask & 1) {
- std::cout << "Drive " << char('A' + i) << ":\\ detected" << std::endl;
- }
- i++;
- driveMask >>= 1;
- }
- }
- // 获取网络适配器信息和IP地址
- void GetNetworkInfo() {
- ULONG outBufLen = sizeof(IP_ADAPTER_INFO);
- PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*)malloc(outBufLen);
- // Make an initial call to GetAdaptersInfo to get the necessary size into the outBufLen variable
- if (GetAdaptersInfo(pAdapterInfo, &outBufLen) == ERROR_BUFFER_OVERFLOW) {
- free(pAdapterInfo);
- pAdapterInfo = (IP_ADAPTER_INFO*)malloc(outBufLen);
- }
- if (GetAdaptersInfo(pAdapterInfo, &outBufLen) == NO_ERROR) {
- PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
- while (pAdapter) {
- std::cout << "Adapter Name: " << pAdapter->AdapterName << std::endl;
- std::cout << "Adapter Desc: " << pAdapter->Description << std::endl;
- for (IP_ADDR_STRING* pIPAddr = &pAdapter->IpAddressList; pIPAddr != NULL; pIPAddr = pIPAddr->Next) {
- std::cout << "IP Address: " << pIPAddr->IpAddress.String << std::endl;
- std::cout << "IP Mask: " << pIPAddr->IpMask.String << std::endl;
- }
- std::cout << "Gateway: " << pAdapter->GatewayList.IpAddress.String << std::endl << std::endl;
- pAdapter = pAdapter->Next;
- }
- }
- if (pAdapterInfo) {
- free(pAdapterInfo);
- }
- }
- int main() {
- std::cout << "Getting drives information..." << std::endl;
- GetDrivesInfo();
- std::cout << "\nGetting network information..." << std::endl;
- GetNetworkInfo();
- return 0;
- }
複製代碼
|
|