NTSTATUS _stdcall Hk_ZwCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN OPTIONAL PLARGE_INTEGER AllocationSize, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN OPTIONAL PVOID EaBuffer, IN ULONG EaLength )
{
// 伪代码
// 原ObjectAttributes->ObjectName 为Logs\ab.log
// 如果直接改为Logs\xx.log, 调用原程序OK
// 如新建一UNICODE_STRING并改名为Logs\xx.log, 然后ttributes->ObjectName指新建, 调用原程序失败, 0XC000005
// 请教下为什么?
}
------解决思路----------------------
“ttributes->ObjectName”应该是系统创建/分配的空间。
你是不是应该将你的String拷贝到该指针,而不是将该指针指向你分配的地址?