mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
524 lines
10 KiB
524 lines
10 KiB
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Common Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_Header_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
}
|
|
CCB_Header;
|
|
|
|
|
|
typedef struct CCB_Command_
|
|
{
|
|
CCB_Header;
|
|
}
|
|
CCB_Command;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Auxiliary Group Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_Collate_
|
|
{
|
|
CCB_Header;
|
|
}
|
|
CCB_Collate;
|
|
|
|
typedef struct CCB_CollateFile_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
BYTE PatternIndex;
|
|
BYTE SchemeIndex;
|
|
|
|
QUAD Count;
|
|
WORD RecordSize;
|
|
}
|
|
CCB_CollateFile;
|
|
|
|
typedef struct CCB_Comment_
|
|
{
|
|
CCB_Header;
|
|
|
|
TEXT * CommentTextPointer;
|
|
}
|
|
CCB_Comment;
|
|
|
|
|
|
typedef struct CCB_CreateNext_
|
|
{
|
|
CCB_Header;
|
|
}
|
|
CCB_CreateNext;
|
|
|
|
typedef struct CCB_CreateRecord_
|
|
{
|
|
CCB_Header;
|
|
|
|
QUAD RecordIndex;
|
|
}
|
|
CCB_CreateRecord;
|
|
|
|
typedef struct CCB_CreateRecords_
|
|
{
|
|
CCB_Header;
|
|
|
|
BYTE BufferIndex;
|
|
BYTE PatternIndex;
|
|
WORD RecordSize;
|
|
}
|
|
CCB_CreateRecords;
|
|
|
|
|
|
typedef struct CCB_Record_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
WORD RecordSize;
|
|
}
|
|
CCB_Record;
|
|
|
|
|
|
typedef struct CCB_Utility_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE SourceExtrinsicKey;
|
|
BYTE SourceIntrinsicKey;
|
|
BYTE TargetExtrinsicKey;
|
|
BYTE TargetIntrinsicKey;
|
|
|
|
BYTE PatternIndex;
|
|
BYTE SchemeIndex;
|
|
|
|
QUAD Count;
|
|
WORD RecordSize;
|
|
}
|
|
CCB_Utility;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* File Group Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_HeaderFile_
|
|
{
|
|
struct CCB_Header_;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
}
|
|
CCB_HeaderFile;
|
|
|
|
|
|
typedef struct LOCK_
|
|
{
|
|
WORD Share;
|
|
QUAD Start;
|
|
QUAD Length;
|
|
}
|
|
LOCK;
|
|
|
|
|
|
typedef struct CCB_ChangeFileLocks_
|
|
{
|
|
struct CCB_HeaderFile_;
|
|
|
|
BYTE FileLockCount;
|
|
BYTE FileUnlockCount;
|
|
LOCK FileLocks[1];
|
|
LOCK FileUnlocks[1];
|
|
}
|
|
CCB_ChangeFileLocks;
|
|
|
|
|
|
typedef struct CCB_ChangeFilePointer_
|
|
{
|
|
struct CCB_HeaderFile_;
|
|
|
|
WORD FileOffPoint;
|
|
QUAD FileOffset;
|
|
}
|
|
CCB_ChangeFilePointer;
|
|
|
|
|
|
typedef struct CCB_CloseFile_
|
|
{
|
|
struct CCB_HeaderFile_;
|
|
}
|
|
CCB_CloseFile;
|
|
|
|
|
|
typedef struct CCB_DeleteFile_
|
|
{
|
|
struct CCB_HeaderFile_;
|
|
}
|
|
CCB_DeleteFile;
|
|
|
|
|
|
typedef struct CCB_OpenFile_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE PrototypeExtrinsicKey;
|
|
BYTE PrototypeIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
WORD ScanChangeFlags;
|
|
WORD ScanTraceFlags;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
BYTE AttributesChosen;
|
|
BYTE AttributesDefined;
|
|
|
|
BYTE OpenFlagsChosen;
|
|
BYTE AccessModeChosen;
|
|
BYTE ShareModeChosen;
|
|
|
|
BYTE LocalityFlagsChosen;
|
|
BYTE LocalityFlagsDefined;
|
|
|
|
BYTE OtherFlagsChosen;
|
|
BYTE OtherFlagsDefined;
|
|
|
|
QUAD FileSize;
|
|
WORD RecordSize;
|
|
}
|
|
CCB_OpenFile;
|
|
|
|
|
|
typedef struct CCB_QueryFile_
|
|
{
|
|
struct CCB_HeaderFile_;
|
|
|
|
WORD QueryLevel;
|
|
}
|
|
CCB_QueryFile;
|
|
|
|
|
|
typedef struct CCB_ReadFile_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
BYTE SemaphoreExtrinsicKey;
|
|
BYTE SemaphoreIntrinsicKey;
|
|
|
|
WORD ScanChangeFlags;
|
|
WORD ScanTraceFlags;
|
|
|
|
WORD RecordSize;
|
|
}
|
|
CCB_ReadFile;
|
|
|
|
|
|
typedef struct CCB_TruncateFile_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE PrototypeExtrinsicKey;
|
|
BYTE PrototypeIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
BYTE FileAttributes;
|
|
BYTE FileOpenFlags;
|
|
WORD FileOpenMode;
|
|
|
|
QUAD FileSize;
|
|
WORD RecordSize;
|
|
}
|
|
CCB_TruncateFile;
|
|
|
|
|
|
typedef struct CCB_WriteFile_
|
|
{
|
|
struct CCB_Header_ * CCB_HeaderNextInChain;
|
|
struct CCB_Header_ * CCB_HeaderBackInChain;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
BYTE RequestCode;
|
|
BYTE RequestGroup;
|
|
BYTE RequestClass;
|
|
BYTE RequestModifiers;
|
|
WORD RequestReferenceLine;
|
|
|
|
BYTE FileExtrinsicKey;
|
|
BYTE FileIntrinsicKey;
|
|
|
|
BYTE SemaphoreExtrinsicKey;
|
|
BYTE SemaphoreIntrinsicKey;
|
|
|
|
WORD ScanChangeFlags;
|
|
WORD ScanTraceFlags;
|
|
|
|
WORD RecordSize;
|
|
}
|
|
CCB_WriteFile;
|
|
|
|
|
|
typedef struct PCB_Prototype_
|
|
{
|
|
struct PCB_Prototype_ * PCB_PrototypeNextInChain;
|
|
struct PCB_Prototype_ * PCB_PrototypeBackInChain;
|
|
|
|
BYTE PrototypeExtrinsicKey;
|
|
BYTE PrototypeIntrinsicKey;
|
|
|
|
WORD ScanChangeFlags;
|
|
WORD ScanTraceFlags;
|
|
|
|
BYTE AttributesChosen;
|
|
BYTE AttributesDefined;
|
|
|
|
BYTE OpenFlagsChosen;
|
|
BYTE AccessModeChosen;
|
|
BYTE ShareModeChosen;
|
|
|
|
BYTE LocalityFlagsChosen;
|
|
BYTE LocalityFlagsDefined;
|
|
|
|
BYTE OtherFlagsChosen;
|
|
BYTE OtherFlagsDefined;
|
|
|
|
QUAD FileSize;
|
|
WORD RecordSize;
|
|
}
|
|
PCB_Prototype;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Flow Group Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_Brace_
|
|
{
|
|
CCB_Header;
|
|
CCB_Header * CounterpartOfThisBrace;
|
|
|
|
BYTE BraceNestingLevel;
|
|
}
|
|
CCB_Brace;
|
|
|
|
|
|
typedef struct OCB_OnError_
|
|
{
|
|
struct OCB_OnError_ * OCB_OnErrorNextInChain;
|
|
struct OCB_OnError_ * OCB_OnErrorBackInChain;
|
|
|
|
CCB_Header * OnErrorLowerBoundary;
|
|
CCB_Header * OnErrorUpperBoundary;
|
|
|
|
BYTE OnErrorModifiers;
|
|
BYTE OnErrorNestingLevel;
|
|
}
|
|
OCB_OnError;
|
|
|
|
|
|
typedef struct OCB_OnTimeout_
|
|
{
|
|
struct OCB_OnTimeout_ * OCB_OnTimeoutNextInChain;
|
|
struct OCB_OnTimeout_ * OCB_OnTimeoutBackInChain;
|
|
|
|
CCB_Header * OnTimeoutLowerBoundary;
|
|
CCB_Header * OnTimeoutUpperBoundary;
|
|
|
|
BYTE OnTimeoutModifiers;
|
|
BYTE OnTimeoutNestingLevel;
|
|
}
|
|
OCB_OnTimeout;
|
|
|
|
|
|
typedef struct CCB_Repeat_
|
|
{
|
|
CCB_Header;
|
|
|
|
QUAD RepeatCurrentValue;
|
|
QUAD RepeatControlValue;
|
|
}
|
|
CCB_Repeat;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Semaphore Group Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_Semaphore_
|
|
{
|
|
CCB_Header;
|
|
|
|
BYTE SemaphoreExtrinsicKey;
|
|
BYTE SemaphoreIntrinsicKey;
|
|
}
|
|
CCB_Semaphore;
|
|
|
|
|
|
typedef struct CCB_WaitForSemaphore_
|
|
{
|
|
CCB_Semaphore;
|
|
|
|
QUAD Timeout;
|
|
}
|
|
CCB_WaitForSemaphore;
|
|
|
|
|
|
typedef struct SCB_Semaphore_
|
|
{
|
|
struct SCB_Semaphore_ * SCB_SemaphoreNextInChain;
|
|
struct SCB_Semaphore_ * SCB_SemaphoreBackInChain;
|
|
|
|
BYTE SemaphoreExtrinsicKey;
|
|
BYTE SemaphoreIntrinsicKey;
|
|
|
|
HANDLE Lights;
|
|
}
|
|
SCB_Semaphore;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Timer Group Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct CCB_Timer_
|
|
{
|
|
CCB_Header;
|
|
|
|
BYTE TimerExtrinsicKey;
|
|
BYTE TimerIntrinsicKey;
|
|
}
|
|
CCB_Timer;
|
|
|
|
|
|
typedef struct CCB_Sleep_
|
|
{
|
|
CCB_Header;
|
|
|
|
QUAD TimeToSleep;
|
|
}
|
|
CCB_Sleep;
|
|
|
|
|
|
typedef struct TCB_Timer_
|
|
{
|
|
struct TCB_Timer_ * TCB_TimerNextInChain;
|
|
struct TCB_Timer_ * TCB_TimerBackInChain;
|
|
|
|
BYTE TimerExtrinsicKey;
|
|
BYTE TimerIntrinsicKey;
|
|
|
|
QUAD TimeStarted;
|
|
QUAD TimeChecked;
|
|
}
|
|
TCB_Timer;
|
|
|
|
|
|
typedef struct TCB_TimerReadings_
|
|
{
|
|
QUAD TimeElapsedMajor;
|
|
QUAD TimeElapsedMinor;
|
|
QUAD TimeNow;
|
|
|
|
BYTE TimerExtrinsicKey;
|
|
BYTE TimerIntrinsicKey;
|
|
}
|
|
TCB_TimerReadings;
|
|
|
|
/*---------------------------------------------------------------------------------*/
|
|
/* Other Definitions */
|
|
/*---------------------------------------------------------------------------------*/
|
|
|
|
typedef struct PCB_Process_
|
|
{
|
|
struct PCB_Process_ * PCB_ProcessNextInChain;
|
|
struct PCB_Process_ * PCB_ProcessBackInChain;
|
|
|
|
CCB_Header * CCB_CommandChainEntryPoint;
|
|
FCB_File * FCB_FileChainEntryPoint;
|
|
OCB_OnError * OCB_OnErrorChainEntryPoint;
|
|
OCB_OnTimeout * OCB_OnTimeoutChainEntryPoint;
|
|
struct PCB_Process_ * PCB_ProcessChainEntryPoint;
|
|
PCB_Prototype * PCB_PrototypeChainEntryPoint;
|
|
SCB_Semaphore * SCB_SemaphoreChainEntryPoint;
|
|
TCB_Timer * TCB_TimerChainEntryPoint;
|
|
|
|
BYTE ProcessExtrinsicKey;
|
|
BYTE ProcessIntrinsicKey;
|
|
|
|
WORD ScanTraceFlags;
|
|
QUAD BufferSpace;
|
|
}
|
|
PCB_Process;
|