私はC++をかなり新しくしています。私はJni CallをC++にして、付属のコンパクトフラッシュカードライターに生ファイル(.img)を書き込むJavaアプリケーションを開発しています。以下は私のC++コードです。接続されたUSBドライブを見つけ出し、createFileを使ってHandleを作成し、rawイメージ(.img)をデバイスに書き込むと仮定しています。最終的に、アプリケーションはJava JNIを使用して呼び出されます。C++ createFile(コンパクトフラッシュカードライター)
問題は、添付されたドライブをリストすることができますが、createFile()を使用して ハンドルを作成することができることです。私はエラー以下になります:
Error 1 error C2660: 'getHandleOnVolume' : function does not take 2 arguments c:\users\omisorem.nov\documents\visual studio 2010\projects\diskrunner\diskrunner.cpp 71 1 DiskRunner
2 IntelliSense: argument of type "char *" is incompatible with parameter of type "LPCWSTR" c:\users\omisorem.nov\documents\visual studio 2010\projects\diskrunner\diskrunner.cpp 86 23 DiskRunner
何か助けていただければ幸いです。
int main() {
// GetLogicalDrives returns 0 on failure, or a bitmask representing
// the drives available on the system (bit 0 = A:, bit 1 = B:, etc)
unsigned long driveMask = GetLogicalDrives();
int i = 0;
ULONG pID;
//cboxDevice->clear();
while (driveMask != 0)
{
if (driveMask & 1)
{
// the "A" in drivename will get incremented by the # of bits
// we've shifted
char drivename[] = "\\\\.\\A:\\";
drivename[4] += i;
cout << pID << "[%1:\\]" << drivename << endl;
}
driveMask >>= 1;
// cboxDevice->setCurrentIndex(0);
++i;
}
LPCTSTR volumeID = TEXT("D:");
int volumeID1 = int(volumeID);
hVolume = getHandleOnVolume(volumeID1, GENERIC_WRITE);
system("PAUSE");
return 0;
}
HANDLE getHandleOnVolume(int volume1, DWORD access)
{
HANDLE hVolume;
char volumename[] = "\\\\.\\A:";
volumename[4] += volume1;
hVolume = CreateFile("\\\\.\\F", access, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hVolume == INVALID_HANDLE_VALUE)
{
cout <<"Partition does not exist or you don\'t have rights to access it"<<endl; // tesing
}
else {
cout << "Partition exists " << endl;
}
cout << volume1;
return hVolume;
}
なぜ純粋なJavaのアプローチを使用しないのですか?それは、特にJava 7以来、完全に可能なファイルIOをサポートしています。 – 01es
ありがとう。 JUSBやJava-USB APIを使って、Windows 7との互換性がなく古くなっているのを除いて、Javaはそのような低レベル呼び出しをサポートしているようです。しかし、あなたが私に可能であれば、純粋なjava方向に移動します。 – stdapsy