#include "lib.h"
#include <reactos/ddk/obfuncs.h>
#include <syslog.h>
+#include "captive/macros.h"
struct captive_options *captive_options;
void *_local_unwind2_addr;
-/* Acceleration hack for ntoskrnl/dbg/print.c/DbgPrint() */
-gboolean captive_get_debug_messages(void)
-{
- g_return_val_if_fail(captive_options!=NULL,TRUE);
-
- return captive_options->debug_messages;
-}
-
+gboolean captive_debug_messages_disabled=FALSE;
static gboolean captive_w32_init(void)
{
{
g_return_if_fail(captive_options!=NULL);
+ /* FIXME: Fix sharing of different 'debug_messages' for various sandboxes. */
+ captive_debug_messages_disabled=!captive_options->debug_messages;
+
+ /* FIXME: Fix sharing of different 'debug_messages' for various sandboxes. */
if (!captive_options->debug_messages) {
/* FIXME: Save handler_id and destroy it in captive_vfs_close(). */
g_log_set_handler(
/* wanted: * IoCreateFile()->ObCreateObject(,,,IoFileObjectType)->
* ->(IoFileObjectType->Create==IopCreateFile)()->IoMountVolume()
*/
+ CAPTIVE_MEMZERO(&dir_IoStatusBlock); /* FIXME: Try to pre-clear it - uninitialized otherwise? */
+ dir_IoStatusBlock.Information=FILE_OPENED; /* FIXME: Try to pre-set it - uninitialized otherwise? */
err=IoCreateFile(
&dir_Handle, /* FileHandle */
GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE|0x80, /* DesiredAccess; 0xC0100080=GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE|0x80 */
NULL, /* ExtraCreateParameters */
0); /* Options */
g_free(dir_ObjectAttributes.ObjectName); /* left from captive_gnomevfs_uri_parent_init() */
- g_return_if_fail(NT_SUCCESS(err)==NT_SUCCESS(dir_IoStatusBlock.Status));
g_return_if_fail(NT_SUCCESS(err));
+ g_return_if_fail(NT_SUCCESS(err)==NT_SUCCESS(dir_IoStatusBlock.Status));
g_return_if_fail(dir_IoStatusBlock.Information==FILE_OPENED);
Status=ObReferenceObjectByHandle(dir_Handle,FILE_LIST_DIRECTORY,IoFileObjectType,UserMode,(PVOID *)&FileObject,NULL);
KeWaitForSingleObject(&FileObject->Event,Executive,KernelMode,FALSE,NULL);
Status=IoStatusBlock.Status;
}
- g_assert(NT_SUCCESS(Status));
+ g_assert(NT_SUCCESS(Status)
+ || (Status==STATUS_MEDIA_WRITE_PROTECTED && captive_options->rwmode==CAPTIVE_OPTION_RWMODE_RO));
}
ObDereferenceObject(FileObject);