main.c
来自「这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统」· C语言 代码 · 共 133 行
C
133 行
/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Kernel Streaming * FILE: drivers/wdm/audio/sysaudio/main.c * PURPOSE: System Audio graph builder * PROGRAMMER: Andrew Greenwood * * HISTORY: * 8 Jul 07 Started basic implementation */#include <ntddk.h>/* #include <ks.h> */#include <debug.h>NTSTATUSNTAPISysAudio_Create( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){ DPRINT("SysAudio_Create called\n"); /* TODO */ /* Complete the request */ Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS;}VOIDNTAPISysAudio_Unload(IN PDRIVER_OBJECT DriverObject){ PDEVICE_OBJECT DeviceObject; DPRINT("SysAudio_Unload called\n"); /* Get DO and DE */ DeviceObject = DriverObject->DeviceObject;/* DeviceExtension = DeviceObject->DeviceExtension;*/ /* Delete the object */ IoDeleteDevice(DeviceObject);}#if 0VOIDNTAPISysAudio_StartIo( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){ /* TODO */ DPRINT("SysAudio_StartIo called\n"); /* Complete the request and start the next packet */ Irp->IoStatus.Status = Status; Irp->IoStatus.Information = 0; IoStartNextPacket(DeviceObject, TRUE); IoCompleteRequest(Irp, IO_NO_INCREMENT);}#endifNTSTATUS NTAPISysAudio_AddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject){ NTSTATUS status; UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\sysaudio"); UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"\\DosDevices\\sysaudio"); PDEVICE_OBJECT DeviceObject; DPRINT("SysAudio_AddDevice called\n"); status = IoCreateDevice(DriverObject, 0, /* Extension size */ &DeviceName, FILE_DEVICE_SOUND, /* is this right? */ 0, /* Characteristics */ FALSE, &DeviceObject); if ( ! NT_SUCCESS(status) ) { DPRINT("Failed to create \\Device\\sysaudio !\n"); return status; } status = IoCreateSymbolicLink(&SymlinkName, &DeviceName); if ( ! NT_SUCCESS(status) ) { IoDeleteDevice(DeviceObject); DPRINT("Failed to create \\DosDevices\\sysaudio symlink!\n"); return status; } DPRINT("Device created successfully\n"); return STATUS_SUCCESS;}NTSTATUS NTAPIDriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){ DPRINT("System audio graph builder (sysaudio) started\n"); DriverObject->DriverExtension->AddDevice = SysAudio_AddDevice; DriverObject->MajorFunction[IRP_MJ_CREATE] = SysAudio_Create;/* We'd want to handle this but does KS need to know? *//* DriverObject->MajorFunction[IRP_MJ_PNP] = KsDefaultDispatchPnp;*//* We don't want to handle this though - pass to KS *//* DriverObject->MajorFunction[IRP_MJ_POWER] = KsDefaultDispatchPower;*/ DriverObject->DriverUnload = SysAudio_Unload;/* DriverObject->DriverStartIo = SysAudio_StartIo; */ /* Hmm, shouldn't KS.SYS be involved in some way? */ return STATUS_SUCCESS;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?