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

Function Ext2LoadVolumes

Ext2Mgr/enumDisk.cpp:3398–3487  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3396 */
3397
3398BOOL
3399Ext2LoadVolumes()
3400{
3401 ULONG rc = TRUE;
3402
3403 TCHAR *nameString = NULL;
3404 ULONG nameLen = REGSTR_VAL_MAX_HCID_LEN;
3405
3406 HMACHINE hMachine = NULL;
3407 DEVNODE dnRoot, dnFirst;
3408
3409 DEVINSTID devIds[] = {
3410 "ROOT\\FTDISK\\0000",
3411 "ROOT\\DMIO\\0000",
3412 NULL,
3413 "ROOT\\VOLMGR\\0000",
3414 NULL
3415 };
3416
3417 int i = 0;
3418
3419 if (IsVistaOrAbove()) {
3420 i = 3;
3421 }
3422
3423 nameString = new TCHAR [nameLen];
3424 if (nameString == NULL) {
3425 goto errorout;
3426 }
3427
3428 while (devIds[i] != NULL) {
3429
3430 rc = CM_Locate_DevNode_Ex(&dnRoot, devIds[i],
3431 CM_LOCATE_DEVNODE_NORMAL , hMachine);
3432 if (rc != CR_SUCCESS) {
3433 break;
3434 }
3435
3436 rc = CM_Get_Child_Ex(&dnFirst, dnRoot, 0, hMachine);
3437 if (rc != CR_SUCCESS) {
3438 goto errorout;
3439 }
3440
3441 while (TRUE) {
3442
3443 PEXT2_VOLUME volume = NULL;
3444
3445 nameLen = REGSTR_VAL_MAX_HCID_LEN;
3446 memset(nameString, 0, nameLen);
3447 rc = CM_Get_DevNode_Registry_Property_Ex(
3448 dnFirst, CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME,
3449 NULL, nameString, &nameLen, 0, hMachine);
3450 if (rc != CR_SUCCESS) {
3451 break;
3452 }
3453
3454 if (Ext2InitializeVolume(nameString, &volume)) {
3455

Callers 2

OnInitDialogMethod · 0.85
OnRefreshMethod · 0.85

Calls 2

IsVistaOrAboveFunction · 0.85
Ext2InitializeVolumeFunction · 0.85

Tested by

no test coverage detected