⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bindery.c

📁 网络打印机及文件共享 C程序源代码 用于网络通信
💻 C
📖 第 1 页 / 共 3 页
字号:
   if (opregs.h.al)
      return(opregs.h.al);

   *objectID = LongSwap(*((long *)(replyBuf + 2)));

   return (0);

}

int GetBinderyObjectName(objectID, objectName, objectType)
unsigned long  objectID;
char *objectName;
int  *objectType;
{

   char  requestBuf[7], replyBuf[56];
   int   ccode;

   requestBuf[2] = 54;
   *((long *)(requestBuf + 3)) =(long)(LongSwap((long)objectID));
   *((int *)requestBuf) = 5;
   *((int *)replyBuf) = 54;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   if (opregs.h.al)
      return(opregs.h.al);

   if (objectType != (int *)0)
      *objectType = IntSwap(*((int *)(replyBuf + 6)));

   if (objectName != (char *)0)
      strcpy(objectName, replyBuf + 8);

   return (0x00);

}

int ISBinderyObjectInSet(objectName, objectType,
                         propertyName, memberName, memberType)
char *objectName;
char *propertyName;
char *memberName;
int   objectType;
int   memberType;
{

   char requestBuf[119], replyBuf[2];
   int ccode, objLength, propLength, memLength, offset;

   requestBuf[2] = 0x43;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   objLength =  strlen(objectName);
   propLength = strlen(propertyName);
   memLength =  strlen(memberName);
   requestBuf[5] = objLength;
   memmove(requestBuf + 6, objectName, objLength);
   offset = objLength + 6;
   requestBuf[offset++] = propLength;
   memmove(requestBuf + offset, propertyName, propLength);
   offset =  objLength + propLength + 7;
   *((int *)(requestBuf + offset)) = IntSwap(memberType);
   offset += 2;
   requestBuf[offset++] = memLength;
   memmove(requestBuf + offset, memberName, memLength);
   *((int *)requestBuf) = objLength + propLength + memLength + 8;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   return(opregs.h.al);

}

int RenameBinderyObject(objectName, newObjectName, objectType)
char *objectName;
char *newObjectName;
int   objectType;
{

   char  requestBuf[101], replyBuf[2];
   int   offset, len, newlen;

   requestBuf[2] = 52;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   len = strlen(objectName);
   requestBuf[5] = len;
   memmove(requestBuf + 6, objectName, len);
   offset = len + 6;
   newlen = strlen(newObjectName);
   requestBuf[offset++] = newlen;
   memmove(requestBuf + offset, newObjectName, newlen);
   *((int *)requestBuf) = len + newlen + 5;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   return(opregs.h.al);

}

int ReadPropertyValue(objectName, objectType, propertyName, segmentNumber,
                      propertyValue, moreSegments, propertyFlags)
char *objectName;
int   objectType;
char *propertyName;
int   segmentNumber;
char *propertyValue;
char *moreSegments;
char *propertyFlags;
{

   char requestBuf[70], replyBuf[132];
   int ccode, offset, len, proplen;

   requestBuf[2] = 61;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   len = strlen(objectName);
   requestBuf[5] = len;
   memmove(requestBuf + 6, objectName, len);
   offset = len + 6;
   requestBuf[offset++] = (char)segmentNumber;
   proplen = strlen(propertyName);
   requestBuf[offset++] = proplen;
   memmove(requestBuf + offset, propertyName, proplen);
   *((int *)requestBuf) = len + proplen + 6;
   *((int *)replyBuf) = 130;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   if (opregs.h.al)
      return(opregs.h.al);

   memmove(propertyValue, replyBuf + 2, 128);

   if (moreSegments != (char *)0)
       *moreSegments = replyBuf[130];

   if (propertyFlags != (char *)0)
       *propertyFlags = replyBuf[131];

   return (0);

}

int ScanBinderyObject(searchObjectName, searchObjectType, objectID, objectName,
                    objectType, objectHasProperties, objectFlag, objectSecurity)
char *searchObjectName;
int  searchObjectType;
long *objectID;
char *objectName;
int  *objectType;
char *objectHasProperties;
char *objectFlag;
char *objectSecurity;
{

   char requestBuf[57], replyBuf[59];
   int  searchlen;

   requestBuf[2] = 55;
   *((long *)(requestBuf + 3)) = LongSwap(*objectID);
   *((int *)(requestBuf + 7)) = IntSwap(searchObjectType);
   searchlen = strlen(searchObjectName);
   requestBuf[9] = searchlen;
   memmove(requestBuf + 10, searchObjectName, searchlen);
   *((int *)requestBuf) = searchlen + 8;
   *((int *)replyBuf) = 57;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   if (opregs.h.al)
      return(opregs.h.al);

   if (objectName != (char *)0)
      strcpy(objectName, replyBuf + 8);

   *objectID = LongSwap(*((long *)(replyBuf + 2)));

   if (objectType != (int *)0)
      *objectType = IntSwap(*((int *)(replyBuf + 6)));

   if (objectHasProperties != (char *)0)
      *objectHasProperties = replyBuf[58];

   if (objectFlag != (char *)0)
      *objectFlag = replyBuf[56];

   if (objectSecurity != (char *)0)
      *objectSecurity = replyBuf[57];

   return (0);

}

