Форум: "WinAPI";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизКак инициализировать звуковую карту до загрузки Windows Найти похожие ветки
← →
AndreiDeJavu (2007-09-26 14:04) [0]Доброго времени суток!
Работаю над проектом голосовой авторизации, нашел на RSDN
топик http://rsdn.ru/Forum/message/1207889.flat.aspx, в котором есть фрагмент кода, необходимый мне для инициализации звуковой карты, перевел на Дельфи, но у людей в том топике проблема не решена, и у меня пока не получается сделать... Буду благодарен за комментарии и помощь в решении проблемы. Вот код:procedure TformProperty.ShowInfo;
var
hDll:HModule;
pPointer, fPointer:Pointer;
WaveNums, i: integer;
WaveInCaps: TWaveInCaps;
begin
hDll:=LoadLibrary("WINMM.dll");
if (hDll<>NULL) then
begin
pPointer:=GetProcAddress(hDll, "WinmmLogon");
if (pPointer<>nil) then
begin
fPointer := GetProcAddress(hDll, "waveInGetNumDevs");
if (fPointer<>nil) then
begin
WaveNums:=waveInGetNumDevs;
Edit1.Text:="Работает!";
if WaveNums>0 then
begin
for i:=0 to WaveNums-1 do
begin
waveInGetDevCaps(i,@WaveInCaps,sizeof(TWaveInCaps));
ComboBox.Items.Add(PChar(@WaveInCaps.szPname));
end;
ComboBox.ItemIndex:=0;
ComboBox.OnChange(self);
end
else
Edit1.Text:="Не работает!";
//WaveNums:=waveInGetNumDevs;
end;
end;
end;
end;
← →
Сергей М. © (2007-09-26 14:12) [1]
> Как инициализировать звуковую карту до загрузки Windows
Поместив соответсвующий код, например, в BIOS POST - это и будет истинным "до загрузки Windows".
Только накой ляд это может понадобиться, если в ходе загрузки Windows все равно займется этим по-новой ?
← →
Сергей М. © (2007-09-26 14:16) [2]А если ноги растут отсюда
http://rsdn.ru/Forum/message/1207889.flat.aspx
то это вовсе не "до загрузки Windows")
← →
Сергей М. © (2007-09-26 14:20) [3]
> в котором есть фрагмент кода, необходимый мне для инициализации
> звуковой карты
Нет там "кода инициализации".
Инициализацию карты осуществляет драйвер режима ядра, стартующий намного раньше.
← →
Leonid Troyanovsky © (2007-09-26 14:24) [4]
> AndreiDeJavu (26.09.07 14:04)
> pPointer:=GetProcAddress(hDll, "WinmmLogon");
Ну, а где ж обсуждавшийся там вызов pfn(TRUE) ?
Кроме того, там была речь о том, что в случае ошибок,
принято проверять GetLastError.
И еще, а откуда уверенность в том, что до логона
смогут работать формы vs окна.
--
Regards, LVT.
← →
AndreiDeJavu (2007-09-26 14:35) [5]
> Нет там "кода инициализации".Инициализацию карты осуществляет
> драйвер режима ядра, стартующий намного раньше.
Согласен, неправильная формулировка.
> Ну, а где ж обсуждавшийся там вызов pfn(TRUE) ?Кроме того,
> там была речь о том, что в случае ошибок,принято проверять
> GetLastError.И еще, а откуда уверенность в том, что до логонасмогут
> работать формы vs окна.
Формы у меня нормально работают, я написал обертку для WlxLoggedOutSAS, там то формы и создаются... еще до окна авторизации. А ошибок то и нет, потому я и не могу GetLastError использовать,- когда пользователь авторизован, процедура работает, а до авторизации- нет.
Что касается pfn(TRUE), то не знаю как это можно перевести на Дельфи...((
← →
Сергей М. © (2007-09-26 14:41) [6]
> я и не могу GetLastError использовать
Религия не позволяет ?
> не знаю как это можно перевести на Дельфи
type
TWinmmLogon = procedure(Value: Boolean); stdcall;
var
WinmmLogon: TWinmmLogon;
..
WinmmLogon := GetProcAddress(hDll, "WinmmLogon");
..
WinmmLogon(True);
← →
Leonid Troyanovsky © (2007-09-26 14:52) [7]
> AndreiDeJavu (26.09.07 14:35) [5]
> Что касается pfn(TRUE), то не знаю как это можно перевести
> на Дельфи...((
Ну, я тоже не знаю, бо не знаю как выглядит ее прототип даже на C.
Т.е., что имелось ввиду под pfWinmmLogon.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2007-09-26 14:57) [8]
> Сергей М. © (26.09.07 14:41) [6]
> TWinmmLogon = procedure(Value: Boolean); stdcall;
Сам сочинил? :)
Во-первых, скорее всего, Longbool.
Во-вторых, скорее всего, function(Value: Longbool): Longbool.
Ну, а на счет stdcall я просто не уверен.
--
Regards, LVT.
← →
Сергей М. © (2007-09-26 15:05) [9]
> Leonid Troyanovsky © (26.09.07 14:57) [8]
Конечно сам)
Оно мне надо - искать готовую декларацию ?
> скорее всего, Longbool
По барабану.
Boolean тоже сойдет, ибо компилятору указана конвенция.
> скорее всего, function(Value: Longbool): Longbool.
Мож и функция, мне пофих - я перевел "в лоб" то что там написано.
> на счет stdcall я просто не уверен.
Я тоже. Хотя и наиболее вероятно.
Да и подправить конвенцию никогда не поздно.
← →
AndreiDeJavu (2007-09-26 15:13) [10]
> Сергей М. © (26.09.07 14:41) [6]
> > я и не могу GetLastError использоватьРелигия не позволяет
> ?> не знаю как это можно перевести на Дельфиtype TWinmmLogon
> = procedure(Value: Boolean); stdcall;var WinmmLogon: TWinmmLogon;
> ..WinmmLogon := GetProcAddress(hDll, "WinmmLogon");..WinmmLogon(True);
>
Сергей, я использовал GetLastError(), но она возвращает 0, поэтому и не использую.=) За код спасибо большое, сработало, звук микрон хватает и пишет))).
← →
Leonid Troyanovsky © (2007-09-26 15:25) [11]
> AndreiDeJavu (26.09.07 15:13) [10]
> Сергей, я использовал GetLastError
Обычно ее используют в сочетании с результатом,
возвращаемым вызываемой функцией.
И если он не успешен, в соответствии с документацией,
то вызывают GetLastError и анализируют код ошибки.
Т.е., хорошо бы, все же, найти описание WinmmLogon.
--
Regards, LVT.
← →
Сергей М. © (2007-09-26 15:39) [12]
> звук микрон хватает и пишет
Ты хочешь сказать, что "хватает и пишет" уже "по месту", т.е. до входа юзера ?
← →
AndreiDeJavu (2007-09-26 15:41) [13]
> Leonid Troyanovsky © (26.09.07 15:25) [11]
> Т.е., хорошо бы, все же, найти описание WinmmLogon.
Я не нашел ее описания даже в MSDN, единственное, что приходит на ум,- дизассемблировать winmm.dll...
← →
AndreiDeJavu (2007-09-26 15:42) [14]
> Ты хочешь сказать, что "хватает и пишет" уже "по месту",
> т.е. до входа юзера ?
Да, именно до входа юзера, после включения компа. =)
← →
Leonid Troyanovsky © (2007-09-26 15:48) [15]
> AndreiDeJavu (26.09.07 15:41) [13]
> Я не нашел ее описания даже в MSDN, единственное, что приходит
> на ум,- дизассемблировать winmm.dll...
Видимо, есть отдельно распространяемый SDK.
Начать лучше с google.com, IMHO.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.074 c