![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Artem148 |
|
|||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
Здрасте!
Функция DeviceIOControl с параметром IOCTL_STORAGE_QUERY_PROPERTY возврашает: 1) VendorIdOffset 2) ProductIdOffset 3) ProductRevisionOffset 4) SerialNumberOffset Всё в DWORD`e Вопрос: Как получить(конвертировать) это в String? Заранее спасибо! |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
IntToStr(); - даже как то странно, этого не знать --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
В данном случае - неверно. Потому что указанные параметры - это смещения относительно начала выходного буфера. По этому смещению начинается ASCII строка с завершающим 0, т.е. PAnsiChar. Добраться до нее можно как-то так (общий принцип):
Добавлено @ 23:59 Ну и, само собой - VendorIDOffset и т.п. для правильного получения строки не должно быть =0, о чем прямо сказано в MSDN Это сообщение отредактировал(а) kami - 21.6.2011, 00:02 |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
Я подумал что надо просто DWORD в строку конвертировать
Это сообщение отредактировал(а) Dik0n - 21.6.2011, 00:44 --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
И будете всегда получать ERROR_INSUFFICIENT_BUFFER. Потому что RawDeviceProperties - это всего лишь указатель на первый байт области памяти, в которой хранятся те самые PAnsiVendorID и т.д. В Вашем же примере размер выходного буфера постоянен. И никакие данные в 1 байт не влезут. |
|||
|
||||
| Artem148 |
|
|||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
[DCC Error] E2089 Invalid typecast
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
||||
|
||||
| Artem148 |
|
||||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
а жаль.... |
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
А Вы обратили внимание, какого типа буфер у меня в примере (приставка P о чем-нибудь говорит?): и у Вас: Все равно - наступите на те же грабли, что и в коде Dik0n. Добавлено @ 22:19 Совет: Найдите поиском в интернете код, который выкладывала Riply. Afair, дело было на DelphiMaster. Это сообщение отредактировал(а) kami - 22.6.2011, 22:20 |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| Artem148 |
|
|||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
Офтальмолог тоже в отпуске... Да, всё равно в Type где-то вру... Если вас не затруднит, можете скинуть пример... Это сообщение отредактировал(а) Artem148 - 23.6.2011, 14:00 |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Вам была дана вся необходимая информация: ключевые моменты, ссылки на описания в MSDN и ссылка на пример использования (за Вас ее нашел Dik0n). Вы залезли достаточно глубоко в WinAPI, где далеко не всегда существуют примеры "на все случаи жизни", а писать за Вас уже готовый код вряд ли будут. Учитесь адаптировать "под себя" то, что дано. Добавлено через 6 минут и 17 секунд Совет - чтобы не ошибиться в объявлении типов, рекомендую воспользоваться JWA |
|||
|
||||
| Artem148 |
|
|||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
Вопрос снят!
kami, всё дело оказалась прозаичнее: во всём виновата десятая еврейская делфи(всё ей не так! запустил в 2007 - работает и мой код и ваш(после небольшой доработки Всем спасибо за помощь и утраченное время P.S Delphi XE капризничает уже так не первый раз ... Это сообщение отредактировал(а) Artem148 - 24.6.2011, 21:56 |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
||||
|
||||
| Artem148 |
|
|||
![]() Постоялец ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 18.2.2011 Репутация: нет Всего: нет |
P.S Всё равно получаю в Delphi XE китайские символы...
Всё обгуглил; функции конвектирования нет... Ну что ж, пойду учить китайский... Это сообщение отредактировал(а) Artem148 - 25.6.2011, 19:30 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |