CreateFileにOPEN_ALWAYSを渡してファイルを開くのに成功した場合、直後にGetLastErrorを呼び出すと既に存在していたファイルを開いた場合にはERROR_ALREADY_EXISTS、新規に作成した場合には0が返されるはずです。しかし、外部メモリカード上のファイルに対してCreateFileすると常にERROR_ALREADY_EXISTSが返ってきてしまうようです。