C 使用FindFirstStreamMW查找具有Zone.Identifier的文件
好的,我正在尝试写一些东西,可以扫描文件夹,识别带有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
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 );