Показать сообщение отдельно

  #2  
Старый 01.10.2009, 11:02
RumShun
Постоянный
Регистрация: 27.10.2008
Сообщений: 380
Провел на форуме:
1249808

Репутация: 149
Отправить сообщение для RumShun с помощью ICQ
По умолчанию

вобщем нашел такой код
Код:
  PSerialNumberParams = ^TSerialNumberParams;
  TSerialNumberParams = record
   wInfoLevel:word;
   dwDiskSerialNumber:longint;
   caLabel:array[0..10] of char;
   baFileSystem:array[0..7] of char;
  end;
function GetDriveSerialNumber(wDrive: word): LongInt;
var
	snp: TSerialNumberParams;
begin
	snp.dwDiskSerialNumber := 0;
	if ReadDriveSNParam(wDrive, @snp)
	then Result := snp.dwDiskSerialNumber
	else Result := -1;
end;

function ReadDriveSNParam(wDrive: word; psnp: PSerialNumberParams): boolean; assembler;
asm
  push ds
  mov  bx, wDrive
  mov  al, 00h
  mov  ah, 69h
  lds  dx, psnp   //<=вот тут ошибка Operand size mismatch
  int  21h
  jnc  @no_error    	{CF SET if error}
  xor	 ax,ax		{set false}
  jmp	 @exit
  @no_error:
  mov	ax, 1			{set true}
  @exit:
  pop	ds
end;
помогите плиз
 
Ответить с цитированием