IJournalReader::ReadFromStream, méthode
Prend un flux vers un fichier note de journal et retourne un flux XML représentant le contenu du document.
Notes
Le composant Lecteur de journal ne peut pas lire les fichiers journaux Windows créés par des machines exécutant Windows 7 ou version ultérieure. L’interface IJournalReader doit être considérée comme déconseillée ou obsolète et ne doit pas être utilisée.
Syntaxe
HRESULT ReadFromStream(
[in] IStream *pJournalFileStream,
[out, retval] IStream **ppXmlStream
);
Paramètres
-
pJournalFileStream [in]
-
Objet IStream représentant le fichier Journal à lire.
-
ppXmlStream [out, retval]
-
Pointeur vers l’adresse d’un objet IStream qui recevra le flux XML créé en lisant le fichier Journal.
Valeur retournée
Si cette méthode réussit, elle retourne S_OK. Sinon, il retourne un code d’erreur HRESULT .
Notes
Les flux sont utilisés pour éviter l’accès direct au système de fichiers et pour permettre le choix de la méthode d’analyse XML à utiliser.
Exemples
L’exemple suivant de gestionnaire pour l’événement Click d’un bouton crée une instance de l’interface IJournalReader et l’utilise pour lire un fichier Journal existant.
void CJntlReaderMFCDlg::OnBnClickedButton1()
{
IStream* pJntStream;
IStream* pXmlStream;
IJournalReader* pJntReader;
HRESULT hr;
CString szFileName = "";
static char BASED_CODE szFilter[] =
"Journal files (*.jnt)|*.jnt|All files (*.*)|*.*";
CFileDialog* fileDialog = new CFileDialog(TRUE, "*.jnt", NULL,
OFN_FILEMUSTEXIST, szFilter, this);
// Get the filename from the user by using a File Open dialog
if (IDOK == fileDialog->DoModal())
{
szFileName = fileDialog->GetPathName();
// Read a JNT file into a memory buffer
HANDLE hFile = CreateFile(szFileName.GetBuffer(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
// Allocate memory to hold the file contents
DWORD dwFileSize = GetFileSize(hFile, NULL);
HGLOBAL hGlobal = GlobalAlloc(GHND, dwFileSize);
if (hGlobal != NULL)
{
LPBYTE pData = (LPBYTE)GlobalLock(hGlobal);
if (pData != NULL)
{
DWORD dwRead;
// Read the Journal file into the pData buffer
if (ReadFile(hFile, pData, dwFileSize, &dwRead, NULL) && dwRead == dwFileSize)
{
// Create an IStream that points to the buffer
hr = CreateStreamOnHGlobal(hGlobal, FALSE, &pJntStream);
if (SUCCEEDED(hr))
{
// Create a JournalReader object
hr = CoCreateInstance(CLSID_JournalReader, NULL, CLSCTX_ALL,
IID_IJournalReader, (void**)&pJntReader);
if (SUCCEEDED(hr))
{
// Read in the JNT file by using the JournalReader
hr = pJntReader->ReadFromStream(pJntStream, &pXmlStream);
// Display results
if (SUCCEEDED(hr))
{
DisplayXml(pXmlStream);
}
// Clean up
pXmlStream->Release();
pJntReader = NULL;
pJntStream->Release();
}
}
}
GlobalUnlock(hGlobal);
}
GlobalFree(hGlobal);
}
}
}
}
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows XP Édition Tablet PC [applications de bureau uniquement] |
Serveur minimal pris en charge |
Aucun pris en charge |
En-tête |
|
DLL |
|