int ScanProperty(objectName, objectType, searchPropertyName, sequenceNumber,
                 propertyName, propertyFlags, propertySecurity,
                 propertyHasValue, moreProperties)
char *objectName;
int   objectType;
char *searchPropertyName;
long *sequenceNumber;
char *propertyName;
char *propertyFlags;
char *propertySecurity;
char *propertyHasValue;
char *moreProperties;
{

   char requestBuf[73], replyBuf[26];
   int offset, ccode, len, searchlen;

   requestBuf[2] = 60;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   len = strlen(objectName);
   requestBuf[5] = len;
   memmove(requestBuf + 6, objectName, len);
   offset = len + 6;
   *((long *)(requestBuf + offset)) = *sequenceNumber;
   offset += 4;
   searchlen = strlen(searchPropertyName);
   requestBuf[offset++] = searchlen;
   memmove(requestBuf + offset, searchPropertyName, searchlen);
   *((int *)requestBuf) = len + searchlen + 9;
   *((int *)replyBuf) = 26 - 2;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   if (opregs.h.al)
      return(opregs.h.al);

   if (propertyName != (char *)0)
      strcpy(propertyName, (replyBuf + 2));

   if (propertyFlags != (char *)0)
      *propertyFlags = replyBuf[18];

   if (propertySecurity != (char *)0)
      *propertySecurity = replyBuf[19];

   *sequenceNumber = *((long *)(replyBuf + 20));

   if (propertyHasValue != (char *)0)
      *propertyHasValue = replyBuf[24];

   if (moreProperties != (char *)0)
      *moreProperties = replyBuf[25];

   return (0);

}

int VerifyBinderyObjectPassword(objectName, objectType, Password)
char *objectName;
char *Password;
int   objectType;
{

   char requestBuf[181], replyBuf[2];
   int ccode, objLength, paswdLength, offset;

   requestBuf[2] = 0x3F;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   objLength =  strlen(objectName);
   paswdLength = strlen(Password);
   requestBuf[5] = objLength;
   memmove(requestBuf + 6, objectName, objLength);
   offset = objLength + 6;
   requestBuf[offset++] = paswdLength;
   memmove(requestBuf + offset, Password, paswdLength);
   *((int *)requestBuf) = objLength + paswdLength  + 7;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);
   return(opregs.h.al);

}

int WritePropertyValue(objectName, objectType, propertyName,
		       segmentNumber, propertyValue, erase_remaining_segments)
char *objectName;
int   objectType;
char *propertyName;
int   segmentNumber;
char *propertyValue;
char  erase_remaining_segments;
{

   char requestBuf[199], replyBuf[2];
   int offset, len, proplen;

   requestBuf[2] = 0x3E;
   *((int *)(requestBuf + 3)) = IntSwap(objectType);
   len = strlen(objectName);
   requestBuf[5] = len;
   memmove(requestBuf + 6, objectName, len);
   offset = len + 6;
   requestBuf[offset++] = (char)segmentNumber;
   requestBuf[offset++] = erase_remaining_segments;
   proplen = strlen(propertyName);
   requestBuf[offset++] = proplen;
   memmove(requestBuf + offset, propertyName, proplen);
   offset += proplen;
   memmove(requestBuf + offset, propertyValue, 128);
   *((int *)requestBuf) = len + proplen + 128 + 7;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   return(opregs.h.al);

}


int CloseBindery()
{   char requestBuf[3], replyBuf[2];
   requestBuf[2] = 0x44;
   *((int *)requestBuf) = 1;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   return(opregs.h.al);

}

int OpenBindery()
{   char requestBuf[3], replyBuf[2];
   requestBuf[2] = 0x45;
   *((int *)requestBuf) = 1;
   *((int *)replyBuf) = 0;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   return(opregs.h.al);

}

int GetBinderyAccessLevel(access_level,objectID)
char *access_level;
long *objectID;
{   char requestBuf[3], replyBuf[7];
   requestBuf[2] = 0x46;
   *((int *)requestBuf) = 1;
   *((int *)replyBuf) = 5;

   spregs.ds   = FP_SEG(requestBuf);
   spregs.es   = FP_SEG(replyBuf);
   ipregs.x.si = FP_OFF(requestBuf);
   ipregs.x.di = FP_OFF(replyBuf);
   ipregs.h.ah = 0xE3;
   intdosx(&ipregs,&opregs,&spregs);

   if (opregs.h.al)
      return(opregs.h.al);
   *access_level=replyBuf[2];
   *objectID = LongSwap(*((long *)(replyBuf + 3)));

   return (0);

}

void  prin_secu(object_security)
 char  object_security;
{
 switch (object_security &0x0f)
 {
 case 0:
    printf("anyone can read");
    break;
 case 1:
    printf("logged_user can read");
    break;
 case 2:
    printf("object_oneself can read");
    break;
 case 3:
    printf("supervisor can read");
    break;
}
printf("  ;   ");
 switch (object_security >> 4)
 {
 case 0:
    printf("anyone can write");
    break;
 case 1:
    printf("logged_user can write");
    break;
 case 2:
    printf("object_oneself can write");
    break;
 case 3:
    printf("supervisor can write");
    break;
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -