LogPhysicalRecord

Logs a physical record into the log table and optionally locks the record

Local Servers:blocking
Remote Servers:blocking
Classification:3.x, 4.x, 5.x, 6.x
Service:Server-Based Synchronization

Syntax

  #include <\nlm\nit\nwsync.h>  
   
  int LogPhysicalRecord (  
     int    fileHandle,  
     long   recordStartOffset,  
     long   recordLength,  
     BYTE   lockDirective,  
     WORD   timeoutLimit); 
  

Parameters

fileHandle
(IN) Specifies the handle of the file containing the record to be logged.
recordStartOffset
(IN) Specifies the offset within the file where the record begins.
recordLength
(IN) Specifies the length of the record in bytes.
lockDirective
(IN) Indicates if and how the record should be locked:
  • 0x00 = Log record.
  • 0x01 = Log and lock record with an exclusive lock.
  • 0x03 = Log and lock record with a sharable read-only lock.
timeoutLimit
(IN) Specifies the timeout value (valid only if lockDirective is not 0).

Return Values

Decimal

Hex

Constant

0

(0x00)

ESUCCESS

150

(0x96)

ERR_SERVER_OUT_OF_MEMORY

254

(0xFE)

ERR_TIMEOUT_FAILURE

Timeout limit was reached before record was available for locking.

255

(0xFF)

ERR_FAILURE

Remarks

For cross-platform functionality, call NWLogPhysicalRecord.

A log table contains data-locking information used by a server. The server tracks this information. Whenever a physical record is logged, information identifying the data being logged is placed in the log table. Normally, a set of records are logged and then locked as a set. However, a single record can also be locked when it is placed in the log table.

When using log tables, an application first logs all records to complete a transaction. The application then attempts to lock the logged set of records. If some of the logged resources cannot be locked, the lock fails and none of the resources are locked. Therefore, either all of the resources needed to complete a transaction are locked, or none of the resources are locked. This function cannot lock physical records that are exclusively locked by other applications.

The fileHandle is a valid file handle returned by a previous call to open, sopen, creat, or fileno.

When the lockDirective parameter specifies that the physical record should be locked when it is logged, the timeoutLimit parameter indicates how long the server should wait if it cannot lock the record immediately. The timeoutLimit parameter is specified in units of 1/18 of a second (0 means no wait).

See Also

ClearPhysicalRecord, ClearPhysicalRecordSet, LockPhysicalRecordSet, ReleasePhysicalRecord, ReleasePhysicalRecordSet