• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Winapi Конвертирование из одного типа в дру..

  • Автор темы GRAMER
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

GRAMER

Здравствуйте у меня есть вопрос с конвертирование переменной из одного типа в другой.
Я вчера сидел разбирался в mci и для того что бы открыть устройство надо заполнить структуру по названием
Код:
MCI_OPEN_PARMS mciOpen;
Я её заполнил потом читаю дальше по книге там написано поставить эту переменную на 4 место в функции
Код:
mciSendCommand(0,MCI_OPEN,flags,(DWORD_PTR)&mciOpen);
я её поставил сначала без (DWORD_PTR) после этого компилятор выдаёт, типа туда нужно только тип DWORD_PTR
я поставил ему этот тип, всё стало работать, но так и не понял, почему функция работает если это другой даже не тип переменной, а структура. Объясните пожалуйста почему ???
Спасибо !
 
G

gamecreator

потому что принимает указатель
 
G

GRAMER

Не понял ? Я знаю что передаю указатель, а вот почему он структуру воспринимает как тип , DWORD_PTR не пойму
 
G

grigsoft

Формулировка просто непонятна - если это вопрос по языку, то для компилятора все равно - ты сказал "считай это DWORD", он и привел. Сказал бы ты к байту привести - тоже сделал бы. Если это вопрос по конкретной функции, то работает потому что там внутри написано:
Код:
if (cmd==MCI_OPEN) // use structure
А сделано так потому что гнались за якобы простым апи, и поленились сделать человеческое msiOpen.
 
G

GRAMER

То есть я так понял что сначала он проверит первые байты и если ему подойдёт, тогда он их
возьмёт, правильно понял или нет ?

Тогда если так то зачем они сделали эту функция с этим типом DWORD_PTR, а не просто со
структурой ?
 
G

grigsoft

Посмотри хелп на другие команды - там для каждой команды своя структура передается. Чтобы не делать 100 функций, сделали одну, универсальную.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!