Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

400 lines
5.5 KiB

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
xxconout.c
Abstract:
This module implements a stubbed MIPS console out driver that simply
uses debug print to do its output.
Author:
David N. Cutler (davec) 28-Aug-1991
Environment:
Kernel mode.
Revision History:
--*/
//#include "bldr.h"
#include "bootlib.h"
#include "firmware.h"
#include "string.h"
//
// Define prototypes for all routines used by this module.
//
ARC_STATUS
ConsoleOutClose (
IN ULONG FileId
);
ARC_STATUS
ConsoleOutMount (
IN PCHAR MountPath,
IN MOUNT_OPERATION Operation
);
ARC_STATUS
ConsoleOutOpen (
IN PCHAR OpenPath,
IN OPEN_MODE OpenMode,
OUT PULONG FileId
);
ARC_STATUS
ConsoleOutRead (
IN ULONG FileId,
IN PVOID Buffer,
IN ULONG Length,
OUT PULONG Count
);
ARC_STATUS
ConsoleOutGetReadStatus (
IN ULONG FileId
);
ARC_STATUS
ConsoleOutSeek (
IN ULONG FileId,
IN PLARGE_INTEGER Offset,
IN SEEK_MODE SeekMode
);
ARC_STATUS
ConsoleOutWrite (
IN ULONG FileId,
IN PVOID Buffer,
IN ULONG Length,
OUT PULONG Count
);
//
// Define static data.
//
BL_DEVICE_ENTRY_TABLE ConsoleOutEntryTable;
ARC_STATUS
ConsoleOutClose (
IN ULONG FileId
)
/*++
Routine Description:
This function closes the file table entry specified by the file id.
Arguments:
FileId - Supplies the file table index.
Return Value:
ESUCCESS is returned
--*/
{
BlFileTable[FileId].Flags.Open = 0;
return ESUCCESS;
}
ARC_STATUS
ConsoleOutMount (
IN PCHAR MountPath,
IN MOUNT_OPERATION Operation
)
/*++
Routine Description:
Arguments:
Return Value:
--*/
{
return ESUCCESS;
}
ARC_STATUS
ConsoleOutOpen (
IN PCHAR OpenPath,
IN OPEN_MODE OpenMode,
OUT PULONG FileId
)
/*++
Routine Description:
Arguments:
Return Value:
--*/
{
return ESUCCESS;
}
ARC_STATUS
ConsoleOutRead (
IN ULONG FileId,
IN PVOID Buffer,
IN ULONG Length,
OUT PULONG Count
)
/*++
Routine Description:
This function is invalid for the console and returns an error.
Arguments:
FileId - Supplies the file table index.
Buffer - Supplies a pointer to the buffer that receives the data
read.
Length - Supplies the number of bytes to be read.
Count - Supplies a pointer to a variable that receives the number of
bytes actually read.
Return Value:
ENODEV is returned.
--*/
{
return ENODEV;
}
ARC_STATUS
ConsoleOutGetReadStatus (
IN ULONG FileId
)
/*++
Routine Description:
Arguments:
Return Value:
--*/
{
return ESUCCESS;
}
ARC_STATUS
ConsoleOutSeek (
IN ULONG FileId,
IN PLARGE_INTEGER Offset,
IN SEEK_MODE SeekMode
)
/*++
Routine Description:
This function sets the device position to the specified offset for
the specified file id.
Arguments:
FileId - Supplies the file table index.
Offset - Supplies to new device position.
SeekMode - Supplies the mode for the position.
Return Value:
ESUCCESS is returned.
--*/
{
return ESUCCESS;
}
ARC_STATUS
ConsoleOutWrite (
IN ULONG FileId,
IN PVOID Buffer,
IN ULONG Length,
OUT PULONG Count
)
/*++
Routine Description:
This function write information to the console ConsoleOut device.
Arguments:
FileId - Supplies the file table index.
Buffer - Supplies a pointer to the buffer that receives the data
read.
Length - Supplies the number of bytes to be read.
Count - Supplies a pointer to a variable that receives the number of
bytes actually read.
Return Value:
ESUCCESS is returne as the function value.
--*/
{
CHAR LocalBuffer[512];
//
// Copy the string to the local buffer so it can be zero terminated.
//
strncpy(&LocalBuffer[0], (PCHAR)Buffer, Length);
LocalBuffer[Length] = 0;
//
// Output the string using debug print.
//
DbgPrint("%s", &LocalBuffer[0]);
return ESUCCESS;
}
NTSTATUS
ConsoleOutBootInitialize(
)
/*++
Routine Description:
This routine is invoked to initialize the console output dirver.
Arguments:
None.
Return Value:
None.
--*/
{
return STATUS_SUCCESS;
}
NTSTATUS
ConsoleOutBootClose(
)
/*++
Routine Description:
This routine closes the console output driver.
Arguments:
None.
Return Value:
Normal, successful completion status.
--*/
{
return STATUS_SUCCESS;
}
NTSTATUS
ConsoleOutBootOpen (
IN ULONG FileId
)
/*++
Routine Description:
This routine opens the console driver and initializes the device entry
table in the specified file table entry.
Arguments:
FileId - Supplies the file id for the file table entry.
Return Value:
STATUS_SUCCESS.
--*/
{
//
// Initialize the ConsoleOut disk device entry table.
//
ConsoleOutEntryTable.Close = ConsoleOutClose;
ConsoleOutEntryTable.Mount = ConsoleOutMount;
ConsoleOutEntryTable.Open = ConsoleOutOpen;
ConsoleOutEntryTable.Read = ConsoleOutRead;
ConsoleOutEntryTable.GetReadStatus = ConsoleOutGetReadStatus;
ConsoleOutEntryTable.Seek = ConsoleOutSeek;
ConsoleOutEntryTable.Write = ConsoleOutWrite;
//
// Initialize the file table entry for the specified file id.
//
BlFileTable[FileId].Flags.Open = 1;
BlFileTable[FileId].Flags.Write = 1;
BlFileTable[FileId].DeviceId = 0;
BlFileTable[FileId].Position.LowPart = 0;
BlFileTable[FileId].Position.HighPart = 0;
BlFileTable[FileId].DeviceEntryTable = &ConsoleOutEntryTable;
return STATUS_SUCCESS;
}