?? bindery.c
字號:
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;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -