Annotation of ntddk/src/comm/serial/serialp.h, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1990, 1991, 1992, 1993 Microsoft Corporation
                      4: 
                      5: Module Name :
                      6:        
                      7:     serialp.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     Prototypes and macros that are used throughout the driver.
                     12: 
                     13: Author:
                     14: 
                     15:     Anthony V. Ercolano                 September 26, 1991
                     16: 
                     17: Revision History:
                     18: --*/
                     19: 
                     20: typedef
                     21: NTSTATUS
                     22: (*PSERIAL_START_ROUTINE) (
                     23:     IN PSERIAL_DEVICE_EXTENSION
                     24:     );
                     25: 
                     26: typedef
                     27: VOID
                     28: (*PSERIAL_GET_NEXT_ROUTINE) (
                     29:     IN PIRP *CurrentOpIrp,
                     30:     IN PLIST_ENTRY QueueToProcess,
                     31:     OUT PIRP *NewIrp,
                     32:     IN BOOLEAN CompleteCurrent
                     33:     );
                     34: 
                     35: NTSTATUS
                     36: SerialRead(
                     37:     IN PDEVICE_OBJECT DeviceObject,
                     38:     IN PIRP Irp
                     39:     );
                     40: 
                     41: NTSTATUS
                     42: SerialStartRead(
                     43:     IN PSERIAL_DEVICE_EXTENSION Extension
                     44:     );
                     45: 
                     46: VOID
                     47: SerialCompleteRead(
                     48:     IN PKDPC Dpc,
                     49:     IN PVOID DeferredContext,
                     50:     IN PVOID SystemContext1,
                     51:     IN PVOID SystemContext2
                     52:     );
                     53: 
                     54: VOID
                     55: SerialReadTimeout(
                     56:     IN PKDPC Dpc,
                     57:     IN PVOID DeferredContext,
                     58:     IN PVOID SystemContext1,
                     59:     IN PVOID SystemContext2
                     60:     );
                     61: 
                     62: VOID
                     63: SerialIntervalReadTimeout(
                     64:     IN PKDPC Dpc,
                     65:     IN PVOID DeferredContext,
                     66:     IN PVOID SystemContext1,
                     67:     IN PVOID SystemContext2
                     68:     );
                     69: 
                     70: NTSTATUS
                     71: SerialFlush(
                     72:     IN PDEVICE_OBJECT DeviceObject,
                     73:     IN PIRP Irp
                     74:     );
                     75: 
                     76: NTSTATUS
                     77: SerialWrite(
                     78:     IN PDEVICE_OBJECT DeviceObject,
                     79:     IN PIRP Irp
                     80:     );
                     81: 
                     82: NTSTATUS
                     83: SerialStartWrite(
                     84:     IN PSERIAL_DEVICE_EXTENSION Extension
                     85:     );
                     86: 
                     87: VOID
                     88: SerialGetNextWrite(
                     89:     IN PIRP *CurrentOpIrp,
                     90:     IN PLIST_ENTRY QueueToProcess,
                     91:     IN PIRP *NewIrp,
                     92:     IN BOOLEAN CompleteCurrent
                     93:     );
                     94: 
                     95: VOID
                     96: SerialCompleteWrite(
                     97:     IN PKDPC Dpc,
                     98:     IN PVOID DeferredContext,
                     99:     IN PVOID SystemContext1,
                    100:     IN PVOID SystemContext2
                    101:     );
                    102: 
                    103: BOOLEAN
                    104: SerialProcessEmptyTransmit(
                    105:     IN PVOID Context
                    106:     );
                    107: 
                    108: VOID
                    109: SerialWriteTimeout(
                    110:     IN PKDPC Dpc,
                    111:     IN PVOID DeferredContext,
                    112:     IN PVOID SystemContext1,
                    113:     IN PVOID SystemContext2
                    114:     );
                    115: 
                    116: VOID
                    117: SerialCommError(
                    118:     IN PKDPC Dpc,
                    119:     IN PVOID DeferredContext,
                    120:     IN PVOID SystemContext1,
                    121:     IN PVOID SystemContext2
                    122:     );
                    123: 
                    124: NTSTATUS
                    125: SerialCleanup(
                    126:     IN PDEVICE_OBJECT DeviceObject,
                    127:     IN PIRP Irp
                    128:     );
                    129: 
                    130: NTSTATUS
                    131: SerialCreateOpen(
                    132:     IN PDEVICE_OBJECT DeviceObject,
                    133:     IN PIRP Irp
                    134:     );
                    135: 
                    136: NTSTATUS
                    137: SerialClose(
                    138:     IN PDEVICE_OBJECT DeviceObject,
                    139:     IN PIRP Irp
                    140:     );
                    141: 
                    142: BOOLEAN
                    143: SerialSetDTR(
                    144:     IN PVOID Context
                    145:     );
                    146: 
                    147: BOOLEAN
                    148: SerialClrDTR(
                    149:     IN PVOID Context
                    150:     );
                    151: 
                    152: BOOLEAN
                    153: SerialSetRTS(
                    154:     IN PVOID Context
                    155:     );
                    156: 
                    157: BOOLEAN
                    158: SerialClrRTS(
                    159:     IN PVOID Context
                    160:     );
                    161: 
                    162: BOOLEAN
                    163: SerialSetChars(
                    164:     IN PVOID Context
                    165:     );
                    166: 
                    167: BOOLEAN
                    168: SerialSetBaud(
                    169:     IN PVOID Context
                    170:     );
                    171: 
                    172: BOOLEAN
                    173: SerialSetLineControl(
                    174:     IN PVOID Context
                    175:     );
                    176: 
                    177: BOOLEAN
                    178: SerialSetupNewHandFlow(
                    179:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    180:     IN PSERIAL_HANDFLOW NewHandFlow
                    181:     );
                    182: 
                    183: BOOLEAN
                    184: SerialSetHandFlow(
                    185:     IN PVOID Context
                    186:     );
                    187: 
                    188: BOOLEAN
                    189: SerialTurnOnBreak(
                    190:     IN PVOID Context
                    191:     );
                    192: 
                    193: BOOLEAN
                    194: SerialTurnOffBreak(
                    195:     IN PVOID Context
                    196:     );
                    197: 
                    198: BOOLEAN
                    199: SerialPretendXoff(
                    200:     IN PVOID Context
                    201:     );
                    202: 
                    203: BOOLEAN
                    204: SerialPretendXon(
                    205:     IN PVOID Context
                    206:     );
                    207: 
                    208: VOID
                    209: SerialHandleReducedIntBuffer(
                    210:     IN PSERIAL_DEVICE_EXTENSION Extension
                    211:     );
                    212: 
                    213: VOID
                    214: SerialProdXonXoff(
                    215:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    216:     IN BOOLEAN SendXon
                    217:     );
                    218: 
                    219: NTSTATUS
                    220: SerialIoControl(
                    221:     IN PDEVICE_OBJECT DeviceObject,
                    222:     IN PIRP Irp
                    223:     );
                    224: 
                    225: NTSTATUS
                    226: SerialStartMask(
                    227:     IN PSERIAL_DEVICE_EXTENSION Extension
                    228:     );
                    229: 
                    230: VOID
                    231: SerialCancelWait(
                    232:     IN PDEVICE_OBJECT DeviceObject,
                    233:     IN PIRP Irp
                    234:     );
                    235: 
                    236: VOID
                    237: SerialCompleteWait(
                    238:     IN PKDPC Dpc,
                    239:     IN PVOID DeferredContext,
                    240:     IN PVOID SystemContext1,
                    241:     IN PVOID SystemContext2
                    242:     );
                    243: 
                    244: VOID
                    245: SerialStartImmediate(
                    246:     IN PSERIAL_DEVICE_EXTENSION Extension
                    247:     );
                    248: 
                    249: VOID
                    250: SerialCompleteImmediate(
                    251:     IN PKDPC Dpc,
                    252:     IN PVOID DeferredContext,
                    253:     IN PVOID SystemContext1,
                    254:     IN PVOID SystemContext2
                    255:     );
                    256: 
                    257: VOID
                    258: SerialTimeoutImmediate(
                    259:     IN PKDPC Dpc,
                    260:     IN PVOID DeferredContext,
                    261:     IN PVOID SystemContext1,
                    262:     IN PVOID SystemContext2
                    263:     );
                    264: 
                    265: VOID
                    266: SerialTimeoutXoff(
                    267:     IN PKDPC Dpc,
                    268:     IN PVOID DeferredContext,
                    269:     IN PVOID SystemContext1,
                    270:     IN PVOID SystemContext2
                    271:     );
                    272: 
                    273: VOID
                    274: SerialCompleteXoff(
                    275:     IN PKDPC Dpc,
                    276:     IN PVOID DeferredContext,
                    277:     IN PVOID SystemContext1,
                    278:     IN PVOID SystemContext2
                    279:     );
                    280: 
                    281: NTSTATUS
                    282: SerialStartPurge(
                    283:     IN PSERIAL_DEVICE_EXTENSION Extension
                    284:     );
                    285: 
                    286: BOOLEAN
                    287: SerialPurgeInterruptBuff(
                    288:     IN PVOID Context
                    289:     );
                    290: 
                    291: NTSTATUS
                    292: SerialQueryInformationFile(
                    293:     IN PDEVICE_OBJECT DeviceObject,
                    294:     IN PIRP Irp
                    295:     );
                    296: 
                    297: NTSTATUS
                    298: SerialSetInformationFile(
                    299:     IN PDEVICE_OBJECT DeviceObject,
                    300:     IN PIRP Irp
                    301:     );
                    302: 
                    303: VOID
                    304: SerialKillAllReadsOrWrites(
                    305:     IN PDEVICE_OBJECT DeviceObject,
                    306:     IN PLIST_ENTRY QueueToClean,
                    307:     IN PIRP *CurrentOpIrp
                    308:     );
                    309: 
                    310: VOID
                    311: SerialGetNextIrp(
                    312:     IN PIRP *CurrentOpIrp,
                    313:     IN PLIST_ENTRY QueueToProcess,
                    314:     OUT PIRP *NextIrp,
                    315:     IN BOOLEAN CompleteCurrent
                    316:     );
                    317: 
                    318: VOID
                    319: SerialTryToCompleteCurrent(
                    320:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    321:     IN PKSYNCHRONIZE_ROUTINE SynchRoutine OPTIONAL,
                    322:     IN KIRQL IrqlForRelease,
                    323:     IN NTSTATUS StatusToUse,
                    324:     IN PIRP *CurrentOpIrp,
                    325:     IN PLIST_ENTRY QueueToProcess,
                    326:     IN PKTIMER IntervalTimer,
                    327:     IN PKTIMER TotalTimer,
                    328:     IN PSERIAL_START_ROUTINE Starter,
                    329:     IN PSERIAL_GET_NEXT_ROUTINE GetNextIrp
                    330:     );
                    331: 
                    332: NTSTATUS
                    333: SerialStartOrQueue(
                    334:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    335:     IN PIRP Irp,
                    336:     IN PLIST_ENTRY QueueToExamine,
                    337:     IN PIRP *CurrentOpIrp,
                    338:     IN PSERIAL_START_ROUTINE Starter
                    339:     );
                    340: 
                    341: VOID
                    342: SerialCancelQueued(
                    343:     PDEVICE_OBJECT DeviceObject,
                    344:     PIRP Irp
                    345:     );
                    346: 
                    347: NTSTATUS
                    348: SerialCompleteIfError(
                    349:     PDEVICE_OBJECT DeviceObject,
                    350:     PIRP Irp
                    351:     );
                    352: 
                    353: ULONG
                    354: SerialHandleModemUpdate(
                    355:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    356:     IN BOOLEAN DoingTX
                    357:     );
                    358: 
                    359: BOOLEAN
                    360: SerialISR(
                    361:     IN PKINTERRUPT InterruptObject,
                    362:     IN PVOID Context
                    363:     );
                    364: 
                    365: BOOLEAN
                    366: SerialDispatchISR(
                    367:     IN PKINTERRUPT InterruptObject,
                    368:     IN PVOID Context
                    369:     );
                    370: 
                    371: NTSTATUS
                    372: SerialGetDivisorFromBaud(
                    373:     IN ULONG ClockRate,
                    374:     IN LONG DesiredBaud,
                    375:     OUT PSHORT AppropriateDivisor
                    376:     );
                    377: 
                    378: VOID
                    379: SerialUnload(
                    380:     IN PDRIVER_OBJECT DriverObject
                    381:     );
                    382: 
                    383: BOOLEAN
                    384: SerialReset(
                    385:     IN PVOID Context
                    386:     );
                    387: 
                    388: BOOLEAN
                    389: SerialPerhapsLowerRTS(
                    390:     IN PVOID Context
                    391:     );
                    392: 
                    393: VOID
                    394: SerialStartTimerLowerRTS(
                    395:     IN PKDPC Dpc,
                    396:     IN PVOID DeferredContext,
                    397:     IN PVOID SystemContext1,
                    398:     IN PVOID SystemContext2
                    399:     );
                    400: 
                    401: VOID
                    402: SerialInvokePerhapsLowerRTS(
                    403:     IN PKDPC Dpc,
                    404:     IN PVOID DeferredContext,
                    405:     IN PVOID SystemContext1,
                    406:     IN PVOID SystemContext2
                    407:     );
                    408: 
                    409: VOID
                    410: SerialCleanupDevice(
                    411:     IN PSERIAL_DEVICE_EXTENSION Extension
                    412:     );
                    413: 
                    414: UCHAR
                    415: SerialProcessLSR(
                    416:     IN PSERIAL_DEVICE_EXTENSION Extension
                    417:     );
                    418: 
                    419: LARGE_INTEGER
                    420: SerialGetCharTime(
                    421:     IN PSERIAL_DEVICE_EXTENSION Extension
                    422:     );
                    423: 
                    424: BOOLEAN
                    425: SerialSharerIsr(
                    426:     IN PKINTERRUPT InterruptObject,
                    427:     IN PVOID Context
                    428:     );
                    429: 
                    430: BOOLEAN
                    431: SerialMarkClose(
                    432:     IN PVOID Context
                    433:     );
                    434: 
                    435: BOOLEAN
                    436: SerialIndexedMultiportIsr(
                    437:     IN PKINTERRUPT InterruptObject,
                    438:     IN PVOID Context
                    439:     );
                    440: 
                    441: BOOLEAN
                    442: SerialBitMappedMultiportIsr(
                    443:     IN PKINTERRUPT InterruptObject,
                    444:     IN PVOID Context
                    445:     );
                    446: 
                    447: VOID
                    448: SerialPutChar(
                    449:     IN PSERIAL_DEVICE_EXTENSION Extension,
                    450:     IN UCHAR CharToPut
                    451:     );
                    452: 
                    453: 
                    454: typedef struct _SERIAL_UPDATE_CHAR {
                    455:     PSERIAL_DEVICE_EXTENSION Extension;
                    456:     ULONG CharsCopied;
                    457:     BOOLEAN Completed;
                    458:     } SERIAL_UPDATE_CHAR,*PSERIAL_UPDATE_CHAR;
                    459: 
                    460: //
                    461: // The following simple structure is used to send a pointer
                    462: // the device extension and an ioctl specific pointer
                    463: // to data.
                    464: //
                    465: typedef struct _SERIAL_IOCTL_SYNC {
                    466:     PSERIAL_DEVICE_EXTENSION Extension;
                    467:     PVOID Data;
                    468:     } SERIAL_IOCTL_SYNC,*PSERIAL_IOCTL_SYNC;
                    469: 
                    470: //
                    471: // The following three macros are used to initialize, increment
                    472: // and decrement reference counts in IRPs that are used by
                    473: // this driver.  The reference count is stored in the fourth
                    474: // argument of the irp, which is never used by any operation
                    475: // accepted by this driver.
                    476: //
                    477: 
                    478: #define SERIAL_INIT_REFERENCE(Irp) { \
                    479:     ASSERT(sizeof(LONG) <= sizeof(PVOID)); \
                    480:     IoGetCurrentIrpStackLocation((Irp))->Parameters.Others.Argument4 = NULL; \
                    481:     }
                    482: 
                    483: #define SERIAL_INC_REFERENCE(Irp) \
                    484:    ((*((LONG *)(&(IoGetCurrentIrpStackLocation((Irp)))->Parameters.Others.Argument4)))++)
                    485: 
                    486: #define SERIAL_DEC_REFERENCE(Irp) \
                    487:    ((*((LONG *)(&(IoGetCurrentIrpStackLocation((Irp)))->Parameters.Others.Argument4)))--)
                    488: 
                    489: #define SERIAL_REFERENCE_COUNT(Irp) \
                    490:     ((LONG)((IoGetCurrentIrpStackLocation((Irp))->Parameters.Others.Argument4)))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.