阅读:1549回复:1
DeviceIoControl怎么用
驱动动态加载后,怎么用DeviceIoControl访问disk
|
|
沙发#
发布于:2007-07-03 21:05
随便找个驱动应用层代码都会写
printf("\tAttaching to %s\n", parm); bufferLength = MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, parm, -1, (LPWSTR)buffer, BUFFER_SIZE/sizeof(WCHAR) ); bResult = DeviceIoControl( Context->Device, FILESPY_StartLoggingDevice, buffer, bufferLength * sizeof(WCHAR), NULL, 0, &bytesReturned, NULL ); if (!bResult) { result = GetLastError(); printf( "ERROR attaching to device...\n" ); DisplayError( result ); } //============ //driver case FILESPY_StartLoggingDevice: if (InputBuffer == NULL || InputBufferLength <= 0) { IoStatus->Status = STATUS_INVALID_PARAMETER; break; } // // Copy the device name and add a null to ensure that it is null // terminated // deviceName = ExAllocatePoolWithTag( NonPagedPool, InputBufferLength + sizeof(WCHAR), FILESPY_POOL_TAG ); if (NULL == deviceName) { IoStatus->Status = STATUS_INSUFFICIENT_RESOURCES; break; } try { RtlCopyMemory( deviceName, InputBuffer, InputBufferLength ); } except (EXCEPTION_EXECUTE_HANDLER) { IoStatus->Status = GetExceptionCode(); } if (NT_SUCCESS( IoStatus->Status )) { deviceName[InputBufferLength / sizeof(WCHAR)] = UNICODE_NULL; IoStatus->Status = SpyStartLoggingDevice( deviceName ); } break; |
|