Насколько я понимаю, права доступа и блокировки одни для всех потоков в файле. Поэтому система может отказать в доступе к потоку.
Чтобы два приложения могли работать с одним файлом, надо в них аккуратно указывать параметры dwDesiredAccess и dwShareMode в вызове CreateFile.
Например, если оба приложения откроют файл с такими параметрами, то они оба смогут писать и читать этот файл.
CreateFile("myfile.dat:myattributes", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, ...);
Рекомендую еще почитать статью IPropertySetStorage-NTFS File System Implementation
http://msdn2.microsoft.com/en-us/library/aa363858.aspx. Там немного и про блокировки написано. Если COM нравится больше, чем Win32 API, то лучше пользоваться IPropertySetStorage. Посмотреть можно в Проводнике, правой кнопкой на файле Word-а или Excel-я, выбрать Свойства, закладка Особые.