从文件句柄或文件 ID 打开备用数据流 (ADS)
Open Alternate Data Stream (ADS) from file handle or file ID
我想使用文件的现有句柄或使用文件 ID 打开文件的备用数据流。我找到的唯一方法是全名(文件名 + ADS 名称)。
怕操作过程中文件被重命名
有办法吗?
这很容易做到 NtOpenFile
or NtCreateFile
例如在 hFile
上打开现有 ADS
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"
(以 :
开头)
我想使用文件的现有句柄或使用文件 ID 打开文件的备用数据流。我找到的唯一方法是全名(文件名 + ADS 名称)。 怕操作过程中文件被重命名
有办法吗?
这很容易做到 NtOpenFile
or NtCreateFile
例如在 hFile
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"
(以 :
开头)