Struct ecb { unsigned long...
Struct ecb
{
unsigned long far *Link;
unsigned long far *ESRAddress;
unsigned char InUse;
unsigned char CCode;
unsigned int Socket;
unsigned long IPXWorkspace;
unsigned char DriverWorkspace[12];
unsigned char ImmAddress[6];
unsigned int FragmentCnt;
void far *Address;
unsigned int Size;
} ECB;
//проверка загрузки драйвера IPX
int LoadDriverIPX () {
int temp;
asm {
mov ax,7A00h
int 2Fh
and ax,00ffh
mov temp, ax
}
if (temp==0xFF) return 1; else return 0; }
//Открыть временный сокет
int OpenSocket () {
int temp;
asm {
mov dx,5555h
mov bx,0000h
mov al,00h
int 7Ah
and ax,00ffh
mov temp, ax
}
return temp; }
//Закрыть сокет
int CloseSocket () {
int temp;
asm {
mov dx,5555h
mov bx,0001h
int 7Ah
and ax,00ffh
mov temp, ax
}
return temp; }
//Инициализация для отправки
void InitSend () {
ECB. ESRAddress=0;
ECB. Socket=0×5555;
ECB. FragmentCnt=1;
ECB. Address=&IPX;
ECB. Size=sizeof (IPX);
IPX. PacketType=4;
IPX. DestNetwork=0;
IPX. DestSocket=0×5555; }
//Отправка пакета
int SendPack () {
int i;
union REGS inregs, outregs;
struct SREGS segregs;
InitSend ();
for (i=0;i<6;i++)
{ ECB. ImmAddress[i]=0xff;
IPX. DestNode[i]=0xff;
}
inregs. x.bx=0×0003;
segregs. es=_DS;
inregs. x.si=(unsigned)&ECB;
int86x (0x7a,&inregs,&outregs,&segregs);
if ((ECB.
Оставить комментарий