std::wstring ConvStr::GetWstr( std::string ansi )
{
	std::vector<wchar_t> unicode;
	unicode.resize(ansi.length()+1);
	CharToWchar(&unicode[0], &ansi[0]);
	return std::wstring(&unicode[0]);
}
Ejemplo n.º 2
0
void LogMessageWindow::log(const char* fmt,...)
{
	char buf[MAX_LINE_CHR+1];
	va_list lst;
	va_start(lst, fmt);
	int size = printfprintf(buf, MAX_LINE_CHR, fmt, lst);
	va_end(lst);
	m_log.append(Ogre::UTFString(CharToWchar(buf)));
	m_log.append("\n");
	if(m_log.length()>MAX_LOG_LENGTH)
	{
		m_log = m_log.substr(m_log.length()-MAX_LOG_LENGTH);
	}
	trimDisplayArea(buf);
	Ogre::TextAreaOverlayElement* textArea = static_cast<Ogre::TextAreaOverlayElement*>(m_textarea);
	textArea->setCaption(m_displaylog);
	gkPrintf( "(log panel)%s\n", buf);
	if(m_console )
	{
		m_console->addToConsole(m_console->getColorString("System"), "", MyGUI::UString(CharToWchar(buf)));
	}
}
Ejemplo n.º 3
0
void LogMessageWindow::trimDisplayArea(const char* aMsg)
{
	m_displaylog.append(Ogre::UTFString(CharToWchar(aMsg)));
	m_displaylog.append("\n");
	Ogre::StringVector v = Ogre::StringUtil::split(m_displaylog,"\n");
	while(v.size()>m_displaylinenum)
	{
		v.erase(v.begin());
		m_displaylog.clear();
		for (Ogre::StringVector::iterator i = v.begin(); i != v.end(); ++i)
		{
			m_displaylog.append(i->c_str());
			m_displaylog.append("\n");
		}
		v = Ogre::StringUtil::split(m_displaylog,"\n");
	}
}
Ejemplo n.º 4
0
bool COrPSFDlg::Login(char* command)
{
	BOOL bRet;
	char buf[1024];
	wchar_t comd[256];
	DWORD readsize;

	CharToWchar( command, comd, sizeof(comd) );

	// psftp thread start
	bRet = CreateProcessW(
		L"psftp.dat",
		comd,
		NULL,   
        NULL,   
        TRUE,   
        CREATE_NEW_CONSOLE,   // CREATE_NO_WINDOW,CREATE_NEW_CONSOLE
        NULL,   
        NULL,   
        &m_si,   
        &m_pi
		);

	if( bRet == 0 ){
		DWORD err = ::GetLastError();
		return ( false );
	}

	bRet = ReadFile( m_hPsftpStdOutR, buf, sizeof(buf), &readsize, NULL );
	// ReadFile error
	if( bRet == 0 ){
		return ( false );
	}
	// login error
	if( strstr( buf, "Remote working directory is" ) == NULL ){
		return ( false );
	}

	return ( true );
}
Ejemplo n.º 5
0
NTSTATUS LklMount(IN PDEVICE_OBJECT dev,IN PVPB vpb)
{
	NTSTATUS status = STATUS_SUCCESS;
	PDEVICE_OBJECT volume_device=NULL;
	PLKLVCB vcb = NULL;
	LARGE_INTEGER AllocationSize;
	ULONG ioctlSize;
	int sectors;
	PSTR dev_name;
	STATFS my_stat;
	ULONG rc;

	CHECK_OUT(dev == lklfsd.device, STATUS_INVALID_DEVICE_REQUEST);

	CHECK_OUT(FLAG_ON(lklfsd.flags, VFS_UNLOAD_PENDING),STATUS_UNRECOGNIZED_VOLUME);
	
	DbgPrint("Mount volume");

	status = IoCreateDevice(lklfsd.driver, sizeof(LKLVCB), NULL,
				FILE_DEVICE_DISK_FILE_SYSTEM, 0, FALSE, &volume_device);	
	CHECK_OUT(!NT_SUCCESS(status), status);
	
	if (dev->AlignmentRequirement > volume_device->AlignmentRequirement)
		volume_device->AlignmentRequirement = dev->AlignmentRequirement;
	
	
	CLEAR_FLAG(volume_device->Flags, DO_DEVICE_INITIALIZING);
	volume_device->StackSize = (CCHAR)(dev->StackSize+1);	
	CreateVcb(volume_device,dev,vpb,&AllocationSize);
	vcb = (PLKLVCB) volume_device->DeviceExtension;
	if(!FLAG_ON(vcb->flags, VFS_VCB_FLAGS_VCB_INITIALIZED))
		TRY_RETURN(STATUS_INSUFFICIENT_RESOURCES);
	
	
	// yup, here we read the disk geometry
	ioctlSize = sizeof(DISK_GEOMETRY);
	status = BlockDeviceIoControl(dev, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0,
				      &vcb->disk_geometry, &ioctlSize);
	CHECK_OUT(!NT_SUCCESS(status), status);

	
	ioctlSize = sizeof(PARTITION_INFORMATION);
	status = BlockDeviceIoControl(dev, IOCTL_DISK_GET_PARTITION_INFO, NULL, 0,
				      &vcb->partition_information, &ioctlSize);
	CHECK_OUT(!NT_SUCCESS(status), status);

	int bytes_per_sector = 0;
	switch (vcb->disk_geometry.BytesPerSector)
	{
	case 256:
		bytes_per_sector = 8;
		break;
	case 512:
		bytes_per_sector = 9;
		break;
	case 1024:
		bytes_per_sector = 10;
		break;
	case 2048:
		bytes_per_sector = 11;
		break;
	case 4096:
		bytes_per_sector = 12;
		break;
	case 8192:
		bytes_per_sector = 13;
		break;
	}
	sectors = vcb->partition_information.PartitionLength.QuadPart >> bytes_per_sector;
	
	// try a linux mount if this fails, then we fail to mount
	// the volume
	ExAcquireResourceExclusiveLite(&(lklfsd.global_resource), TRUE);
	lklfsd.no_mounts++;
	status = sys_mount_wrapper(vcb->target_device, sectors, &vcb->linux_device);
	DbgPrint("Mounting device '%s' retstatus=%d", dev_name, status);
	ExFreePool(dev_name);
   	RELEASE(&(lklfsd.global_resource));
	CHECK_OUT(!NT_SUCCESS(status), status);
	
	
	//get info about the successfully mounted volume
	rc = sys_statfs_wrapper(vcb->linux_device.mnt, &my_stat);

	vpb->DeviceObject = volume_device;
	// complete vpb fields
	#define UNKNOWN_LABEL "Local Disk"
	CharToWchar(vpb->VolumeLabel, UNKNOWN_LABEL , sizeof(UNKNOWN_LABEL));
	vpb->VolumeLabel[sizeof(UNKNOWN_LABEL)] = 0;
	vpb->VolumeLabelLength = sizeof(UNKNOWN_LABEL)*2;
	vpb->SerialNumber = my_stat.f_type;
try_exit:

	if(!NT_SUCCESS(status))
	{
		ExAcquireResourceExclusiveLite(&(lklfsd.global_resource), TRUE);
		lklfsd.no_mounts--;
		RELEASE(&(lklfsd.global_resource));
		
		
		if(volume_device) {
			FreeVcb((PLKLVCB) volume_device->DeviceExtension);
			IoDeleteDevice(volume_device);
		}
		
	}
	
	return status;
}
Ejemplo n.º 6
0
wchar_t* CDataConverter::StringToWchar(const string& s)
{
	const char* p=s.c_str();
	return CharToWchar(p);
}