我无法读取 mft 并将 VB.net 转换为 C
I can't read mft and convert VB.net to C
我尝试将vb.net源代码转换为C。它的目的是向我展示我的硬盘是ntfs。
据说读取MFT并可以比较第三个字节,如果是78个小数(n)和84(t),等等...返回0的" true",但我做不到;我的代码不起作用。
我该如何修复?
vb.net:
Public Function IsNFTSDrive(ByVal strDrive As String) As Boolean
Dim Hnd As Integer, nRead As Integer
Dim ret As UInt32
Dim Buffer(1024) As Byte
Hnd = CreateFile("\." & Mid(strDrive, 1, 2), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, _
Nothing, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL Or FILE_FLAG_OVERLAPPED, IntPtr.Zero)
If (Hnd <> INVALID_HANDLE_VALUE) Then
ret = ReadFile(Hnd, Buffer, 1024, nRead, New System.Threading.NativeOverlapped)
Else
Return False
End If
If ret = 0 Then
ret = WaitForSingleObject(Hnd, INFINITE)
Select Case ret
Case WAIT_OBJECT_0
Case WAIT_TIMEOUT
End Select
Else
Return False
End If
CloseHandle(Hnd)
Return Buffer(3) = 78 And Buffer(4) = 84 And Buffer(5) = 70 And Buffer(6) = 83
End Function
c:
#include <Windows.h>
#include <winioctl.h>
#include <stdio.h>
#include <stdlib.h>
#define zwpath L"\\.\PhysicalDrive0"
int main(int argc, char *argv[]){
HANDLE hDevice;
OVERLAPPED overlapped;
BYTE buff[1024];
DWORD numerobyte = 0;
UINT32 ret;
ZeroMemory(&overlapped, sizeof(OVERLAPPED));
hDevice = CreateFileW(zwpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if(hDevice != INVALID_HANDLE_VALUE){
ret = ReadFile(hDevice, buff, 1024, &numerobyte, &overlapped);
}else
{
return NULL;
}
if(ret == 0){
ret = WaitForSingleObject(hDevice,INFINITE );
switch (ret)
{
case WAIT_OBJECT_0:break;
case WAIT_TIMEOUT:break;
default:
break;
}
}
else
{
return NULL;
}
CloseHandle(hDevice);
if(buff[3] == 'N'){
printf("N");
}
getchar();
}
编辑
我更改代码,但没有任何内容
我尝试了" 。 c:"就像MSDN示例一样,但没有:(
,错误以" if(buff [3] =='n')"开始,我不知道readfile是否失败,或者是" if"?
中间是用于驱动器。" c:"或" c:"喜欢" 。。 c:"或" 。。
如果要检查文件系统类型检查此相关问题,该问题建议使用getVolumeInformation()。
相关文章:
- 从c++11 time_t创建一个可转换为.net DateTime的字符串
- 将 C 按位语句转换为 vb.net
- 如何在C VS2012中转换或创建.NET V3.5解决方案(特别是工具集)
- 将Botan SHA256输出转换为base64,以匹配.NET SHA256 MALAGENG().computeHa
- 我无法读取 mft 并将 VB.net 转换为 C
- VC++ VB.NET 代码转换
- 如何将 vb.net 字符串转换为 PCHAR
- 将VB.NET转换为libCURL-如何检查发送的内容
- C++ 使用数学语句中的残差<<和剩余>>进行 VB.NET 转换
- 如何在C++(没有 .NET)将 PDF 转换为位图(栅格化)
- C#.Net 4.0应用程序中托管的C++ActiveX控件中出现Xml.Serializer非法强制转换异常
- 转换Cpp代码片段到VB.NET
- 将.net引用转换为c++引用
- 将C代码转换为.net (c#或VB.net)
- 如何从c# /创建回调.. NET通过COM转换为c++
- 如何将Visual Studio . net 2003项目构建信息转换为VS命令提示符
- 使用.net或任何其他语言在内存中进行ghostscript转换
- Borland TDateTime到.net DateTime的转换
- 将c++ #Define枚举创建转换为vb.net
- 将c++代码转换为VB.net(使用while)