|
|
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: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.