вопрос по CTW0

Discussion in 'LANGS.C' started by spider, Aug 30, 2007.

  1. spider

    spider Spider

    Blog Posts:
    0
    в асмовских примерах дровищи :) юзается макроопределение типа строки CTW0
    никак не могу подобрать такой же тип в Си

    Пробовал

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

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

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

    q_q New Member

    Blog Posts:
    0
    spider
    Code (Text):
    1. LPWSTR pwsz = L"...";
    2. LPCWSTR pcwsz = L"...";
    т.е. производные от wchar_t *.
     
  3. spider

    spider Spider

    Blog Posts:
    0
    то же самое "Кю"

    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

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

    spider Spider

    Blog Posts:
    0
    Все понял! Все пашет! Спасибо! +1 )