• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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 функций, сделали одну, универсальную.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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