вопрос по CTW0

Тема в разделе "LANGS.C", создана пользователем spider, 30 авг 2007.

  1. spider

    spider Spider

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    35
    в асмовских примерах дровищи :) юзается макроопределение типа строки CTW0
    никак не могу подобрать такой же тип в Си

    Пробовал

    UNICODE_STRING g_wszStringData;
    RtlInitUnicodeString(&g_wszStringData,L"string\n");

    Такое откровенное "Кю" получается :)

    какой тип надо использовать ?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    spider
    Код (Text):
    1. LPWSTR pwsz = L"...";
    2. LPCWSTR pcwsz = L"...";
    т.е. производные от wchar_t *.
     
  3. spider

    spider Spider

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    35
    то же самое "Кю"

    OBJECT_ATTRIBUTES oa1;
    NTSTATUS status1;
    HANDLE hKey="";

    UNICODE_STRING g_usMachineKeyName;
    RtlInitUnicodeString(&g_usMachineKeyName,L"\\Registry\\Machine\\Software\\CoolApp");
    UNICODE_STRING g_usValueName;
    RtlInitUnicodeString(&g_usValueName,L"SomeData");

    LPCWSTR g_wszStringData=L"Test string";

    InitializeObjectAttributes(&oa1,&g_usMachineKeyName,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL);
    status1 = ZwOpenKey(&hKey, KEY_SET_VALUE, &oa1);
    ZwSetValueKey (hKey, &g_usValueName, 0, REG_SZ, &g_wszStringData, sizeof g_wszStringData);
    ZwClose(hKey);
    Де я набокопорил?
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    spider
    Де я набокопорил?
    Например - sizeof g_wszStringData == 4 на ia32, а надо количество _байтов_ включая завершающий ноль. Если хочешь использовать sizeof, то замени LPCWSTR g_wszStringData=L"Test string"; на wchar_t g_wszStringData[] = L"Test string";.
     
  5. spider

    spider Spider

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    35
    Все понял! Все пашет! Спасибо! +1 )