�num�re le premier flux avec un type de flux ::$DATA dans le fichier ou le r�pertoire sp�cifi�
#include <WinAPIFiles.au3>
_WinAPI_FindFirstStream ( $sFilePath, $tData )
$sFilePath | Le nom du fichier complet. |
$tData | Une structure $tagWIN32_FIND_STREAM_DATA, ou un pointeur sur une telle structure, qui re�oit des informations sur le flux. |
Succ�s: | Retourne le handle de recherche. |
�chec: | Retourne 0 et d�finit @error <> 0, @extended peut contenir le code d'erreur du syst�me. |
Cette fonction ouvre le handle de recherche et retourne des informations sur le premier flux dans le fichier ou le r�pertoire sp�cifi�.
Pour les fichiers, le premier flux est toujours le flux de donn�es par d�faut, "::$DATA".
Apr�s la mise en place du handle de recherche, vous pouvez l'utiliser dans la fonction _WinAPI_FindNextStream() pour rechercher d'autres flux dans le fichier ou le r�pertoire sp�cifi�.
Si la fonction �choue car aucun flux ne peut �tre trouv�, @extended contiendra le code d'erreur syst�me ERROR_HANDLE_EOF (38).
Lorsque le handle de la recherche n'est plus utile, il doit �tre ferm� � l'aide de la fonction _WinAPI_FindClose().
Cette fonction n�cessite Windows Vista ou une version ult�rieure.
_WinAPI_FindClose, _WinAPI_FindNextStream
Consultez FindFirstStreamW dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <WinAPIError.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WinAPIMem.au3> #include <WinAPIMisc.au3> #include <WinAPIShPath.au3> Local Const $sTempFile = @TempDir & '\Test.txt' ; V�rifie le syst�me de fichiers NTFS If StringCompare(DriveGetFileSystem(_WinAPI_PathStripToRoot($sTempFile)), 'NTFS') Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Le fichier doit se trouver sur un volume avec un syst�me de fichier NTFS.') Exit EndIf Local $sName, $iBytes, $pData, $hFile ; Cr�e un fichier texte avec trois flux alternatifs nomm�s AS1, AS2, AS3 For $i = 0 To 3 If $i Then $pData = _WinAPI_CreateString('Flux Alternatif ' & $i) $sName = ':AS' & $i Else $pData = _WinAPI_CreateString('Flux principal') $sName = '' EndIf $hFile = _WinAPI_CreateFile($sTempFile & $sName, 1, 4) _WinAPI_WriteFile($hFile, $pData, _WinAPI_GetMemorySize($pData) - 2, $iBytes) _WinAPI_CloseHandle($hFile) _WinAPI_FreeMemory($pData) Next ; �num�re tous les flux existants dans le fichier et lit les donn�es texte de chaque flux $pData = _WinAPI_CreateBuffer(1024) Local $tFSD = DllStructCreate($tagWIN32_FIND_STREAM_DATA) Local $hSearch = _WinAPI_FindFirstStream($sTempFile, $tFSD) Local $iSize While @error = 0 $sName = DllStructGetData($tFSD, 'StreamName') $iSize = DllStructGetData($tFSD, 'StreamSize') $hFile = _WinAPI_CreateFile($sTempFile & $sName, 2, 2, 6) _WinAPI_ReadFile($hFile, $pData, $iSize, $iBytes) _WinAPI_CloseHandle($hFile) ConsoleWrite(StringFormat('%10s (%s bytes) - %s', $sName, $iSize, _WinAPI_GetString($pData)) & @CRLF) _WinAPI_FindNextStream($hSearch, $tFSD) WEnd Switch @extended Case 38 ; ERROR_HANDLE_EOF Case Else MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended)) EndSwitch _WinAPI_FindClose($hSearch) _WinAPI_FreeMemory($pData) FileDelete($sTempFile)