掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DeviceIoControlのIOCTLコードには何を設定すれば良いの? (ID:101581)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こちらのサイトにて以前質問があった内容を参考にしてテストプログラミング してみました。 http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200807/08070022.txt [構造体定義部] Public Type SCSI_PASS_THROUGH length As Integer ScsiStatus As Byte PathId As Byte TargetId As Byte Lun As Byte CdbLength As Byte SenseInfoLength As Byte DataIn As Byte DataTransferLength As Long TimeOutValue As Long DataBuffer As Long SenseInfoOffset As Long Cdb(0 To 11) As Byte End Type Public Type SCSI_PASS_THROUGH_WITH_BUFFERS spt As SCSI_PASS_THROUGH Fill As Long SenseBuf(31) As Byte End Type Public sptwb As SCSI_PASS_THROUGH_WITH_BUFFERS [コマンド発行部] ''デバイスコマンド構造体(入力)を設定する With sptwb .spt.length = LenB(.spt) .spt.PathId = 0 .spt.TargetId = 0 .spt.Lun = 0 .spt.CdbLength = 12 .spt.SenseInfoLength = 24 .spt.DataIn = 1 .spt.DataTransferLength = 1 .spt.TimeOutValue = 10 .spt.SenseInfoOffset = 48 .spt.DataBuffer = 80 .spt.Cdb(0) = lngOpeCode .spt.Cdb(1) = lngLun * (2 ^ 5) Or lngImmed * (2 ^ 0) .spt.Cdb(2) = &H0 .spt.Cdb(3) = &H0 .spt.Cdb(4) = lngPowCond * (2 ^ 4) Or lngLoEj * (2 ^ 1) Or lngStart * (2 ^ 0) .spt.Cdb(5) = &H0 .spt.Cdb(6) = &H0 .spt.Cdb(7) = &H0 .spt.Cdb(8) = &H0 .spt.Cdb(9) = &H0 .spt.Cdb(10) = &H0 .spt.Cdb(11) = &H0 lnglength = 4 + .spt.DataTransferLength End With ''デバイスをオープンする lngDevice = CreateFile(strDriveName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, objSecurityAttributes, OPEN_EXISTING, 0, 0) ''デバイス制御コマンドを通知する lngRet = DeviceIoControl(lngDevice, IOCTL_SCSI_PASS_THROUGH, sptwb, Len(sptwb), sptwb, Len(sptwb), lngBytesReturned, objOverLapped) : : : DeviceIoControl関数の戻り値がエラー(0)になってしまい、拡張エラー情報のErr.LastDllErrorを 確認すると(5)となっていました。 このエラーの内容が何を指すのでしょうか?(どこかに書かれているとは思いますが・・・)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.