1

我想使用文件的现有句柄或文件 ID 打开文件的备用数据流。我找到的唯一方法是使用全名(文件名 + ADS 名称)。我害怕文件在操作过程中被重命名。

有没有办法做到这一点?

4

1 回答 1

2

这很容易用NtOpenFileorNtCreateFile

例如打开现有的 ADShFile

NTSTATUS OpenADS(PHANDLE FileHandle, ACCESS_MASK DesiredAccess, HANDLE hFile, PCWSTR Name)
{
    IO_STATUS_BLOCK iosb;
    UNICODE_STRING ObjectName;
    RtlInitUnicodeString(&ObjectName, Name);
    OBJECT_ATTRIBUTES oa = { sizeof(oa), hFile, &ObjectName };
    return NtOpenFile(FileHandle, DesiredAccess, &oa, &iosb, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT);
}

类似的Name东西L":test_stream"(以 开头:

于 2017-09-10T14:45:27.810 回答