 <p>So you basically want to <em>detect</em> whether a file is an ISO file or not, and not so much check the file, to see if it's valid (e.g. incomplete, corrupted, ...) ?</p> <p>There's no easy way to do that and there certainly is not a C# function (that I know of) that can do this.</p> <p>The best way to approach this is to guess the amount of bytes per block stored in the ISO. Guess, or simply try all possible situations one by one, unless you have an associated CUE file that actually stores this information. PS. If the ISO is accompanied by a same-name .CUE file then you can be 99.99% sure that it's an ISO file anyway.</p> <p>Sizes would be 2048 (user data) or 2352 (raw or audio) bytes per block. Other sizes are possible as well !!!! I just mentioned the two most common ones. In case of 2352 bytes per block the user data starts at an offset in this block. Usually 16 or 24 depending on the Mode.</p> <p>Next I would try to detect the CD/DVD file-systems. Assume that the image starts at sector 0 (although you could for safety implement a scan that assumes -150 to 16 for instance).</p> <p>You'll need to look into specifics of ISO9660 and UDF for that. Sectors 16, 256 etc. will be interesting sectors to check !!</p> <p>Bottom line, it's not an easy task to do and you will need to familiarize yourself with optical disc layouts and optical disc file-systems (ISO9660, UDF but possibly also HFS and even FAT on BD).</p> <p>If you're digging into this I strongly suggest to get IsoBuster (<a href="http://www.isobuster.com" rel="nofollow">www.isobuster.com</a>) to help you see what the size per block is, what file systems there are, to inspect the different key blocks etc.</p>