HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #3241  
Старый 28.06.2009, 00:11
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Qt4 для новичка будет сложновато. Хотя и лучше чем mfc. но советую все таки начать с мфц.
 
Ответить с цитированием

  #3242  
Старый 28.06.2009, 01:27
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Qt4 для новичка будет сложновато. Хотя и лучше чем mfc. но советую все таки начать с мфц.
Ну мой совет будет с точностью наоборот )
mfc очень неудобен в плане написание приложений да и вообще он уже умер (с) =) уж лучше юзать wtl. После перехода с mfc на Qt, сразу видно его преимущества в простоте иерархии всех его классов и взаимодействия обьектов. Ну это все имхо и доказывать тру mfc кодерам не буду ))

Вообще следует попробывать и одно и другое и сделать для себя выводы )
 
Ответить с цитированием

  #3243  
Старый 28.06.2009, 01:36
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

дык я и не советую юзать мфц в жизни =) просто для понимания, что оно такое, стоит попробовать. но для повседневного юзанья да - он умер и причем давно. любой аналог будет удобнее и более гибким.
 
Ответить с цитированием

  #3244  
Старый 29.06.2009, 09:03
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Как по пути к дисковому устройству ,например - "\Device\CdRom0", определить имя диска этого устройства?
 
Ответить с цитированием

  #3245  
Старый 29.06.2009, 11:44
_antony
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме:
424387

Репутация: 142
По умолчанию

Цитата:
Сообщение от _nic  
Как по пути к дисковому устройству ,например - "\Device\CdRom0", определить имя диска этого устройства?
если в ринг0 то при помощи IoVolumeDeviceToDosName().
Код:
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject , IN PUNICODE_STRING RegistryPath )
{
	NTSTATUS ns;
	PFILE_OBJECT pFileObject;
	PDEVICE_OBJECT pDev;
	UNICODE_STRING usDiskName;
	UNICODE_STRING usLinkName;


	RtlInitUnicodeString( &usDiskName , L"\\Device\\CdRom0" );

	ns = IoGetDeviceObjectPointer( &usDiskName , FILE_ALL_ACCESS , &pFileObject , &pDev );

	if( !NT_SUCCESS(ns) )
	{
		KdPrint(("IoGetDeviceObjectPointer failed with status : %08X\n" , ns ));
		goto _end;
	}

	ns = IoVolumeDeviceToDosName( pDev , &usLinkName );

	if( !NT_SUCCESS(ns) )
	{
		KdPrint(("IoVolumeDeviceToDosName failed with status : %08X\n" , ns ));
		goto _end;
	}

	KdPrint(("Symbolick link is :%ws \n" , usLinkName.Buffer ));

_end:
	return ns;
}
если в юзермоде то.
имя диска G - это символьная ссылка на объект устройства \Device\CdRom0 например.
Все символьные ссылки расположены в каталоге \??.
Следовательно можно пройтись по каталогу ( NtOpenDirectoryObject , NtQueryDirectoryObject ) и получить всю необходимую информацию о символьной ссылке ( NtOpenSymbolicLinkObject , NtQuerySymbolicLinkObject ).

NtOpenSymbolicLinkObject - http://msdn.microsoft.com/en-us/library/bb470236(VS.85).aspx

NtQuerySymbolicLinkObject - http://msdn.microsoft.com/en-us/library/bb470241(VS.85).aspx

И если поможет я тут выкладывал в теме свою утилиту для просмотра символьных ссылок.



Надеюсь помог , удачи!

Последний раз редактировалось _antony; 29.06.2009 в 11:47..
 
Ответить с цитированием

  #3246  
Старый 29.06.2009, 12:10
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Я несовсем понял что это за католог такой \?? Чем его открывать?

Последний раз редактировалось _nic; 29.06.2009 в 12:14..
 
Ответить с цитированием

  #3247  
Старый 29.06.2009, 12:47
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

А вообще можно методом тыка перебрать все диски и у знать их девайсы. Для этого есть апишка специальная
Код:
char data[256];
char disk[]="A:";
for (int i='A'; i<='Z'; i++)
{
 disk[0] = i;
 QueryDosDeviceA(disk, data, 256);
 printf("%c: - %s\n", i, data);
}
 
Ответить с цитированием

  #3248  
Старый 29.06.2009, 12:48
_antony
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме:
424387

Репутация: 142
По умолчанию

Цитата:
Сообщение от _nic  
Я несовсем понял что это за католог такой \?? Чем его открывать?
Код:
#include<stdio.h>
#include<windows.h>
#include"ntdll.h"

#pragma comment ( lib , "ntdll.lib" )

int main( int argc , char*argv[] )
{
	NTSTATUS ns;
	HANDLE hDirectory;
	UNICODE_STRING usDirectoryName;
	OBJECT_ATTRIBUTES oa;

	RtlInitUnicodeString( &usDirectoryName , L"\\GLOBAL??" ); // windows 2000 - \??

	InitializeObjectAttributes( &oa , &usDirectoryName , OBJ_CASE_INSENSITIVE , NULL , NULL );

	ns = NtOpenDirectoryObject( &hDirectory , DIRECTORY_QUERY | DIRECTORY_TRAVERSE , &oa );

	if( !NT_SUCCESS(ns) )
	{
		printf("NtOpenDirectoryObject failed with status : %08X\n" , ns );
		return -1;
	}
	CloseHandle( hDirectory );
	return 0;
}
А вообще если , что-то тут не понятно лучше обратитесь к Руссиновичу глава 3 , Диспетчер Обьектов.
 
Ответить с цитированием

  #3249  
Старый 29.06.2009, 13:05
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

мой код можно замодить вот до такого состояния:
Код:
UCHAR GetDiskByDevice(char * device)
{
 char data[256];
 char disk[]="A:";
 for (int i='A'; i<='Z'; i++)
 {
  disk[0] = i;
  QueryDosDeviceA(disk, data, 256);
  if (!strcmp(data,device)) return i;
 }
 return 0;
}
int main(int argc, char* argv[])
{
 UCHAR disk;
 disk = GetDiskByDevice("\\Device\\CdRom1");
 printf("%c\n",disk);
 return 0;
}
Даешь имя устройства, а получаешь букву диска. Или 0 если не найдено
 
Ответить с цитированием

  #3250  
Старый 30.06.2009, 01:43
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Через чего удобнее и правильнее работать с файлами ?
Нашёл много способов интересует какие лучше использовать...
Можешь более конкретизировать вопрос?
Используй стандартные средства работы с файлами.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