BOOL status = 0; DWORD accessMode = 0, shareMode = 0; HANDLE fileHandle = NULL; //PUCHAR dataBuffer = NULL; SCSI_PASS_THROUGH_WITH_BUFFERS sptwb; SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER sptdwb; UCHAR buffer[ 2048 ]; UCHAR string[ 25 ]; ULONG length = 0, errorCode = 0; DWORD returned = 0; strcpy(string, "\\\\.\\"); strcat(string, "I:"); shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;//default accessMode = GENERIC_WRITE | GENERIC_READ;//default fileHandle = CreateFile( string, accessMode, shareMode, NULL, OPEN_EXISTING, 0, NULL ); if (fileHandle == INVALID_HANDLE_VALUE) { MessageBox(NULL, "Create file fail", "tester", MB_OK); return false; } ZeroMemory(&sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS)); sptwb.spt.Length = sizeof(SCSI_PASS_THROUGH); sptwb.spt.PathId = 0; sptwb.spt.TargetId = 1; sptwb.spt.Lun = 0; sptwb.spt.CdbLength = CDB6GENERIC_LENGTH; sptwb.spt.SenseInfoLength = 24; sptwb.spt.DataIn = SCSI_IOCTL_DATA_IN; sptwb.spt.DataTransferLength = 192; sptwb.spt.TimeOutValue = 2; sptwb.spt.DataBufferOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,ucDataBuf); sptwb.spt.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,ucSenseBuf); sptwb.spt.Cdb[0] = SCSI_OPCODE_HWTEST_COMMAND; //SCSI_OPCODE_SIGMATEL_WRITE_COMMAND;// sptwb.spt.Cdb[1] = HWTEST_DISPLAY_ID;//ALLOCATE_MEDIA; sptwb.spt.Cdb[4] = 192; length = offsetof( SCSI_PASS_THROUGH_WITH_BUFFERS, ucDataBuf ) + sptwb.spt.DataTransferLength; status = DeviceIoControl( fileHandle, IOCTL_SCSI_PASS_THROUGH, &sptwb, sizeof(SCSI_PASS_THROUGH), &sptwb, length, &returned, FALSE ); if (!status) { MessageBox(NULL, "Device I/0 control fail!", "tester", MB_OK); errorCode = GetLastError(); ShowMessage(IntToStr(errorCode)); PrintError(errorCode); CloseHandle(fileHandle); return false; } CloseHandle( fileHandle ); return true;
时间: 2023-05-17 18:05:26 浏览: 83
这段代码是用来打开一个名为"I:"的设备文件,并创建一个文件句柄。其中,accessMode表示文件的访问模式,shareMode表示文件的共享模式,fileHandle表示文件句柄。此外,还定义了一些变量和数组用于后续的操作。
相关问题
bind(quint16 port = 0, BindMode mode = DefaultForPlatform) 含义
这是一个函数的声明,用于在Qt中创建一个Socket并绑定到指定的端口号。其中,port参数表示要绑定的端口号,如果设置为0,则系统会自动分配一个可用端口;mode参数表示绑定模式,可以是DefaultForPlatform(默认值,表示使用系统默认模式)、ShareAddress(表示多个Socket可以共享同一个端口)、DontShareAddress(表示多个Socket不能共享同一个端口)。该函数返回一个bool类型的值,表示是否成功绑定。
OVERLAPPED overlapped; COMSTAT comStat; DWORD dwError = 0, dwWriteNum = 0; BOOL bWriteStatus;
这是一段用于串口通信的代码,具体含义如下:
- `OVERLAPPED overlapped;`: 定义一个结构体 `OVERLAPPED`,用于异步 I/O 操作。
- `COMSTAT comStat;`: 定义一个结构体 `COMSTAT`,用于获取串口状态信息。
- `DWORD dwError = 0, dwWriteNum = 0;`: 定义两个 `DWORD` 类型变量 `dwError` 和 `dwWriteNum`,分别用于保存错误码和写入字节数。
- `BOOL bWriteStatus;`: 定义一个 `BOOL` 类型变量 `bWriteStatus`,用于保存写入状态。
这些变量的具体作用和用法需要根据具体的代码环境来决定。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)