[英]C# equivalent code for ZeroMemory
I am using the following code to make partitions in usb drive. 我正在使用以下代码在USB驱动器中进行分区。
char str[128];
wsprintf(str,"\\\\.\\PhysicalDrive%d", i);
hDevice = CreateFile( ,"\\\\.\\PhysicalDrive1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
LARGE_INTEGER dimDiscoD;
LARGE_INTEGER dimDiscoE;
LARGE_INTEGER dimDiscoF;
LARGE_INTEGER dimDiscoG;
DISK_GEOMETRY_EX pDiskGeometryEx;
DWORD dwBytesReturned;
BOOL r = DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, &pDiskGeometryEx, sizeof(pDiskGeometryEx), &dwBytesReturned, NULL );
dimDiscoG.QuadPart = DIM_DISCOG;
dimDiscoD.QuadPart = (( pDiskGeometryEx.DiskSize.QuadPart - dimDiscoG.QuadPart )/6) * 4;
dimDiscoE.QuadPart = dimDiscoD.QuadPart/4;
dimDiscoF.QuadPart = dimDiscoE.QuadPart;
CREATE_DISK pCreateDisk;
ZeroMemory(&pCreateDisk,sizeof(CREATE_DISK));
DWORD dwBytesReturned;
pCreateDisk.PartitionStyle = PARTITION_STYLE_MBR;
pCreateDisk.Mbr.Signature = 0xA4B57310;
DeviceIoControl(hDevice, IOCTL_DISK_CREATE_DISK, (LPVOID)&pCreateDisk, sizeof(pCreateDisk), NULL, 0, &dwBytesReturned, (LPOVERLAPPED) NULL)
DWORD junk1;
DeviceIoControl(hDevice,IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, &junk1, NULL);
int SectorSize=pDiskGeometryEx.Geometry.BytesPerSector;
DWORD szNewLayout = sizeof(DRIVE_LAYOUT_INFORMATION_EX)+4*sizeof (PARTITION_INFORMATION_EX);
DRIVE_LAYOUT_INFORMATION_EX *dl = (DRIVE_LAYOUT_INFORMATION_EX*) new BYTE[szNewLayout];
ZeroMemory(dl,szNewLayout);
................... ...................
dl->PartitionStyle = PARTITION_STYLE_MBR;
dl->PartitionCount = 4;// specify AT LEAST 4 partitions!!!
dl->Mbr.Signature = 0xA4B57310; //
DeviceIoControl(hDevice, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, dl, szNewLayout, NULL, 0, &junk, (LPOVERLAPPED) NULL) )
DWORD junk;
DeviceIoControl(hDevice, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, &junk, NULL);
CloseHandle(hDevice);
delete dl;
I am converting the above code into C#. 我将上面的代码转换为C#。 how can I convert the following line into c#? 如何将以下行转换为C#? ZeroMemory(&pCreateDisk,sizeof(CREATE_DISK)); ZeroMemory(&pCreateDisk,sizeof(CREATE_DISK));
You don't need to use ZeroMemory
in C#; 您无需在C#中使用ZeroMemory
; all byte arrays you allocate are zeroed out implicitly because zero is the default value for all integral types (and also of Guid
, which seems to be indirectly involved here). 您分配的所有字节数组都将隐式清零,因为所有整数类型(以及Guid
的默认值)都是默认值零。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.