//+---------------------------------------------------------------------------- // // Copyright (C) 1992, Microsoft Corporation // // File: dfsinit.c // // Contents: Code to force dfs volume initialization and validation // // Classes: // // Functions: main // // History: March 24, 1994 Milans Created // //----------------------------------------------------------------------------- #include #include #include #include NTSTATUS DfsOpen( IN OUT PHANDLE DfsHandle, IN PUNICODE_STRING DfsName OPTIONAL); NTSTATUS DfsInitLocalPartitions(); //+---------------------------------------------------------------------------- // // Function: main // // Synopsis: // // Arguments: // // Returns: // //----------------------------------------------------------------------------- void _cdecl main( int argc, char *argv[]) { NTSTATUS Status; Status = DfsInitLocalPartitions(); } NTSTATUS DfsOpen( IN OUT PHANDLE DfsHandle, IN PUNICODE_STRING DfsName OPTIONAL ) { NTSTATUS status; OBJECT_ATTRIBUTES objectAttributes; IO_STATUS_BLOCK ioStatus; UNICODE_STRING LocalDfsName; RtlInitUnicodeString( &LocalDfsName, DFS_SERVER_NAME ); InitializeObjectAttributes( &objectAttributes, &LocalDfsName, OBJ_CASE_INSENSITIVE, NULL, NULL ); status = NtCreateFile( DfsHandle, SYNCHRONIZE | FILE_WRITE_DATA, &objectAttributes, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN_IF, FILE_CREATE_TREE_CONNECTION | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); if (NT_SUCCESS(status)) status = ioStatus.Status; return status; } NTSTATUS DfsInitLocalPartitions() { NTSTATUS status; HANDLE dfsHandle; IO_STATUS_BLOCK ioStatus; WCHAR wszBuffer[128]; status = DfsOpen(&dfsHandle, NULL); if(NT_SUCCESS(status)) { status = NtFsControlFile( dfsHandle, NULL, // Event, NULL, // ApcRoutine, NULL, // ApcContext, &ioStatus, FSCTL_DFS_INIT_LOCAL_PARTITIONS, NULL, 0, NULL, 0); NtClose( dfsHandle ); } return( status ); }