Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用Windows函数ReadFile()后,实际文件数据存储在哪里?_C#_C++_Ntfs - Fatal编程技术网

C# 调用Windows函数ReadFile()后,实际文件数据存储在哪里?

C# 调用Windows函数ReadFile()后,实际文件数据存储在哪里?,c#,c++,ntfs,C#,C++,Ntfs,我正在使用Windows API函数ReadFile()读取系统元文件。但我所困惑的是如何实际处理从该函数返回的数据。我假设它存储在lpBuffer参数中,我需要解码该缓冲区的内容以解释实际数据 我正在运行Windows 10,并使用C#进行互操作调用 这是我的包装纸: [DllImport("kernel32", CharSet = CharSet.Auto)] public static extern bool ReadFile(SafeFileHandle hFile, IntPtr lp

我正在使用Windows API函数ReadFile()读取系统元文件。但我所困惑的是如何实际处理从该函数返回的数据。我假设它存储在lpBuffer参数中,我需要解码该缓冲区的内容以解释实际数据

我正在运行Windows 10,并使用C#进行互操作调用

这是我的包装纸:

[DllImport("kernel32", CharSet = CharSet.Auto)]
public static extern bool ReadFile(SafeFileHandle hFile, IntPtr lpBuffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, ref NativeOverlapped lpOverlapped);
这是我的电话:

NativeMethods.ReadFile(_volumeHandle, (IntPtr)buffer, (uint)len, out read, ref overlapped)
//do something with the buffer???

调用后缓冲区中包含的数据是指向int的指针—这是我所期望的—但实际文件数据在哪里?

您需要提供缓冲区。请参见

lpbuffer应指向需要分配的实际缓冲区。。。您应该将其更改为
byte[]
,并将
nNumberOfBytesToRead
指向您已读取的大小?为什么不简单地使用C#facility读取文件?@NeilButterworth,因为我正在尝试读取$SECURE文件,这是一个NTFS元文件。尝试使用C#函数(如File.ReadAllBytes())打开此文件返回访问拒绝错误……即使当我作为管理员登录到我的机器中并运行我的IDE时,管理员的权限也会提高。C++不具有C特权不具有的特殊特权。我将初始化缓冲区传递给函数调用:Unut-BuffelSt=(Environment.OSVersion.Version.Major>=6?256u:64u)*1024;字节[]数据=新字节[bufferSize];固定(字节*buffer=数据)