MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2LoadRemovableVolumes

Function Ext2LoadRemovableVolumes

Ext2Mgr/enumDisk.cpp:3489–3594  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3487}
3488
3489BOOL
3490Ext2LoadRemovableVolumes()
3491{
3492 BOOL rc = FALSE;
3493 HDEVINFO devInfo = INVALID_HANDLE_VALUE;
3494 PSP_DEVICE_INTERFACE_DETAIL_DATA ifDetail = NULL;
3495 SP_DEVICE_INTERFACE_DATA ifData;
3496
3497 PCHAR nameString;
3498 int nInterface = 0;
3499
3500 if (IsVistaOrAbove()) {
3501 return TRUE;
3502 }
3503
3504 nameString = (PCHAR)malloc(REGSTR_VAL_MAX_HCID_LEN);
3505 if (nameString == NULL) {
3506 goto errorout;
3507 }
3508
3509 ifDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(PAGE_SIZE);
3510 if (ifDetail == NULL) {
3511 goto errorout;
3512 }
3513
3514 devInfo = SetupDiGetClassDevs(
3515 &VolumeClassGuid, NULL, NULL,
3516 DIGCF_PRESENT | DIGCF_DEVICEINTERFACE
3517 );
3518 if (devInfo == INVALID_HANDLE_VALUE) {
3519 goto errorout;
3520 }
3521
3522 while (TRUE) {
3523
3524 BOOL bFound = FALSE;
3525
3526 ifData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
3527 bFound = SetupDiEnumDeviceInterfaces(
3528 devInfo,
3529 NULL,
3530 &VolumeClassGuid,
3531 (ULONG)nInterface++,
3532 &ifData);
3533 if (!bFound) {
3534 break;
3535 }
3536
3537 memset(ifDetail, 0, PAGE_SIZE);
3538 ifDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
3539 if (SetupDiGetInterfaceDeviceDetail(
3540 devInfo,
3541 &ifData,
3542 ifDetail,
3543 PAGE_SIZE,
3544 NULL,
3545 NULL)) {
3546

Callers 2

OnInitDialogMethod · 0.85
OnRefreshMethod · 0.85

Calls 2

IsVistaOrAboveFunction · 0.85
Ext2InitializeVolumeFunction · 0.85

Tested by

no test coverage detected