Annotation of ntddk/src/comm/serial/serialp.h, revision 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.