CreateFile
32 ビット XP OS での作業を使用して有効なハンドルを作成するために使用される次のコードがあります。64 ビット Vista および Windows 7 コンピューターで同じコードをテストするとCreateFile
、無効なハンドル値が返されます。何が起こっているのか理解できないようです。
dll のインポートは次のとおりです。
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr CreateFile(
string FileName,
uint DesiredAccess,
uint ShareMode,
IntPtr SecurityAttributes,
uint CreationDisposition,
uint FlagsAndAttributes,
IntPtr hTemplateFile
);
そして呼び出し:
drive = CreateFile(devicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
FILE_FLAG_DELETE_ON_CLOSE,
IntPtr.Zero);
devicePath
USBへの有効なパスです。これは、32 ビット OS では有効なハンドルを返し、64 ビット OS では無効な値を返します。私は検索して検索しましたが、何も見つかりませんでした。誰かが助けたり、情報を共有したりできれば、私は感謝します. よろしく。