Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2011, 18:16   #1
Synapse
Пользователь
 
Регистрация: 14.08.2011
Сообщений: 10
По умолчанию Привязка к железу, кусочек ошибок

Привет работникам невидимого фронта. До недавнего времени с другом вели очень успешный проект по криптографии, теперь потребовалась привязка к железу. И тут честного говоря - я сел.
Сурсник проекта 2008 студии на C++ Win32 консоль:
Код:
#include <windows.h>
#include <iostream>
#include<tchar.h>
using namespace std;

void main()
{

wchar_t NameBuffer[MAX_PATH];
wchar_t SysNameBuffer[MAX_PATH];
DWORD SerialNumber;
DWORD Length;
DWORD File;

GetVolumeInformation(L"C:\\",NameBuffer, sizeof(NameBuffer),&SerialNumber,&Length,&File,SysNameBuffer,sizeof(SysNameBuffer));
cout <<  SerialNumber << endl;
cin.get();
cin.get();

}
Всё работает отлично, получаю серийник раздела (локального диска C)
Теперь вся проблема - есть .dll, она подцепляется (или как сказать, присоединяется) к процессу, и при одном действии должна сверить серийник тома с тем, что заложен в неё, пример (сериал намбер и тп. уже определены в коде), цифры слева - номера строк:
Код:
275if(что-то произошло){
276 GetVolumeInformation(L"C:\\",NameBuffer,sizeof(NameBuffer),&VSNumber,&MCLength,&FileSF,SysNameBuffer,sizeof(SysNameBuffer));
277		if (VSNumber=="123456789"){
			что-то сделать;
		}
	}
т.е. если серийники не совпадают, рабоать это что-то не будет.
При компиляции получаю ошибки:
Цитата:
Ошибка 9 error C2664: GetVolumeInformationA: невозможно преобразовать параметр 1 из 'const wchar_t [4]' в 'LPCSTR' c:\Users\Игорь\Desktop\test\testdll \krypt\SNcheck.cpp 276

Ошибка 10 error C2446: ==: нет преобразования 'const char *' в 'DWORD' c:\Users\Игорь\Desktop\test\testdll \krypt\SNcheck.cpp 277

Ошибка 11 error C2040: ==: "DWORD" отличается по уровням косвенного обращения от "const char [4]" c:\Users\Игорь\Desktop\test\testdll \krypt\SNcheck.cpp 277
Я понимаю, что они элементарные и мне стыдно их сюда выкладывать... но не получается.


UPD! Кое-что поправил:
Код:
275if(что-то произошло){
276 GetVolumeInformation(L"C:\\",NameBuffer,sizeof(NameBuffer),&VSNumber,&MCLength,&FileSF,SysNameBuffer,sizeof(SysNameBuffer));
277	const char* NumberChar = reinterpret_cast<const char*>(VSNumber); 
278	if (VSNumber=="123456789"){
			что-то сделать;
		}
	}
Добавил строчку const char* NumberChar = reinterpret_cast<const char*>(VSNumber);
Теперь осталась одна ошибка:
Цитата:
Ошибка 9 error C2664: GetVolumeInformationA: невозможно преобразовать параметр 1 из 'const wchar_t [4]' в 'LPCSTR' c:\Users\Игорь\Desktop\test\testdll \krypt\SNcheck.cpp 276

Последний раз редактировалось Synapse; 14.08.2011 в 18:34.
Synapse вне форума Ответить с цитированием
Старый 14.08.2011, 18:34   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

1-ая ошибка очень простая это надо перед кавычками убрать L, или поменять имя функции на GetVolumeInformationW
2 и 3 ошибки из-за
if (VSNumber=="123456789")
VSNumber как я понял имеет тип DWORD, так а вы сварниваете со строковым литералом его...
VSNumber==(DWORD)123456789 ... мб пройдет?
onewho вне форума Ответить с цитированием
Старый 14.08.2011, 18:44   #3
Synapse
Пользователь
 
Регистрация: 14.08.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
1-ая ошибка очень простая это надо перед кавычками убрать L, или поменять имя функции на GetVolumeInformationW
2 и 3 ошибки из-за
if (VSNumber=="123456789")
VSNumber как я понял имеет тип DWORD, так а вы сварниваете со строковым литералом его...
VSNumber==(DWORD)123456789 ... мб пройдет?
Да, второе я исправил.

Всё заработало =)
Synapse вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кусочек кода на Delphi в С++ Geezer Помощь студентам 1 13.07.2011 23:39
Кусочек кода... 1900s БД в Delphi 0 20.03.2009 17:11
привязка к железу Эль Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.09.2007 20:10
доработать кусочек программы Алёна Помощь студентам 1 21.05.2007 13:07