Поскольку мне нужно отформатировать «симпатичный» XML с использованием MSXML, я использую трюк , на который здесь ссылаются , чтобы добавить отступы в мой код. Поскольку все, что я хочу - это сохранить файл, я открываю IStream
, используя SHCreateStreamOnFile()
. Файл будет сохранен, я могу открыть его в текстовом редакторе, и там есть содержимое XML. Затем я вызываю Release()
на интерфейсе IStream
, чтобы IStream
и дескриптор файла закрылись.
Или я так и думал, однако Process Explorer говорит мне, что мой процесс все еще имеет ссылку на мой файл после выхода из функции сохранения (несмотря на выпуск). Я попытался вызвать Release()
во второй раз, но все равно ничего не получилось, ручка не закрылась. Все, что Google и MSDN могли сказать мне, это то, что я должен позвонить Release
... Но не ясно, если Release()
освободит только COM-объект или дескриптор файла.
Итак, существует ли особый способ принудительного закрытия дескриптора файла, созданного SHCreateStreamOnFile()
? Или есть лучший способ получить IStream
на файл? Нужно ли звонить Release()
на номера IMXWriter
, ISAXXMLReader
и IStream
в определенном порядке?
Заранее спасибо.