Could be the Dirty Bit.
Sometimes when a drive is disconnected without safely removing a file becomes corrupted and Windows flags the drive as "unreliable" (so to speak) by setting a single hex value for the drive as "dirty". Thus "the dirty bit".
To check if this is so, open an elevated Command Prompt and then type " fsutil dirty query m: " (with m being the drive letter for the external drive. This will tell you if the drive is marked dirty.
If it is, then do this: open the Command Prompt and type: " CHKNTFS /X m:
" . This will tell Windows NOT to check the drive on the next restart. Then manually restart the computer (keep the external connected).
You should get into Windows without an messages about the drive.
Once in Windows, now run chkdsk on the drive. At the Command Prompt type: " Chkdsk /f /r m: "
. Chkdsk should go through all 5 stages of it's test.
When it's done then check the disk by running " fsutil dirty query m: " again. If all went well the Windows will confirm that the dirty bit is not set on that drive.
Sometimes chkdsk can not reset the bit. In than case you can go nuclear and copy all the files off the drive and then format it (that will definitely reset the bit).
Or you can do something like this with a Hex Editor: Manually Reset or Clear Dirty Bit in Windows without CHKDSK
I hope that helps. All this was based on your post title!