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

Function Ext2NotifyVolumePoint

Ext2Mgr/enumDisk.cpp:4936–4986  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4934
4935
4936BOOL
4937Ext2NotifyVolumePoint(
4938 PEXT2_VOLUME volume,
4939 UCHAR drvChar
4940 )
4941{
4942 PEXT2_LETTER letter;
4943 UCHAR mounted = 0;
4944 BOOL rc = FALSE;
4945 PCHAR Name = NULL;
4946
4947 drvChar = (UCHAR)toupper(drvChar);
4948 letter = &drvLetters[drvChar - 'A'];
4949
4950 if (volume->Part) {
4951 Name = &volume->Part->Name[0];
4952 } else {
4953 Name = &volume->Name[0];
4954 }
4955
4956 /* do drive update */
4957 if (Ext2IsDrvLetterAvailable(drvChar))
4958 Ext2UpdateDrvLetter(letter, Name);
4959
4960 rc = Ext2VolumeArrivalNotify(Name);
4961
4962 Sleep(500);
4963
4964 mounted = Ext2QueryMountPoint(Name);
4965 if (mounted) {
4966 rc = TRUE;
4967 goto errorout;
4968 }
4969
4970 if (!Ext2IsDrvLetterAvailable(drvChar)) {
4971 drvChar = Ext2GetFirstAvailableDrvLetter();
4972 if ((drvChar|0x20) >= 'a' && (drvChar | 0x20) <= 'z') {
4973 letter = &drvLetters[drvChar - 'A'];
4974 } else {
4975 letter = NULL;
4976 }
4977 }
4978
4979 if (letter) {
4980 rc = Ext2AssignDrvLetter(letter, Name, FALSE);
4981 }
4982
4983errorout:
4984
4985 return rc;
4986}
4987
4988#define EXT2_MANAGER_NAME "Ext2 Volume Manager"
4989

Callers 1

Ext2MountingVolumesFunction · 0.85

Calls 6

Ext2IsDrvLetterAvailableFunction · 0.85
Ext2UpdateDrvLetterFunction · 0.85
Ext2VolumeArrivalNotifyFunction · 0.85
Ext2QueryMountPointFunction · 0.85
Ext2AssignDrvLetterFunction · 0.70

Tested by

no test coverage detected