NTSTATUS IO_DRIVER_ENTRY(npfs)( IN IO_DRIVER_HANDLE DriverHandle, IN ULONG InterfaceVersion ) { NTSTATUS ntStatus = 0; int EE = 0; IO_DEVICE_HANDLE deviceHandle = NULL; if (IO_DRIVER_ENTRY_INTERFACE_VERSION != InterfaceVersion) { ntStatus = STATUS_UNSUCCESSFUL; GOTO_CLEANUP_ON_STATUS_EE(ntStatus, EE); } pthread_rwlock_init(&gServerLock, NULL); ntStatus = IoDriverInitialize(DriverHandle, NULL, NpfsDriverShutdown, NpfsDriverDispatch); GOTO_CLEANUP_ON_STATUS_EE(ntStatus, EE); ntStatus = IoDeviceCreate(&deviceHandle, DriverHandle, "npfs", NULL); GOTO_CLEANUP_ON_STATUS_EE(ntStatus, EE); cleanup: IO_LOG_ENTER_LEAVE_STATUS_EE(ntStatus, EE); return ntStatus; }
NTSTATUS IO_DRIVER_ENTRY(rdr)( IN IO_DRIVER_HANDLE DriverHandle, IN ULONG InterfaceVersion ) { NTSTATUS ntStatus = 0; if (IO_DRIVER_ENTRY_INTERFACE_VERSION != InterfaceVersion) { ntStatus = STATUS_UNSUCCESSFUL; BAIL_ON_NT_STATUS(ntStatus); } ntStatus = IoDriverInitialize(DriverHandle, NULL, RdrDriverShutdown, RdrDriverDispatch); BAIL_ON_NT_STATUS(ntStatus); ntStatus = IoDeviceCreate(&gDeviceHandle, DriverHandle, "rdr", NULL); BAIL_ON_NT_STATUS(ntStatus); ntStatus = RdrInitialize(); BAIL_ON_NT_STATUS(ntStatus); error: return ntStatus; }
NTSTATUS IO_DRIVER_ENTRY(srv)( IN IO_DRIVER_HANDLE hDriver, IN ULONG ulInterfaceVersion ) { NTSTATUS ntStatus = 0; PCSTR pszName = "srv"; PVOID pDeviceContext = NULL; IO_DEVICE_HANDLE hDevice = NULL; if (IO_DRIVER_ENTRY_INTERFACE_VERSION != ulInterfaceVersion) { ntStatus = STATUS_UNSUCCESSFUL; BAIL_ON_NT_STATUS(ntStatus); } ntStatus = IoDriverInitialize( hDriver, NULL, SrvDriverShutdown, SrvDriverDispatch); BAIL_ON_NT_STATUS(ntStatus); ntStatus = IoDeviceCreate( &hDevice, hDriver, pszName, pDeviceContext); BAIL_ON_NT_STATUS(ntStatus); ntStatus = SrvInitialize(hDevice); BAIL_ON_NT_STATUS(ntStatus); ntStatus = IoDriverRegisterRefreshCallback( hDriver, SrvDriverRefresh); BAIL_ON_NT_STATUS(ntStatus); hDevice = NULL; cleanup: return ntStatus; error: if (hDevice) { IoDeviceDelete(&hDevice); } goto cleanup; }
NTSTATUS DriverEntry( IN IO_DRIVER_HANDLE DriverHandle, IN ULONG InterfaceVersion ) { NTSTATUS status = 0; int EE = 0; IO_DEVICE_HANDLE deviceHandle = NULL; PIT_DRIVER_STATE pState = NULL; if (IO_DRIVER_ENTRY_INTERFACE_VERSION != InterfaceVersion) { status = STATUS_UNSUCCESSFUL; GOTO_CLEANUP_EE(EE); } status = ItpCreateDriverState(&pState); GOTO_CLEANUP_ON_STATUS_EE(status, EE); status = IoDriverInitialize(DriverHandle, pState, ItDriverShutdown, ItDriverDispatch); GOTO_CLEANUP_ON_STATUS_EE(status, EE); status = IoDeviceCreate(&deviceHandle, DriverHandle, IOTEST_DEVICE_NAME, NULL); GOTO_CLEANUP_ON_STATUS_EE(status, EE); LWIO_ASSERT(ItTestStartup(IOTEST_DEVICE_PATH) == STATUS_SUCCESS); LWIO_ASSERT(ItTestStartup(IOTEST_PATH_ALLOW) == STATUS_SUCCESS); cleanup: if (status) { // Shutdown is called only if initialization succeeds. ItpDestroyDriverState(&pState); } LOG_LEAVE_IF_STATUS_EE(status, EE); return status; }