ulFunction : uLong; // Input - SMH command function
hid : hID; // Input
hstream : hStream; // Input
ulFlags : uLong; // Input/Output
ulGetNumEntries : uLong; // Input/Output - # of entries in table
ulRetNumEntries : uLong; // Input/Output - # of entries in table
pGetBufTab : pVoid; // Output - Ptr to buffer/record table
pRetBufTab : pVoid; // Input - Ptr to buffer/record table
end;
pParm_Notify = ^Parm_Notify;
SrcBufTab = record // srcbuftab
pBuffer : pVoid; // Ptr to buffer
pRecord : pVoid; // Ptr to record in buffer (split-streams only)
ulLength : uLong; // Max buf length on GetEmpty, Filled
// (actual) rec/buf length on ReturnFull.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
end;
pSrcBufTab = ^SrcBufTab;
TgtBufTab = record // tgtbuftab
pBuffer : pVoid; // Ptr to buffer
ulBufId : uLong; // Buffer ID. Passed to SH on GetFull, must
// be passed back to SSM on ReturnEmpty.
ulLength : uLong; // Filled (actual) buffer length on GetFull,
// unused on ReturnEmpty.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
end;
pTgtBufTab = ^TgtBufTab;
// EXTENDED SMH_NOTIFY Structures
Parm_Enotify = record // smhenot
ulFunction : uLong; // Input - SMH command function
hid : hID; // Input
hstream : hStream; // Input
ulFlags : uLong; // Input/Output
ulGetNumEntries : uLong; // Input/Output - # of entries in table
ulRetNumEntries : uLong; // Input/Output - # of entries in table
pGetBufTab : pVoid; // Output - Ptr to buffer/record table
pRetBufTab : pVoid; // Input - Ptr to buffer/record table
ulParm1 : uLong; // Reserved for future use
ulParm2 : uLong; // Reserved for future use
end;
pParm_Enotify = ^Parm_Enotify;
ESrcBufTab = record // esrcbuftab
pBuffer : pVoid; // Ptr to buffer
pRecord : pVoid; // Ptr to record in buffer (split-streams only)
ulLength : uLong; // Max buf length on GetEmpty, Filled
// (actual) rec/buf length on ReturnFull.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
ulParm1 : uLong; // Record or buffer specific data
ulParm2 : uLong; // Record or buffer specific data
end;
pESrcBufTab = ^ESrcBufTab;
ETgtBufTab = record // etgtbuftab
pBuffer : pVoid; // Ptr to buffer
ulBufId : uLong; // Buffer ID. Passed to SH on GetFull, must
// be passed back to SSM on ReturnEmpty.
ulLength : uLong; // Filled (actual) buffer length on GetFull,
// unused on ReturnEmpty.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
ulParm1 : uLong; // Buffer specific data
ulParm2 : uLong; // Buffer specific data
end;
pETgtBufTab = ^ETgtBufTab;
EPSrcBufTab = record // epsrcbuftab
pBuffer : pVoid; // Ptr to buffer
pRecord : pVoid; // Ptr to record in buffer (split-streams only)
ulLength : uLong; // Max buf length on GetEmpty, Filled
// (actual) rec/buf length on ReturnFull.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
ulParm1 : uLong; // Record or buffer specific data
ulParm2 : uLong; // Record or buffer specific data
pProcessLin : pVoid; // Process Linear record ptr
end;
pEPSrcBufTab = ^EPSrcBufTab;
EPTgtBufTab = record // eptgtbuftab
pBuffer : pVoid; // Ptr to buffer
ulBufId : uLong; // Buffer ID. Passed to SH on GetFull, must
// be passed back to SSM on ReturnEmpty.
ulLength : uLong; // Filled (actual) buffer length on GetFull,
// unused on ReturnEmpty.
ulMessageParm : uLong; // Message to passed to application
mmtimeOffset : mmTime; // mmtime offset from beginning of buffer
ulParm1 : uLong; // Buffer specific data
ulParm2 : uLong; // Buffer specific data
pProcessLin : pVoid; // Process Linear buffer ptr
end;
pEPTgtBufTab = ^EPTgtBufTab;
const
//SMH_ulFlags
BUF_GETEMPTY = $00000001; // Ptr returned in SMH_pGetBuffer
BUF_RETURNFULL = $00000002; // Ptr passed in SMH_pRetBuffer
BUF_GETFULL = $00000004; // Ptr returned in SMH_pGetBuffer
BUF_RETURNEMPTY = $00000008; // Ptr passed in SMH_pRetBuffer
BUF_GIVEBUF = $00000010; // Ptr passed in SMH_pRetBuffer
BUF_EOS = $00000100; // End of stream. Source sets this on
// last buffer. Target sets it after
// consuming the laset buffer.
BUF_RECORDS = $00004000; // One or more records (Split-stream)
BUF_LASTRECORD = $00008000; // (BUF_RETURNFULL only) Mark
// these record(s) as being the
// last in the buffer. So the SSM
// knows the maximum # of records
// produced for this buffer.
// (Split stream only)
//SMH_ulFlags
BUF_LINEAR = $00010000; // Ptrs are Global linear
BUF_PHYSICAL = $00020000; // Ptrs are physical
// (valid only for phyically
// contiguous buffers)
BUF_RESERVED = $00040000; // Reserved
BUF_GDT = $00080000; // Ptrs are GDT sel:offset
BUF_EXTENDED = $80000000; // Use Extended SMH_NOTIFY structures
BUF_EXTENDEDPTR = $40000000; // Use Extendedptr SMH_NOTIFY structures
// Implies BUF_EXTENDED
VALIDSOURCEFLAGS = BUF_RETURNFULL or BUF_GETEMPTY or BUF_EOS or BUF_LASTRECORD or BUF_PHYSICAL or BUF_LINEAR or BUF_GDT or BUF_RECORDS or BUF_GIVEBUF or BUF_EXTENDED or BUF_EXTENDEDPTR;
VALIDTARGETFLAGS = BUF_RETURNEMPTY or BUF_GETFULL or BUF_PHYSICAL or BUF_LINEAR or BUF_GDT or BUF_EOS or BUF_EXTENDED or BUF_EXTENDEDPTR;