📄 1394vdev.c
字号:
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
1394vdev.c
--*/
#define _1394VDEV_C
#include "pch.h"
#undef _1394VDEV_C
#if DBG
unsigned char t1394VDevDebugLevel = TL_WARNING;
#endif
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS ntStatus = STATUS_SUCCESS;
ENTER("DriverEntry");
DriverObject->MajorFunction[IRP_MJ_CREATE] = t1394VDev_Create;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = t1394VDev_Close;
DriverObject->MajorFunction[IRP_MJ_PNP] = t1394VDev_Pnp;
DriverObject->MajorFunction[IRP_MJ_POWER] = t1394VDev_Power;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = t1394VDev_IoControl;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = t1394VDev_IoControl;
DriverObject->DriverUnload = t1394VDev_Unload;
DriverObject->DriverExtension->AddDevice = t1394VDev_PnpAddDevice;
EXIT("DriverEntry", ntStatus);
return(ntStatus);
} // DriverEntry
NTSTATUS
t1394VDev_Create(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
NTSTATUS ntStatus = STATUS_SUCCESS;
ENTER("t1394VDev_Create");
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
EXIT("t1394VDev_Create", ntStatus);
return(ntStatus);
} // t1394VDev_Create
NTSTATUS
t1394VDev_Close(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
NTSTATUS ntStatus = STATUS_SUCCESS;
ENTER("t1394VDev_Close");
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
EXIT("t1394VDev_Close", ntStatus);
return(ntStatus);
} // t1394VDev_Close
void
t1394VDev_Unload(
IN PDRIVER_OBJECT DriverObject
)
{
TRACE(TL_TRACE, ("UNLOAD 1394VDEV.SYS"));
} // t1394VDev_Unload
void
t1394VDev_CancelIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
KIRQL Irql;
PBUS_RESET_IRP BusResetIrp;
PDEVICE_EXTENSION deviceExtension;
ENTER("t1394VDev_CancelIrp");
deviceExtension = DeviceObject->DeviceExtension;
KeAcquireSpinLock(&deviceExtension->ResetSpinLock, &Irql);
BusResetIrp = (PBUS_RESET_IRP) deviceExtension->BusResetIrps.Flink;
TRACE(TL_TRACE, ("Irp = 0x%p\n", Irp));
while (BusResetIrp) {
TRACE(TL_TRACE, ("Cancelling BusResetIrp->Irp = 0x%p\n", BusResetIrp->Irp));
if (BusResetIrp->Irp == Irp) {
RemoveEntryList(&BusResetIrp->BusResetIrpList);
ExFreePool(BusResetIrp);
BusResetIrp = NULL;
break;
}
else if (BusResetIrp->BusResetIrpList.Flink == &deviceExtension->BusResetIrps) {
break;
}
else
BusResetIrp = (PBUS_RESET_IRP)BusResetIrp->BusResetIrpList.Flink;
}
KeReleaseSpinLock(&deviceExtension->ResetSpinLock, Irql);
IoReleaseCancelSpinLock(Irp->CancelIrql);
Irp->IoStatus.Status = STATUS_CANCELLED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
EXIT("t1394VDev_CancelIrp", STATUS_SUCCESS);
} // t1394VDev_CancelIrp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -