Annotation of ntddk/src/video/inc/video.h, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1991-1993 Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     video.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     Contains all structure and routine definitions common to the video port
                     12:     driver and the video miniport drivers.
                     13: 
                     14: Notes:
                     15: 
                     16: Revision History:
                     17: 
                     18: --*/
                     19: 
                     20: //
                     21: // Define port driver status code.
                     22: // The values for these are the Win32 error codes
                     23: //
                     24: 
                     25: typedef LONG VP_STATUS;
                     26: typedef VP_STATUS *PVP_STATUS;
                     27: 
                     28: //
                     29: // Defines for registry information and synchronization.
                     30: //
                     31: 
                     32: typedef enum _VIDEO_DEVICE_DATA_TYPE {
                     33:     VpMachineData,
                     34:     VpCmosData,
                     35:     VpBusData,
                     36:     VpControllerData,
                     37:     VpMonitorData
                     38: } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
                     39: 
                     40: typedef enum VIDEO_SYNCHRONIZE_PRIORITY {
                     41:     VpLowPriority,
                     42:     VpMediumPriority,
                     43:     VpHighPriority
                     44: } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
                     45: 
                     46: //
                     47: // Define structure used to call the BIOS int 10 function
                     48: //
                     49: 
                     50: typedef struct _VIDEO_X86_BIOS_ARGUMENTS {
                     51:     ULONG Eax;
                     52:     ULONG Ebx;
                     53:     ULONG Ecx;
                     54:     ULONG Edx;
                     55:     ULONG Esi;
                     56:     ULONG Edi;
                     57:     ULONG Ebp;
                     58: } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
                     59: 
                     60: //
                     61: // Debugging statements. This will remove all the debug information from the
                     62: // "free" version.
                     63: //
                     64: 
                     65: #if DBG
                     66: #define VideoDebugPrint(arg) VideoPortDebugPrint arg
                     67: #else
                     68: #define VideoDebugPrint(arg)
                     69: #endif
                     70: 
                     71: 
                     72: #ifndef _NTOS_
                     73: 
                     74: //
                     75: // These are the various function prototypes of the routines that are
                     76: // provided by the kernel driver to hook out access to io ports.
                     77: //
                     78: 
                     79: typedef
                     80: VP_STATUS
                     81: (*PDRIVER_IO_PORT_UCHAR ) (
                     82:     ULONG Context,
                     83:     ULONG Port,
                     84:     UCHAR AccessMode,
                     85:     PUCHAR Data
                     86:     );
                     87: 
                     88: typedef
                     89: VP_STATUS
                     90: (*PDRIVER_IO_PORT_UCHAR_STRING ) (
                     91:     ULONG Context,
                     92:     ULONG Port,
                     93:     UCHAR AccessMode,
                     94:     PUCHAR Data,
                     95:     ULONG DataLength
                     96:     );
                     97: 
                     98: typedef
                     99: VP_STATUS
                    100: (*PDRIVER_IO_PORT_USHORT ) (
                    101:     ULONG Context,
                    102:     ULONG Port,
                    103:     UCHAR AccessMode,
                    104:     PUSHORT Data
                    105:     );
                    106: 
                    107: typedef
                    108: VP_STATUS
                    109: (*PDRIVER_IO_PORT_USHORT_STRING ) (
                    110:     ULONG Context,
                    111:     ULONG Port,
                    112:     UCHAR AccessMode,
                    113:     PUSHORT Data,
                    114:     ULONG DataLength // number of words
                    115:     );
                    116: 
                    117: typedef
                    118: VP_STATUS
                    119: (*PDRIVER_IO_PORT_ULONG ) (
                    120:     ULONG Context,
                    121:     ULONG Port,
                    122:     UCHAR AccessMode,
                    123:     PULONG Data
                    124:     );
                    125: 
                    126: typedef
                    127: VP_STATUS
                    128: (*PDRIVER_IO_PORT_ULONG_STRING ) (
                    129:     ULONG Context,
                    130:     ULONG Port,
                    131:     UCHAR AccessMode,
                    132:     PULONG Data,
                    133:     ULONG DataLength  // number of dwords
                    134:     );
                    135: 
                    136: #endif // _NTOS_
                    137: 
                    138: 
                    139: //
                    140: // Definition of the request packet sent from the port driver to the
                    141: // miniport driver. It reflects the parameters passed from the
                    142: // DeviceIOControl call made by the windows display driver.
                    143: //
                    144: 
                    145: typedef struct _STATUS_BLOCK {
                    146: 
                    147:     //
                    148:     // Contains the status code of the operation.
                    149:     // This value in one of the Win32 error codes that are defined for use
                    150:     // in the video miniport drivers.
                    151:     //
                    152: 
                    153:     VP_STATUS Status;
                    154: 
                    155:     //
                    156:     // Information returned to the callee.
                    157:     // The meaning of the information varies from function to function. It
                    158:     // is generally used to return the minimum size for the input buffer if
                    159:     // the function takes an input buffer, or the amount of data transfered
                    160:     // back to the caller if the operation returns output.
                    161:     //
                    162: 
                    163:     ULONG Information;
                    164: 
                    165: } STATUS_BLOCK, *PSTATUS_BLOCK;
                    166: 
                    167: //
                    168: // BUGBUG
                    169: // What do we do about overlapping input and output buffers ?
                    170: // Do we want to create a separate output buffer or do we explain that there
                    171: // is a single buffer is used to perform the requests.
                    172: //
                    173: 
                    174: typedef struct _VIDEO_REQUEST_PACKET {
                    175: 
                    176:     //
                    177:     // The IO control code passed to the DeviceIoControl function by the
                    178:     // caller.
                    179:     //
                    180: 
                    181:     ULONG IoControlCode;
                    182: 
                    183:     //
                    184:     // Pointer to a status block provided by the caller. This should be
                    185:     // filled out by the callee with the appropriate information.
                    186:     //
                    187: 
                    188:     PSTATUS_BLOCK StatusBlock;
                    189: 
                    190:     //
                    191:     // Pointer to an input buffer which contains the information passed in
                    192:     // by the caller.
                    193:     //
                    194: 
                    195:     PVOID InputBuffer;
                    196: 
                    197:     //
                    198:     // Size of the input buffer
                    199:     //
                    200: 
                    201:     ULONG InputBufferLength;
                    202: 
                    203:     //
                    204:     // Pointer to an output buffer into which the data returned to the caller
                    205:     // should be stored.
                    206:     //
                    207: 
                    208:     PVOID OutputBuffer;
                    209: 
                    210:     //
                    211:     // Length of the output buffer. This buffer can not be grown by the
                    212:     // callee.
                    213:     //
                    214: 
                    215:     ULONG OutputBufferLength;
                    216: 
                    217: } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
                    218: 
                    219: 
                    220: //
                    221: // The following structure is used to define access ranges. The ranges are
                    222: // used to indicate which ports and memory adresses are being used by the
                    223: // card.
                    224: //
                    225: 
                    226: typedef struct _VIDEO_ACCESS_RANGE {
                    227: 
                    228:     //
                    229:     // Indicates the starting memory address or port number of the range.
                    230:     // This values should be stored before being transformed by
                    231:     // VideoPortGetDeviceBase() which returns the logical address that must
                    232:     // be used by the miniport driver when referencing physical addresses.
                    233:     //
                    234: 
                    235:     PHYSICAL_ADDRESS RangeStart;
                    236: 
                    237:     //
                    238:     // Indicates the length in bytes, or number of ports in the range. This
                    239:     // value should indicate the range actually decoded by the adapter. For
                    240:     // example, if the adapter uses 7 registers but responds to eight, the
                    241:     // RangeLength should be set to 8.
                    242: 
                    243:     ULONG RangeLength;
                    244: 
                    245:     //
                    246:     // Indicates if the range is in IO space (TRUE) or in memory space (FALSE).
                    247:     //
                    248: 
                    249:     UCHAR RangeInIoSpace;
                    250: 
                    251:     //
                    252:     // Indicates if the range should be visible by the Windows display driver.
                    253:     // This is done so that a Windows display driver can access certain
                    254:     // video ports directly. This will only be allowed if the caller has the
                    255:     // required privileges (is a trusted subsystem) to access the range.
                    256:     //
                    257:     // Synchronization of access to ports or memory in the range must be
                    258:     // done explicitly by the miniport driver and the user mode process so
                    259:     // that they both don't try to program the device simultaneously.
                    260:     //
                    261:     // Non visible ranges should include video memory, ROM addresses, etc.
                    262:     // which are not required to program the device for output purposes.
                    263:     //
                    264:     //
                    265: 
                    266:     UCHAR RangeVisible;
                    267: 
                    268:     //
                    269:     // This field determines if the range can be shared with another device.
                    270:     // The rule should be applied as follow.
                    271:     //
                    272:     // - If the range of memory or IO ports should be "owned" by this driver,
                    273:     //   and that any other driver trying to access this range may cause
                    274:     //   a problem, FALSE should be returned.
                    275:     //
                    276:     // - If the range can be shared with another co-operating device driver,
                    277:     //   then the share field should be set to TRUE.
                    278:     //
                    279:     // As a guideline, the VGA miniport driver will claim all of its resources
                    280:     // as shareable so that it can be used as a VGA compatible device with
                    281:     // any other driver (such as an S3 or XGA.
                    282:     //
                    283:     // Super VGA miniport drivers that implement all the VGA functionality
                    284:     // (declared in the Registry as VGACOMPATIBLE=1) should claim the range
                    285:     // as non-shareable since they don't want the VGA to run at the same time.
                    286:     //
                    287:     // Miniports for cards such as an S3 or XGA that have an XGA on the board
                    288:     // but do not implement the VGA functionality will run with the VGA
                    289:     // miniport loaded and should therefore claim all the resources shared
                    290:     // with the VGA as shareable.
                    291:     //
                    292:     // Miniports for cards that work with a pass-through and that can be
                    293:     // connected to any VGA/SVGA card should not be using any VGA ports or
                    294:     // memory ranges ! ... but if they do they should not claim those
                    295:     // resources since they will cause a conflict in the system because the
                    296:     // SVGA cards will have claimed them as non-shareable ...
                    297:     //
                    298: 
                    299:     UCHAR RangeShareable;
                    300: 
                    301: } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
                    302: 
                    303: 
                    304: //
                    305: // This structure contains the specific configuration information about the
                    306: // device. The information is initialized by the port driver and it should
                    307: // be completed by the mniport driver.
                    308: // The information is used to setup the device, as weel as providing
                    309: // information to the port driver so it can perform some of the requests on
                    310: // behalf of the miniport driver.
                    311: //
                    312: 
                    313: typedef struct _VIDEO_PORT_CONFIG_INFO {
                    314: 
                    315:     //
                    316:     // Specifies the length of the PVIDEO_PORT_CONFIG_INFO structure as
                    317:     // returned by sizeof(). Since this structure may grow in later
                    318:     // releases, the miniport driver should check that the length of the
                    319:     // structure is greater than or equal to the length it expects (since
                    320:     // it is guaranteed that defined fields will not change).
                    321:     //
                    322:     // This field is always initialized by the port driver.
                    323:     //
                    324: 
                    325:     ULONG Length;
                    326: 
                    327:     //
                    328:     // Specifies which IO bus is tp be scanned. This field is used as a
                    329:     // parameter to some VideoPortXXX calls.
                    330:     //
                    331:     // This field is always initialized by the port driver.
                    332:     //
                    333: 
                    334:     ULONG SystemIoBusNumber;
                    335: 
                    336:     //
                    337:     // Specifies the type of bus being scanned. This field is equal to the
                    338:     // value being passed into VideoPortInitialize in the
                    339:     // VIDEO_HW_INITIALIZATION_DATA structure.
                    340:     //
                    341:     // This field is always initialized by the port driver.
                    342:     //
                    343: 
                    344:     INTERFACE_TYPE AdapterInterfaceType;
                    345: 
                    346:     //
                    347:     // Specifies the bus interrupt request level. This level corresponds to
                    348:     // the IRQL on ISA and MCA buses.
                    349:     // This value is only used if the device supports interrupts, which is
                    350:     // determined by the presence of an interrupt service routine in the
                    351:     // VIDEO_HW_INITIALIZATION_DATA structure.
                    352:     //
                    353:     // The preset default value for this field is zero. Otherwise, it is the
                    354:     // value found in the device configuration information.
                    355:     //
                    356: 
                    357:     ULONG BusInterruptLevel;
                    358: 
                    359:     //
                    360:     // Specifies the bus vector returned by the adapter. This is used for
                    361:     // systems which have IO buses that use interrupt vectors. For ISA, MCA
                    362:     // and EISA buses, this field is unused.
                    363:     //
                    364:     // The preset default value for this field is zero.
                    365:     //
                    366: 
                    367:     ULONG BusInterruptVector;
                    368: 
                    369:     //
                    370:     // Specifies whether this adapter uses latched or edge-triggered type
                    371:     // interrupts.
                    372:     //
                    373:     // This field is always initialized by the port driver.
                    374:     //
                    375: 
                    376:     KINTERRUPT_MODE InterruptMode;
                    377: 
                    378:     //
                    379:     // NOTE:
                    380:     // DMA information is not included since it is not yet supported by the
                    381:     // video port driver.
                    382:     //
                    383: 
                    384:     //
                    385:     // Specifies the number of emulator access entries that the adapter
                    386:     // uses. This value is the same as was passed into VideoPortInitialize()
                    387:     // in the VIDEO_HW_INITIALIZATION_DATA structure. It indicates the
                    388:     // number of array elements in the following field.
                    389:     //
                    390:     // This field can be reinitialized with the number of entries in the
                    391:     // EmulatorAccessEntries structure if the structure is statically
                    392:     // defined in the miniport driver. The EmulatorAccessEntries fields
                    393:     // should also be updated.
                    394:     //
                    395: 
                    396:     ULONG NumEmulatorAccessEntries;
                    397: 
                    398:     //
                    399:     // Supplies a pointer to an array of EMULATOR_ACCESS_ENTRY structures.
                    400:     // The number of elements in the array is indicated by the
                    401:     // NumEmulatorAccessEntries field. The driver should fill out each entry
                    402:     // for the adapter.
                    403:     //
                    404:     // The uninitialized value for the structure is NULL.
                    405:     // EmulatorAccessEntries will be NULL if NumEmulatorAccessEntries is
                    406:     // zero.
                    407:     //
                    408:     // A poiner to an array of emulator access entries can be passed back
                    409:     // if such a structure is defined statically in the miniport driver. The
                    410:     // NumEmulatorAccessEntries field should also be updated.
                    411:     //
                    412: 
                    413:     PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
                    414: 
                    415:     //
                    416:     // This is a context values that is passed with each call to the
                    417:     // emulator/validator functions defined in the EmulatorAccessEntries
                    418:     // defined above.
                    419:     // This parameter should in general be a pointer to the miniports
                    420:     // device extension or other such storage location.
                    421:     //
                    422:     // This pointer will allow the miniport to save some state temporarily
                    423:     // to allow for the batching of IO requests.
                    424:     //
                    425: 
                    426:     ULONG EmulatorAccessEntriesContext;
                    427: 
                    428:     //
                    429:     // Physical address of the video memory that must be mapped into a VDM's
                    430:     // address space for proper BIOS support
                    431:     //
                    432: 
                    433:     PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
                    434: 
                    435:     //
                    436:     // Length of the video memory that must be mapped into a VDM's addres
                    437:     // space for proper BIOS support.
                    438:     //
                    439: 
                    440:     ULONG VdmPhysicalVideoMemoryLength;
                    441: 
                    442:     //
                    443:     // Determines the minimum size required to store the hardware state
                    444:     // information returned by IOCTL_VIDEO_SAVE_HARDWARE_STATE.
                    445:     //
                    446:     // The uninitialized value for this field is zero.
                    447:     //
                    448:     // If the field is left to zero, SAVE_HARDWARE_STATE will return an
                    449:     // ERROR_INVALID_FUNCTION status code.
                    450:     //
                    451: 
                    452:     ULONG HardwareStateSize;
                    453: 
                    454: } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
                    455: 
                    456: 
                    457: //
                    458: // Video Adapter Dependent Routines.
                    459: //
                    460: 
                    461: typedef
                    462: VP_STATUS
                    463: (*PVIDEO_HW_FIND_ADAPTER) (
                    464:     PVOID HwDeviceExtension,
                    465:     PVOID HwContext,
                    466:     PWSTR ArgumentString,
                    467:     PVIDEO_PORT_CONFIG_INFO ConfigInfo,
                    468:     PUCHAR Again
                    469:     );
                    470: 
                    471: typedef
                    472: BOOLEAN
                    473: (*PVIDEO_HW_INITIALIZE) (
                    474:     PVOID HwDeviceExtension
                    475:     );
                    476: 
                    477: typedef
                    478: BOOLEAN
                    479: (*PVIDEO_HW_INTERRUPT) (
                    480:     PVOID HwDeviceExtension
                    481:     );
                    482: 
                    483: typedef
                    484: BOOLEAN
                    485: (*PVIDEO_HW_START_IO) (
                    486:     PVOID HwDeviceExtension,
                    487:     PVIDEO_REQUEST_PACKET RequestPacket
                    488:     );
                    489: 
                    490: 
                    491: //
                    492: // Structure passed by the miniport entry point to the video port
                    493: // initialization routine.
                    494: //
                    495: 
                    496: typedef struct _VIDEO_HW_INITIALIZATION_DATA {
                    497: 
                    498:     //
                    499:     // Supplies the size of the structure in bytes as determined by sizeof().
                    500:     //
                    501: 
                    502:     ULONG HwInitDataSize;
                    503: 
                    504:     //
                    505:     // Indicates the bus type the adapter works with, such as Eisa, Isa, MCA.
                    506:     //
                    507: 
                    508:     INTERFACE_TYPE AdapterInterfaceType;
                    509: 
                    510:     //
                    511:     // Supplies a pointer to the miniport driver's find adapter routine.
                    512:     //
                    513: 
                    514:     PVIDEO_HW_FIND_ADAPTER HwFindAdapter;
                    515: 
                    516:     //
                    517:     // Supplies a pointer to the miniport driver's initialization routine.
                    518:     //
                    519: 
                    520:     PVIDEO_HW_INITIALIZE HwInitialize;
                    521: 
                    522:     //
                    523:     // Supplies a pointer to the miniport driver's interrupt service routine.
                    524:     //
                    525: 
                    526:     PVIDEO_HW_INTERRUPT HwInterrupt;
                    527: 
                    528:     //
                    529:     // Supplies a pointer to the miniport driver's start io routine.
                    530:     //
                    531: 
                    532:     PVIDEO_HW_START_IO HwStartIO;
                    533: 
                    534:     //
                    535:     // Supplies the size in bytes required for the miniport driver's private
                    536:     // device extension. This storage is used by the miniport driver to hold
                    537:     // per-adapter information. A pointer to this storage is provided with
                    538:     // every call made to the miniport driver. This data storage is
                    539:     // initialized to zero by the port driver.
                    540:     //
                    541: 
                    542:     ULONG HwDeviceExtensionSize;
                    543: 
                    544:     //
                    545:     // Supplies the number with which device numbering should be started.
                    546:     // The device numbering is used to determine which \DeviceX entry under
                    547:     // the \Parameters section in the registry should be used for parameters
                    548:     // to the miniport driver.
                    549:     // The number is *automatically* incremented when the miniport is called
                    550:     // back in it's FindAdapter routine due to an appropriate _Again_
                    551:     // parameter.
                    552:     //
                    553: 
                    554:     ULONG StartingDeviceNumber;
                    555: 
                    556: } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
                    557: 
                    558: 
                    559: //
                    560: // Port driver routines called by miniport driver
                    561: //
                    562: 
                    563: ULONG
                    564: VideoPortCompareMemory(
                    565:     PVOID Source1,
                    566:     PVOID Source2,
                    567:     ULONG Length
                    568:     );
                    569: 
                    570: VOID
                    571: VideoPortDebugPrint(
                    572:     ULONG DebugPrintLevel,
                    573:     PCHAR DebugMessage,
                    574:     ...
                    575:     );
                    576: 
                    577: VP_STATUS
                    578: VideoPortDisableInterrupt(
                    579:     PVOID HwDeviceExtension
                    580:     );
                    581: 
                    582: VP_STATUS
                    583: VideoPortEnableInterrupt(
                    584:     PVOID HwDeviceExtension
                    585:     );
                    586: 
                    587: VOID
                    588: VideoPortFreeDeviceBase(
                    589:     PVOID HwDeviceExtension,
                    590:     PVOID MappedAddress
                    591:     );
                    592: 
                    593: PVOID
                    594: VideoPortGetDeviceBase(
                    595:     PVOID HwDeviceExtension,
                    596:     PHYSICAL_ADDRESS IoAddress,
                    597:     ULONG NumberOfUchars,
                    598:     UCHAR InIoSpace
                    599:     );
                    600: 
                    601: typedef
                    602: VP_STATUS
                    603: (*PMINIPORT_QUERY_DEVICE_ROUTINE)(
                    604:     PVOID HwDeviceExtension,
                    605:     PVOID Context,
                    606:     VIDEO_DEVICE_DATA_TYPE DeviceDataType,
                    607:     PVOID Identifier,
                    608:     ULONG IdentiferLength,
                    609:     PVOID ConfigurationData,
                    610:     ULONG ConfigurationDataLength,
                    611:     PVOID ComponentInformation,
                    612:     ULONG ComponentInformationLength
                    613:     );
                    614: 
                    615: VP_STATUS
                    616: VideoPortGetDeviceData(
                    617:     PVOID HwDeviceExtension,
                    618:     VIDEO_DEVICE_DATA_TYPE DeviceDataType,
                    619:     PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine,
                    620:     PVOID Context
                    621:     );
                    622: 
                    623: typedef
                    624: VP_STATUS
                    625: (*PMINIPORT_GET_REGISTRY_ROUTINE)(
                    626:     PVOID HwDeviceExtension,
                    627:     PVOID Context,
                    628:     PWSTR ValueName,
                    629:     PVOID ValueData,
                    630:     ULONG ValueLength
                    631:     );
                    632: 
                    633: VP_STATUS
                    634: VideoPortGetRegistryParameters(
                    635:     PVOID HwDeviceExtension,
                    636:     PWSTR ParamterName,
                    637:     UCHAR IsParameterFileName,
                    638:     PMINIPORT_GET_REGISTRY_ROUTINE GetRegistryRoutine,
                    639:     PVOID Context
                    640:     );
                    641: 
                    642: VP_STATUS
                    643: VideoPortInitialize(
                    644:     PVOID Argument1,
                    645:     PVOID Argument2,
                    646:     PVIDEO_HW_INITIALIZATION_DATA HwInitializationData,
                    647:     PVOID HwContext
                    648:     );
                    649: 
                    650: VP_STATUS
                    651: VideoPortInt10(
                    652:     PVOID HwDeviceExtension,
                    653:     PVIDEO_X86_BIOS_ARGUMENTS BiosArguments
                    654:     );
                    655: 
                    656: VOID
                    657: VideoPortLogError(
                    658:     IN PVOID HwDeviceExtension,
                    659:     IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL,
                    660:     IN VP_STATUS ErrorCode,
                    661:     IN ULONG UniqueId
                    662:     );
                    663: 
                    664: VP_STATUS
                    665: VideoPortMapMemory(
                    666:     PVOID HwDeviceExtension,
                    667:     PHYSICAL_ADDRESS PhysicalAddress,
                    668:     PULONG Length,
                    669:     PULONG InIoSpace,
                    670:     PVOID *VirtualAddress
                    671:     );
                    672: 
                    673: VOID
                    674: VideoPortMoveMemory(
                    675:     PVOID Destination,
                    676:     PVOID Source,
                    677:     ULONG Length
                    678:     );
                    679: 
                    680: UCHAR
                    681: VideoPortReadPortUchar(
                    682:     PUCHAR Port
                    683:     );
                    684: 
                    685: USHORT
                    686: VideoPortReadPortUshort(
                    687:     PUSHORT Port
                    688:     );
                    689: 
                    690: ULONG
                    691: VideoPortReadPortUlong(
                    692:     PULONG Port
                    693:     );
                    694: 
                    695: VOID
                    696: VideoPortReadPortBufferUchar(
                    697:     PUCHAR Port,
                    698:     PUCHAR Buffer,
                    699:     ULONG Count
                    700:     );
                    701: 
                    702: VOID
                    703: VideoPortReadPortBufferUshort(
                    704:     PUSHORT Port,
                    705:     PUSHORT Buffer,
                    706:     ULONG Count
                    707:     );
                    708: 
                    709: VOID
                    710: VideoPortReadPortBufferUlong(
                    711:     PULONG Port,
                    712:     PULONG Buffer,
                    713:     ULONG Count
                    714:     );
                    715: 
                    716: UCHAR
                    717: VideoPortReadRegisterUchar(
                    718:     PUCHAR Register
                    719:     );
                    720: 
                    721: USHORT
                    722: VideoPortReadRegisterUshort(
                    723:     PUSHORT Register
                    724:     );
                    725: 
                    726: ULONG
                    727: VideoPortReadRegisterUlong(
                    728:     PULONG Register
                    729:     );
                    730: 
                    731: VOID
                    732: VideoPortReadRegisterBufferUchar(
                    733:     PUCHAR Register,
                    734:     PUCHAR Buffer,
                    735:     ULONG Count
                    736:     );
                    737: 
                    738: VOID
                    739: VideoPortReadRegisterBufferUshort(
                    740:     PUSHORT Register,
                    741:     PUSHORT Buffer,
                    742:     ULONG Count
                    743:     );
                    744: 
                    745: VOID
                    746: VideoPortReadRegisterBufferUlong(
                    747:     PULONG Register,
                    748:     PULONG Buffer,
                    749:     ULONG Count
                    750:     );
                    751: 
                    752: BOOLEAN
                    753: VideoPortScanRom(
                    754:     PVOID HwDeviceExtension,
                    755:     PUCHAR RomBase,
                    756:     ULONG RomLength,
                    757:     PUCHAR String
                    758:     );
                    759: 
                    760: VP_STATUS
                    761: VideoPortSetRegistryParameters(
                    762:     PVOID HwDeviceExtension,
                    763:     PWSTR ValueName,
                    764:     PVOID ValueData,
                    765:     ULONG ValueLength
                    766:     );
                    767: 
                    768: VP_STATUS
                    769: VideoPortSetTrappedEmulatorPorts(
                    770:     PVOID HwDeviceExtension,
                    771:     ULONG NumAccessRanges,
                    772:     PVIDEO_ACCESS_RANGE AccessRange
                    773:     );
                    774: 
                    775: VOID
                    776: VideoPortStallExecution(
                    777:     ULONG Microseconds
                    778:     );
                    779: 
                    780: typedef
                    781: BOOLEAN
                    782: (*PMINIPORT_SYNCHRONIZE_ROUTINE)(
                    783:     PVOID Context
                    784:     );
                    785: 
                    786: BOOLEAN
                    787: VideoPortSynchronizeExecution(
                    788:     PVOID HwDeviceExtension,
                    789:     VIDEO_SYNCHRONIZE_PRIORITY Priority,
                    790:     PMINIPORT_SYNCHRONIZE_ROUTINE synchronizeRoutine,
                    791:     PVOID Context
                    792:     );
                    793: 
                    794: VP_STATUS
                    795: VideoPortUnmapMemory(
                    796:     PVOID HwDeviceExtension,
                    797:     PVOID VirtualAddress,
                    798:     ULONG InIoSpace
                    799:     );
                    800: 
                    801: VP_STATUS
                    802: VideoPortVerifyAccessRanges(
                    803:     PVOID HwDeviceExtension,
                    804:     ULONG NumAccessRanges,
                    805:     PVIDEO_ACCESS_RANGE AccessRanges
                    806:     );
                    807: 
                    808: VOID
                    809: VideoPortWritePortUchar(
                    810:     PUCHAR Port,
                    811:     UCHAR Value
                    812:     );
                    813: 
                    814: VOID
                    815: VideoPortWritePortUshort(
                    816:     PUSHORT Port,
                    817:     USHORT Value
                    818:     );
                    819: 
                    820: VOID
                    821: VideoPortWritePortUlong(
                    822:     PULONG Port,
                    823:     ULONG Value
                    824:     );
                    825: 
                    826: VOID
                    827: VideoPortWritePortBufferUchar(
                    828:     PUCHAR Port,
                    829:     PUCHAR Buffer,
                    830:     ULONG Count
                    831:     );
                    832: 
                    833: VOID
                    834: VideoPortWritePortBufferUshort(
                    835:     PUSHORT Port,
                    836:     PUSHORT Buffer,
                    837:     ULONG Count
                    838:     );
                    839: 
                    840: VOID
                    841: VideoPortWritePortBufferUlong(
                    842:     PULONG Port,
                    843:     PULONG Buffer,
                    844:     ULONG Count
                    845:     );
                    846: 
                    847: VOID
                    848: VideoPortWriteRegisterUchar(
                    849:     PUCHAR Register,
                    850:     UCHAR Value
                    851:     );
                    852: 
                    853: VOID
                    854: VideoPortWriteRegisterUshort(
                    855:     PUSHORT Register,
                    856:     USHORT Value
                    857:     );
                    858: 
                    859: VOID
                    860: VideoPortWriteRegisterUlong(
                    861:     PULONG Register,
                    862:     ULONG Value
                    863:     );
                    864: 
                    865: VOID
                    866: VideoPortWriteRegisterBufferUchar(
                    867:     PUCHAR Register,
                    868:     PUCHAR Buffer,
                    869:     ULONG Count
                    870:     );
                    871: 
                    872: VOID
                    873: VideoPortWriteRegisterBufferUshort(
                    874:     PUSHORT Register,
                    875:     PUSHORT Buffer,
                    876:     ULONG Count
                    877:     );
                    878: 
                    879: VOID
                    880: VideoPortWriteRegisterBufferUlong(
                    881:     PULONG Register,
                    882:     PULONG Buffer,
                    883:     ULONG Count
                    884:     );
                    885: 
                    886: VOID
                    887: VideoPortZeroMemory(
                    888:     PVOID Destination,
                    889:     ULONG Length
                    890:     );

unix.superglobalmegacorp.com

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