Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用FindFirstStreamMW查找具有Zone.Identifier的文件_C_Windows_Alternate Data Stream - Fatal编程技术网

C 使用FindFirstStreamMW查找具有Zone.Identifier的文件

C 使用FindFirstStreamMW查找具有Zone.Identifier的文件,c,windows,alternate-data-stream,C,Windows,Alternate Data Stream,好的,我正在尝试写一些东西,可以扫描文件夹,识别带有Zone.Identifier标记的文件,并删除标记(希望如此)。 我一直在想办法,我正在尝试几种不同的方法 我有一个使用BackupRead()等的函数,但是我对这类事情有点新手,虽然我用这个方法找到了流,但我希望使用FindFirstStreamW()让生活更轻松,或者至少从总体上了解更多 以下是我第一次尝试使用此功能: int StreamsFunctionAlt ( LPCTSTR lpFileName ) { LP

好的,我正在尝试写一些东西,可以扫描文件夹,识别带有Zone.Identifier标记的文件,并删除标记(希望如此)。 我一直在想办法,我正在尝试几种不同的方法

我有一个使用
BackupRead()
等的函数,但是我对这类事情有点新手,虽然我用这个方法找到了流,但我希望使用
FindFirstStreamW()
让生活更轻松,或者至少从总体上了解更多

以下是我第一次尝试使用此功能:

int
StreamsFunctionAlt (
   LPCTSTR     lpFileName )
{
   LPVOID               lpFindStreamData;
   HANDLE               hFindStream;
   STREAM_INFO_LEVELS   InfoLevel;
   DWORD                dwFlags;
   HANDLE               hFile;

    if ( !FileExists ( lpFileName ))
    {
       return 1;
    }

   lpFindStreamData = NULL;
   InfoLevel = 0;
   dwFlags = 0;

   hFindStream = FindFirstStreamW ( lpFileName,
                                    InfoLevel,
                                    lpFindStreamData,
                                    dwFlags );
   if ( !hFindStream == INVALID_HANDLE_VALUE )
   {
      FindNextStreamW ( hFindStream,
                        lpFindStreamData );
   }

   FindClose ( hFindStream );
   return 0;
}
我看到的是
lpFindStreamData
设置为
NULL
并保持
NULL
FindFirstStreamW()
lpFileName
是正确的文件名,是指向具有备用流的文件的路径


如前所述,我是一名新手,不熟悉C,也不熟悉windows API,因此如果我不正确地使用它,犯了一些令人尴尬的愚蠢错误,或者您认为我弄错了,请告诉我。

第二个参数指定了第三个参数的类型。在这种情况下,唯一的信息级别是FindStreamInfoStandard,它指定数据参数应为WIN32_FIND_STREAM_数据。

不会为您分配缓冲区。您必须自己分配缓冲区并向其传递指针:

WIN32_FIND_STREAM_DATA findStreamData;

hFindStream = FindFirstStreamW (lpFileName,
                                InfoLevel,
                                &findStreamData,
                                dwFlags );