IJournalReader :: ReadFromStream, méthode
Prend un flux dans un fichier de note du journal et retourne un flux de données XML représentant le contenu du document.
Notes
le composant de lecture du journal ne peut pas lire les fichiers journaux Windows créés par des ordinateurs exécutant Windows 7 ou une version ultérieure. L’interface IJournalReader doit être considérée comme dépréciée ou obsolète et ne doit pas être utilisée.
Syntaxe
HRESULT ReadFromStream(
[in] IStream *pJournalFileStream,
[out, retval] IStream **ppXmlStream
);
Paramètres
-
pJournalFileStream [ dans]
-
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éé par la lecture du fichier journal.
Valeur retournée
Si cette méthode est réussie, elle retourne la valeur _ OK. Sinon, elle retourne un code d’erreur HRESULT .
Remarques
Flux sont utilisées 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 d’un gestionnaire pour l’événement Click d’un bouton crée une instance de l’interface d' 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);
}
}
}
}
Configuration requise
| Condition requise | Valeur |
|---|---|
| Client minimal pris en charge |
Windows Applications de bureau XP Édition Tablet PC [ uniquement] |
| Serveur minimal pris en charge |
Aucun pris en charge |
| En-tête |
|
| DLL |
|