0
我'試圖創建新的分區和安裝捲到這個新創建新分區的磁盤,我認爲CreateFile
讓我做到這一點,使用此代碼:WINAPI
LPCTSTR lpFileName=L"\\\\.\\Device\\Harddisk0\\Partition3";
HANDLE handl=CreateFile(lpFileName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL );
if (handl==INVALID_HANDLE_VALUE)
{
qDebug()<<"handl invalid"<<" error"<<GetLastError();}
bool success = DefineDosDevice(DDD_RAW_TARGET_PATH,L"I:",L"\\Device\\Harddisk0\\Partition3");
if(!success)
qDebug()<<" DefineDosDevice failed "<<GetLastError();
bFlag = GetVolumeNameForVolumeMountPoint(
L"I:\\", // input volume mount point or directory
/** what u do in this directory u find it in th mount piont and vice versa**/
Buf, // output volume name buffer
BUFSIZE // size of volume name buffer
);
if (bFlag != TRUE)
{
//_tprintf(TEXT("Retrieving volume name for %s failed.\n"), argv[2]);
qDebug()<<"Retrieving volume name failed. "<<GetLastError();
return (-2);
}
qDebug()<<"Volume name"<<QString::fromWCharArray(Buf);
bool fResult = DefineDosDevice (
DDD_RAW_TARGET_PATH|DDD_REMOVE_DEFINITION|
DDD_EXACT_MATCH_ON_REMOVE, L"I:",
L"\\Device\\Harddisk0\\Partition3");
if (!fResult)
qDebug()<<"DefineDosDevice failed "<< GetLastError();
bFlag = SetVolumeMountPoint(L"D:\\myDirExample\\example\\", // mount point
/** should b empty**/
Buf // volume to be mounted
);
if (!bFlag)
{
qDebug()<<"Attempt to mount failed";
qDebug()<<"error "<<GetLastError();
}
return (bFlag);
CloseHandle(handl);
我:
handl invalid error 3
Retrieving volume name failed erorr 2
第一個錯誤是ERROR_PATH_NOT_FOUND:系統找不到指定的路徑。 那麼,我該如何修復lpFileName
才能使其工作
在此先感謝,任何幫助將不勝感激。
沒有'\\。\ Device',這就是爲什麼你得到ERROR_PATH_NO_FOUND。沒有辦法從win32訪問NT的'\ Device'(你必須改用NtCreateFile)。即使有,您也只能在設備上創建文件(例如,如果'\ Device \ Harddisk0 \ Partition3'是設備,您可以創建'\ Device \ Harddisk0 \ Partition3 \ something')。 '\ Device \ Harddisk0'不是任何設備的一部分(都是NT命名空間中的簡單目錄)。 – avakar
感謝您的回答,那是我的觀點'\ Device \ Harddisk0 \ Partition3'是我想創建的分區,它不存在。 – Oumaya
我不認爲有創建分區的API等。您可以控制[diskpart工具](http://technet.microsoft.com/en-us/library/26a4a166-95fa-4faf-95bc-2d5345f4a57a )與腳本。 – arx