谁负责删除FILE_NOTIFY_INFORMATION.文件名

Who is responsible for deleting FILE_NOTIFY_INFORMATION.FileName?

本文关键字:NOTIFY 文件名 INFORMATION FILE 删除      更新时间:2023-10-16

Winapi的ReadDirectoryChanges使用FILE_NOTIFY_INFORMATION来呈现它的结果。结构如下所示:

typedef struct _FILE_NOTIFY_INFORMATION {
  DWORD NextEntryOffset;
  DWORD Action;
  DWORD FileNameLength;
  WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;

如果我让这个结构由 winapi 填充,如何正确删除FileName WCHAR*?我必须删除它吗?

ReadDirectoryChanges中没有一个示例(不是有很多示例(提到删除任何内容。当然,Microsoft根本没有提供任何示例。

如果使用malloc则需要在使用完对象后调用free

例如:

DWORD FileNameLength = 100;
PFILE_NOTIFY_INFORMATION file_notify_info = (PFILE_NOTIFY_INFORMATION)malloc(FIELD_OFFSET(FILE_NOTIFY_INFORMATION, FileName[FileNameLength]));
free(file_notify_info);

请参阅"为什么某些结构以大小为 1 的数组结尾?