| 4934 | |
| 4935 | |
| 4936 | BOOL |
| 4937 | Ext2NotifyVolumePoint( |
| 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 | |
| 4983 | errorout: |
| 4984 | |
| 4985 | return rc; |
| 4986 | } |
| 4987 | |
| 4988 | #define EXT2_MANAGER_NAME "Ext2 Volume Manager" |
| 4989 |
no test coverage detected