Yes you are right. You can consider like that.
You need to read your file content into a buffer (partially or as a whole). Then you call IStream::Write().
#define BUFFERSIZE 4096 // (edit)
unsigned char * pBuffer = new unsigned char [BUFFERSIZE];
HANDLE hFile = CreateFile(pszFileName, ...);
DWORD dwRead = 0;
ULONG ulWritten = 0;
do
{
if(!ReadFile(hFile, pBuffer, BUFFERSIZE, &dwRead, NULL))
break;
if(0 == dwRead)
break;
pStream->Write(pBuffer, dwRead, &ulWritten);
} while(BUFFERSIZE == dwRead);
CloseFile(hFile);
delete [] pBuffer;