예제 #1
0
MU_TEST(LwPrintf, LwPrintfString_unicode_string)
{
    char * szFormat = "%wZ";
    char szOutput[10] = {0};
    char szExpectedOutput[] = {'U','S',0};
    size_t scchWrote = 0;
    UNICODE_STRING us;
    int error = 0;

    MU_ASSERT(0 == LwRtlUnicodeStringAllocateFromCString(&us, "US"));

    error = LwPrintfString(
        szOutput,
        sizeof(szOutput)/sizeof(szOutput[0]),
        &scchWrote,
        szFormat,
        &us);
    MU_ASSERT(!strcmp(szOutput, szExpectedOutput));
    MU_ASSERT(error == 0);
    MU_ASSERT(scchWrote == us.Length/2);
}
예제 #2
0
MU_TEST(LwPrintf, LwPrintfW16StringW_unicode_string)
{
    wchar_t* wszFormat = L"%wZ";
    wchar16_t wszOutput[10] = {0};
    wchar16_t wszExpectedOutput[] = {'U','S', 0};
    size_t scchWrote = 0;
    UNICODE_STRING us;
    int error = 0;

    MU_ASSERT(0 == LwRtlUnicodeStringAllocateFromCString(&us, "US"));

    error = LwPrintfW16StringW(
        wszOutput,
        sizeof(wszOutput)/sizeof(wszOutput[0]),
        &scchWrote,
        wszFormat,
        &us);

    MU_ASSERT(!wc16scmp(wszOutput, wszExpectedOutput));
    MU_ASSERT(error == 0);
    MU_ASSERT(scchWrote == us.Length/2);
}
예제 #3
0
NTSTATUS
LwioRemoteOpenFile(
    IN  PCSTR           pszFileName,
    IN  ULONG           ulDesiredAccess,
    IN  ULONG           ulShareAccess,
    IN  ULONG           ulCreateDisposition,
    IN  ULONG           ulCreateOptions,
    OUT PIO_FILE_HANDLE phFile
    )
{
    NTSTATUS status = STATUS_SUCCESS;
    IO_FILE_NAME filename = {0};
    IO_FILE_HANDLE handle = NULL;
    IO_STATUS_BLOCK ioStatus ;
    PSTR pszRemoteFileName = NULL;

    BAIL_ON_NULL_POINTER(pszFileName);

    status = LwRtlCStringAllocatePrintf(
                    &pszRemoteFileName,
                    "/rdr%s",
                    !strncmp(pszFileName, "//", sizeof("//")-1) ? pszFileName+1 : pszFileName);
    BAIL_ON_NT_STATUS(status);

    status = LwRtlUnicodeStringAllocateFromCString(
        &filename.Name,
        pszRemoteFileName);
    BAIL_ON_NT_STATUS(status);

    status = LwNtCreateFile(
                &handle,                 /* File handle */
                NULL,                    /* Async control block */
                &ioStatus,               /* IO status block */
                &filename,               /* Filename */
                NULL,                    /* Security descriptor */
                NULL,                    /* Security QOS */
                ulDesiredAccess,         /* Desired access mask */
                0,                       /* Allocation size */
                0,                       /* File attributes */
                ulShareAccess,           /* Share access */
                ulCreateDisposition,     /* Create disposition */
                ulCreateOptions,         /* Create options */
                NULL,                    /* EA buffer */
                0,                       /* EA length */
                NULL,                    /* ECP list */
                NULL);
    BAIL_ON_NT_STATUS(status);

    *phFile = handle;

cleanup:

    RTL_FREE(&pszRemoteFileName);

    return status;

error:

    *phFile = NULL;

    goto cleanup;
}