Obtient le flux suivant dans une recherche de flux
#include <WinAPIFiles.au3>
_WinAPI_FindNextStream ( $hSearch, $tData )
$hSearch | Le handle de recherche retourné par un appel précédent à la fonction _WinAPI_FindFirstStream(). |
$tData | Une structure $tagWIN32_FIND_STREAM_DATA, ou un pointeur sur une telle structure, qui reçoit des informations sur le flux trouvé. |
Succès: | Retourne True. |
Échec: | Retourne False et définit @error <> 0, @extended peut contenir le code d'erreur du système. |
Si la fonction échoue parce que plus aucun flux n'est trouvé, @extended contiendra le code d'erreur système ERROR_HANDLE_EOF (38).
Cette fonction nécessite Windows Vista ou une version ultérieure.
Consultez FindNextStreamW 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, $pFSD) 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)