После вызова
::StartService( _hService, 0, NULL );
GetLastError() == ERROR_SERVICE_DISABLED :
The service cannot be started, either because it is disabled or because it has no enabled 
devices associated with it.DebugView перехватывает вот это:
*** Shadow ***
DriverEntry: RegistryPath = \REGISTRY\MACHINE\SYSTEM\ControlSet001\Services\Shadow
*** Shadow ***
DriverUnload: pDriverObject = 8186F7F0
Т.е. в AddDevice не попадаем, в которой создание DeviceObject (видимо, поэтому сервис и не запускается...).
Вызывается ли AddDevice только при подключении какого-то реального устройства? Если так, то что делать, если мне нужен функциональный драйвер, который не связан ни с какой железкой и предполагается абсолютно самостоятельным, т.е. он один в своём стеке драйверов (надо ли вообще его цеплять с помощью IoAttachDeviceToDeviceStack)?
NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath )
{
	PDRIVER_DISPATCH * majorFunction;
 
	DBG_PRINT(( "DriverEntry: RegistryPath = %ws\n", pRegistryPath->Buffer ));
 
	// Specifying entry-points:
	pDriverObject->DriverExtension->AddDevice = ShadowAddDevice;
	pDriverObject->DriverUnload = ShadowDriverUnload;
 
	majorFunction = pDriverObject->MajorFunction;
	majorFunction[ IRP_MJ_CREATE        ] = ShadowDispatchCreate;
	majorFunction[ IRP_MJ_CLOSE         ] = ShadowDispatchClose;
	majorFunction[ IRP_MJ_PNP           ] = ShadowDispatchPnp;
//	majorFunction[ IRP_MJ_FLUSH_BUFFERS ] = ShadowDispatchFlushBuffers;	// ! make NULL if fails
//	majorFunction[ IRP_MJ_SHUTDOWN      ] = ShadowDispatchShutdown;		// ! make NULL if fails
 
	return ( STATUS_SUCCESS );
}
 
 
NTSTATUS ShadowAddDevice( IN PDRIVER_OBJECT pDriverObject, IN PDEVICE_OBJECT pPhysicalDeviceObject )
{
	NTSTATUS status;
	PDEVICE_OBJECT pDeviceObject;
	PDEVICE_EXTENSION pDeviceExtension;
 
	PAGED_CODE();
 
	DBG_PRINT(( "AddDevice: pDriverObject = %X\tpPhysicalDeviceObject = %X", pDriverObject, pPhysicalDeviceObject ));
 
	status = IoCreateDevice
	(
		pDriverObject,
		sizeof( DEVICE_EXTENSION ),
		NULL,
		FILE_DEVICE_UNKNOWN,
		FILE_DEVICE_SECURE_OPEN,
		FALSE,
		&pDeviceObject
	);
 
	if ( !NT_SUCCESS( status ) )
	{
		DBG_PRINT(( "IoCreateDevice failed:\t%d\n", status ));
		return ( status );
	}
 
	pDeviceExtension = ( PDEVICE_EXTENSION )pDeviceObject->DeviceExtension;
	pDeviceExtension->pDeviceObject = pDeviceObject;
 
	pDeviceExtension->pUnderlying =
		IoAttachDeviceToDeviceStack( pDeviceObject, pPhysicalDeviceObject );
 
	if ( pDeviceExtension->pUnderlying == NULL )
	{
		status = STATUS_NO_SUCH_DEVICE;
		DBG_PRINT(( "IoAttachDeviceToDeviceStack failed:\t%d\n", status ));
		IoDeleteDevice( pDeviceObject );
        return ( status );
    }
 
	// ? Initialize Kernel dispatcher objects here...
	// ? Initialize Spin-blocks here...
 
	return ( status );
}
 
 
VOID ShadowDriverUnload( IN PDRIVER_OBJECT pDriverObject )
{
	PAGED_CODE();
 
	DBG_PRINT(( "DriverUnload: pDriverObject = %X", pDriverObject ));
}